I have an edge case where consistency is favoured over availability so I’m 
using a "consistent": true bucket type for a very specific operation.
I worked in testing my setup so ended up faking an entire failure by 
deliberately using an incorrect vClock.

Using StoreValue, the (second) write fails as expected  

FetchValue fetchOp = new FetchValue.Builder(location(id)).build();
VClock vClock = client.execute(fetchOp).getVectorClock();
//fiddle with vClock or allow the first write to finish before the next step
StoreValue storeOp = new StoreValue.Builder(value)
.withVectorClock(vClock)
.withLocation(location(id)).build();
StoreValue.Response response = client.execute(storeOp);

Caused by: com.basho.riak.client.core.netty.RiakResponseException: failed
at 
com.basho.riak.client.core.netty.RiakResponseHandler.channelRead(RiakResponseHandler.java:52)
at 
io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:340)
at 
io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:326)



I managed to override the UpdateValue class to simulate a similar failure 
scenario (so I don’t have to do the fetch + store myself). I was expecting a 
similar result, however, after some analysis I realised that an exception is 
being swallowed somewhere.
I believe the trouble might be around this area: 
https://github.com/basho/riak-java-client/blob/develop/src/main/java/com/basho/riak/client/api/commands/kv/UpdateValue.java#L581

The exception is not allowed to bubble up to the client code. Additionally, 
another net effect of this seems to be that a null response is returned here
UpdateValue.Response res = client.execute(updateOp);

So a call to res.wasUpdated() will produce a NPE!

The way I see it, this code needs to either  
1) return not-null res and res.wasUpdated() as false
or
2) allow the exception to bubble up

Please let me know your thoughts

Thank you
Cos

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

Reply via email to