Not enough checking in MogileFS::Client, chunked uploads not respecting the chunk size asked for.

dormando dormando at rydia.net
Thu Apr 10 21:26:06 UTC 2008


I believe it was set down that low (in a couple places! Perlbal, 
mogilefs...) because larger values were occasionally crashing perl for 
some people. Making it optional looks totally reasonable though.

I'll review/apply this if someone doesn't beat me to it. At a glance it 
looks fine but I like doing quick style/test checks ;)

-Dormando

Tomas Doran wrote:
> Hiya
> 
> I've found (what I think are) 2 problems in the Mogile client library.
> 
> 1) In the store_file method, there is a loop which reads segments of the
> file, and prints them to the file handle (which depending on which
> client backend you're using, does different things). The block size is
> fixed to 8192 bytes here, I've changed it to use the supplied
> readLineChunkSize param. 
> 
> We're doing chunked (range PUT, with ClientHTTPFile) uploads of some
> very big files, and this change makes a *massive* difference to the
> throughput that we see when we upload chunks of 4Mb in size, rather than
> 8k.
> 
> 2) In the same method - a the print on the filehandle can fail, and this
> is currently silently ignored. As we're doing multiple PUT requests per
> file then occasionally one of these requests times out, and I'd like to
> retry once per file.
> 
> Therefore I also added a 'retries' parameter to the options to
> store_file, and fixed the bug with not checking the return value of the
> print method on the file handle.
> 
> Patch attached, any feedback you have welcome :)
> 
> Cheers
> Tom
> 
> 



More information about the mogilefs mailing list