On Monday, January 21, 2013 at 5:01 PM, Nick Bartos wrote:
> I would like to store some objects in rados, and retrieve them in a
> consistent manor. In my initial tests, if I do a 'rados -p foo put
> test /tmp/test', while it is uploading I can do a 'rados -p foo get
> test /tmp/blah' on another machine, and it will download a partially
> written file without returning an error code, so the downloader cannot
> tell the file is corrupt/incomplete.
>  
> My question is, how do I read/write objects in rados via the command
> line in such a way where the downloader does not get a corrupt or
> incomplete file? It's fine if it just returns an error on the client
> and I can try again, I just need to be notified on error.
>  
You must be writing large-ish objects? By default the rados tool will upload 
objects 4MB at a time and you're trying to download mid-way through the full 
object upload. You can add a "--block-size 20971520" to upload 20MB in a single 
operation, but make sure you don't exceed the "osd max write size" (90MB by 
default).
This is all client-side stuff, though — from the RADOS object store's 
perspective, the file is complete after each 4MB write. If you want something 
more sophisticated (like handling larger objects) you'll need to do at least 
some minimal tooling of your own, e.g. by setting an object xattr before 
starting and after finishing the file change, then checking for that presence 
when reading (and locking on reads or doing a check when the read completes). 
You can do that with the "setxattr", "rmxattr", and "getxattr" options.
-Greg

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to