Hello, I have been debugging something I've seen popping up intermittently when running my application's functional tests against Riak (local 5 node devrel cluster). The behavior is basically that sometimes an object which was PUT will seemingly disappear. Any future GETs will 404. Even if waiting seconds or minutes between PUT and GET.
After staring at this and pulling out some hair I finally figured out what was happening (I think). I noticed it was always the first few objects written that were lost, and only on a certain bucket. My application uses multi-backend with two bitcask backends. That bucket is the only one which uses the non-default backend. What's happening is the application first gets the bucket properties and then sets the "backend" prop if it's not set. You can probably guess the rest. (PUTs come into nodes which don't have the property in their ring state yet and store the objects in the default backend) I don't think this is necessarily a "bug". It's expected behavior when you think about it, as long as you know how bucket properties are propagated. But even knowing that, this is pretty subtle. Is there a good way for a client to know when the property has been gossiped to all the nodes? Seems like the only approach is to wait a bit after setting a property before doing a PUT... Also, does this sound right? It's very possible I'm wrong about what's causing this behavior. -Greg
_______________________________________________ riak-users mailing list riak-users@lists.basho.com http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com