Hi,

I ran the following Java snippet that creates a bucket, stores a key/value
pair in it, deletes the key, and adds a new value for that same key. The
n-value is 3 and all r- and w-values are also set to 3 to ensure full
consistency (for testing only). Here's the code:

    public static void main(String[] args) throws Exception {
        IRiakClient riak = RiakFactory.pbcClient();
        try {
            // store an object in a new bucket
            Bucket testBucket =
riak.createBucket("testBucket").nVal(3).allowSiblings(true).execute();
            testBucket.store("key", "value1").w(3).execute();

System.out.println(testBucket.fetch("key").r(3).execute().getValueAsString());
 // prints 'value1'

            // now delete it and store another object with the same key
            testBucket.delete("key").r(3).w(3).execute();
            testBucket.store("key", "value2").w(3).execute();

System.out.println(testBucket.fetch("key").r(3).execute().getValueAsString());
 // throws 'UnresolvedConflictException: Siblings found'

        } finally {
            riak.shutdown();
        }
    }

As you can see by the comment I have added to the code fetching the key a
second time should, in my opinion, return the new value, but it fails
because there are siblings. Maybe I didn't fully understand how sibling
handling works, but I don't see how there can possibly be any siblings
given that r and w are 3. Any pointers? I tried the LevelDB and memory
backends, same result.

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

Reply via email to