Ok, cool. Makes sense, thanks for the confirmation.

I'm toying with an idea of patching Riak to hard-code the backend for certain 
buckets. (A custom patch just for our needs, not general-purpose.) Along the 
lines of, "If the bucket name starts with foo_, use backend foo". Then those 
buckets don't have properties that accumulate in the ring state, and we avoid 
the gossip lag problem altogether.

What do you think?

-Greg

On Friday, June 10, 2011 at 6:50 AM, Sean Cribbs wrote:

> Greg,
> 
> Yes, it is most likely gossip lag causing that. For your test cluster you 
> could decrease the gossip_interval setting in riak_core from its default of 
> 60000 ms to something smaller.
> 
> There has long been talk of moving the bucket properties out of the ring into 
> something like a "system bucket" or "catalog", which could be gossiped on 
> demand or at a different interval than the ring. I don't recall the exact 
> issue number in our Bugzilla, but it's < 100.
> 
> Sean Cribbs <s...@basho.com (mailto:s...@basho.com)>
> Developer Advocate
> Basho Technologies, Inc.
> http://basho.com/
> 
> On Jun 10, 2011, at 2:17 AM, Greg Nelson wrote:
> 
> > 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 (mailto:riak-users@lists.basho.com)
> > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to