MogileFS::Backend: socket close on read & `make test` errors compiling Perlbal

Steven Shou steven.shou at
Fri Apr 27 20:01:40 UTC 2007

Hi all,

I'm running MogileFS 2.0.10 with Perlbal 1.56 and IO::AIO all from CPAN on 3 
test servers (as both trackers and mogstored) under linux 2.6.18 and perl 
5.8.8.  Whenever I compile Perlbal, I have to `make test` a few times in 
order for it to succeed. Below are some ramdom errors I got while doing 'make 

t/15-webserver...........NOK 6/15
#   Failed test 'Got not modified'
#   in t/15-webserver.t at line 70.
#          got: '200'
#     expected: '304'
t/15-webserver...........NOK 7/15
#   Failed test 'Shouldn't get a Content-Length header'
#   in t/15-webserver.t at line 71.
#          got: '12000'
#     expected: undef
# Looks like you failed 2 tests of 15.
        Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 6-7
        Failed 2/15 tests, 86.67% okay

t/45-buffereduploads.....ok 16/0
#   Failed test 'no_buffer_on_rate: no buffer reason'
#   in t/45-buffereduploads.t at line 203.
t/45-buffereduploads.....ok 24/0
#   Failed test 'no_buffer_on_time: no file'
#   in t/45-buffereduploads.t at line 219.
t/45-buffereduploads.....NOK 28/0
#   Failed test 'no_buffer_on_time: no buffer reason'
#   in t/45-buffereduploads.t at line 203.
# Looks like you failed 3 tests of 30.
        Test returned status 3 (wstat 768, 0x300)
DIED. FAILED tests 22, 28, 30
        Failed 3/30 tests, 90.00% okay

Eventually, the test will pass after a few tries.  I've also tried many older 
versions but same thing happens.  Just wondering if they're harmless.

Also after setting up everything, I ran the following tight loop of file 
insertion code to do some simple testing to see how mogilefs handles stuff.


    if(-e $_) {
        while(! $mogc->store_file($key, "test_class", $_) ) { }

The program dies after a few inserts with the follow error:

SOCK: cached = Sock_192.168.0.20:6001, REQ: create_open 
$VAR1 = undef;
Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/
site_perl/5.8.8/MogileFS/ line 174, <Sock_192.168.0.20:6001> line 
$VAR1 = undef;
MogileFS::Backend: socket closed on read at /usr/lib/perl5/site_perl/5.8.8/
MogileFS/ line 255

While the tracker shows following error:

Worker responded with id <undef> (line: [26680-24 -0.0000 OK 
dev1/0/000/005/0000005411.fid&fid=5411&devid_1=1&path_3=http://]), but expected id 26680-24, 
Child 26678 (queryworker) died: 0 (expected)
Job queryworker has only 1, wants 5, making 4.

If I put a `sleep 1` after the while block, then no errors.  I can use `eval` 
to prevent the program from dying and retry until success, but just wondering 
if this is normal and just a sign of limited resource or might this be tied 
to the Perlbal errors at the top?


More information about the mogilefs mailing list