A cascade client uses locally cached group membership to decide which Cascade server to communicate with. If there was a view change, the client's membership cache might be stale resulting in the client trying an invalid member. In such a case, instead of leaving the exception handling to the application, we can implement the retry mechanism inside ServiceClient<>::put()/get()/remove(), where the connection exception should be caught, the membership be refreshed, and operation retry.
On network hiccups, the client must use the version verifier to avoid a retried operation being processed more than once.
A cascade client uses locally cached group membership to decide which Cascade server to communicate with. If there was a view change, the client's membership cache might be stale resulting in the client trying an invalid member. In such a case, instead of leaving the exception handling to the application, we can implement the retry mechanism inside
ServiceClient<>::put()/get()/remove(), where the connection exception should be caught, the membership be refreshed, and operation retry.On network hiccups, the client must use the
version verifierto avoid a retried operation being processed more than once.