org.apache.curator
Class RetryLoop

java.lang.Object
  extended by org.apache.curator.RetryLoop

public class RetryLoop
extends Object

Mechanism to perform an operation on Zookeeper that is safe against disconnections and "recoverable" errors.

If an exception occurs during the operation, the RetryLoop will process it, check with the current retry policy and either attempt to reconnect or re-throw the exception

Canonical usage:
 RetryLoop retryLoop = client.newRetryLoop();
 while ( retryLoop.shouldContinue() )
 {
     try
     {
         // do your work
         ZooKeeper      zk = client.getZooKeeper();    // it's important to re-get the ZK instance in case there was an error and the instance was re-created

         retryLoop.markComplete();
     }
     catch ( Exception e )
     {
         retryLoop.takeException(e);
     }
 }
 


Method Summary
static
<T> T
callWithRetry(CuratorZookeeperClient client, Callable<T> proc)
          Convenience utility: creates a retry loop calling the given proc and retrying if needed
static RetrySleeper getDefaultRetrySleeper()
          Returns the default retry sleeper
static boolean isRetryException(Throwable exception)
          Utility - return true if the given exception is retry-able
 void markComplete()
          Call this when your operation has successfully completed
 boolean shouldContinue()
          If true is returned, make an attempt at the operation
static boolean shouldRetry(int rc)
          Utility - return true if the given Zookeeper result code is retry-able
 void takeException(Exception exception)
          Pass any caught exceptions here
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getDefaultRetrySleeper

public static RetrySleeper getDefaultRetrySleeper()
Returns the default retry sleeper

Returns:
sleeper

callWithRetry

public static <T> T callWithRetry(CuratorZookeeperClient client,
                                  Callable<T> proc)
                       throws Exception
Convenience utility: creates a retry loop calling the given proc and retrying if needed

Type Parameters:
T - return type
Parameters:
client - Zookeeper
proc - procedure to call with retry
Returns:
procedure result
Throws:
Exception - any non-retriable errors

shouldContinue

public boolean shouldContinue()
If true is returned, make an attempt at the operation

Returns:
true/false

markComplete

public void markComplete()
Call this when your operation has successfully completed


shouldRetry

public static boolean shouldRetry(int rc)
Utility - return true if the given Zookeeper result code is retry-able

Parameters:
rc - result code
Returns:
true/false

isRetryException

public static boolean isRetryException(Throwable exception)
Utility - return true if the given exception is retry-able

Parameters:
exception - exception to check
Returns:
true/false

takeException

public void takeException(Exception exception)
                   throws Exception
Pass any caught exceptions here

Parameters:
exception - the exception
Throws:
Exception - if not retry-able or the retry policy returned negative


Copyright © 2011–2014 The Apache Software Foundation. All rights reserved.