Cluster Client retries

Philippe Guillebert philippe.guillebert at
Tue Oct 16 04:31:26 EDT 2012

Hi list,

We have a cluster of three Riak 0.14.2 nodes in production and quite happy
with it. I'm planning the upgrade to 1.2.0 and while testing it, I wondered
about how a client should behave during a rolling upgrade (1 node is down
for maintenance but the cluster is working).

My expectations for a client is, if a given node is down the client will
try on another node of the cluster to "hide" the maintenance to the upper
layers of my application.

I tried with Clojure client Welle (internally it uses a PBClusterClient)
and it didn't work. As soon as I stop a Riak node, the client throws
Connection Refused exceptions (instead of retrying elsewhere).
Our Java client library (uses PBClusterClient) has the same problem.

So I realized here that if I restart a node (for maintenance) on my live
cluster, my app breaks ?!?

I tried googling but there is a lot of contradictory opinions out there :

On the wiki
says I should use another class of client :

        IRiakClient myPbClient = RiakFactory.newClient(myPbClusterConfig);

Will this client retry correctly ? Does this mean the Welle developers used
the "wrong" client ?

This message on the list states that PBClusterClient should work as I
expect :
but this message states that ClusterClient is not working as expected :

Can you help me keep my sanity here ? Thank you !

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the riak-users mailing list