Bucket properties not updated

Daniel Iwan iwan.daniel at gmail.com
Wed Oct 9 15:35:06 EDT 2013


Thank for reply.

The thing is that bucket never converges. The allow_mult remains false even
several minutes after handoff had finished.
I don't know whether it's because properties get overwritten by defaults
during gossip or it's because message from client(s) never reaches Riak.

This situation is potentially very dangerous for us. As I have no way of
checking if allow_mult has incorrect value (Riak client returns true)
it simply means write loss during updates.

Is there a way to debug what's happening or check what's in the ring?

Regards
Daniel Iwan



On 9 October 2013 20:08, Joe Caswell <jcaswell at basho.com> wrote:

> Daniel,
>
>   Custom (i.e. non-default) bucket properties are currently stored in the
> ring.  Once you set a bucket property on one node, the updated ring must be
> gossiped to the other nodes.  I assume by 'vnode transfer' you mean
> handoff.  An ownership handoff would also generate changes to the ring
> which need to be gossiped, and so could slow the propagation of the bucket
> data.  If you are setting bucket properties at multiple nodes
> simultaneously,  there will be additional steps to resolve the change in
> order for the ring to converge.  If all nodes are online and reachable, the
> change should complete very quickly (I would consider 1 second somewhat
> slow).
>
> Joe Caswell
>
> From: Daniel Iwan <iwan.daniel at gmail.com>
> Date: Wednesday, October 9, 2013 7:39 AM
> To: "riak-users at lists.basho.com" <riak-users at lists.basho.com>
> Subject: Bucket properties not updated
>
> Hi
>
> With Java client 1.1.3 and Riak 1.3.1
> I'm doing:
>
>         WriteBucket wb =
> iclient.createBucket(BUCKET_NAME).nVal(3).allowSiblings(true);
>         Bucket b = wb.execute();
>
> _logger.fine("Regular bucket: " + bucket + ", allows siblings? " +
> bucket.getAllowSiblings());
>
>         DomainBucketBuilder< MyObjectInRiak > builder =
> DomainBucket.builder(bucket, MyObjectInRiak.class);
>
>         builder.r(RIAK_TX_R_VALUE);
>         builder.w(RIAK_TX_W_VALUE);
>         builder.rw(RIAK_TX_RW_VALUE);
>         builder.returnDeletedVClock(true);
>         builder.returnBody(true);
>         builder.basicQuorum(false);
>
> with custom resolver, mutator and converter.
> This code runs on 3 servers at the same time during a test and I know Riak
> db is empty
> and bucket BUCKET_NAME does not exist.
>
> log shows that all 3 servers see allowSibbling set to true, but
> occasionally test fails and curl shows allow_multi is false on that bucket!
>
> Is there any delay, race condition etc in Riak, or client library. that
> would explain why that bucket property is not set?
> During a test vnode transfer occurs but that should not matter I guess?
>
> Regards
> Daniel
>
>
> _______________________________________________ riak-users mailing list
> riak-users at lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20131009/cc11a85f/attachment.html>


More information about the riak-users mailing list