Class CuratorZookeeperClient

java.lang.Object
org.apache.curator.CuratorZookeeperClient
All Implemented Interfaces:
Closeable, AutoCloseable

public class CuratorZookeeperClient extends Object implements Closeable
A wrapper around Zookeeper that takes care of some low-level housekeeping
  • Constructor Details

    • CuratorZookeeperClient

      public CuratorZookeeperClient(String connectString, int sessionTimeoutMs, int connectionTimeoutMs, org.apache.zookeeper.Watcher watcher, RetryPolicy retryPolicy)
      Parameters:
      connectString - list of servers to connect to
      sessionTimeoutMs - session timeout
      connectionTimeoutMs - connection timeout
      watcher - default watcher or null
      retryPolicy - the retry policy to use
    • CuratorZookeeperClient

      public CuratorZookeeperClient(EnsembleProvider ensembleProvider, int sessionTimeoutMs, int connectionTimeoutMs, org.apache.zookeeper.Watcher watcher, RetryPolicy retryPolicy)
      Parameters:
      ensembleProvider - the ensemble provider
      sessionTimeoutMs - session timeout
      connectionTimeoutMs - connection timeout
      watcher - default watcher or null
      retryPolicy - the retry policy to use
    • CuratorZookeeperClient

      public CuratorZookeeperClient(ZookeeperFactory zookeeperFactory, EnsembleProvider ensembleProvider, int sessionTimeoutMs, int connectionTimeoutMs, org.apache.zookeeper.Watcher watcher, RetryPolicy retryPolicy, boolean canBeReadOnly)
      Parameters:
      zookeeperFactory - factory for creating ZooKeeper instances
      ensembleProvider - the ensemble provider
      sessionTimeoutMs - session timeout
      connectionTimeoutMs - connection timeout
      watcher - default watcher or null
      retryPolicy - the retry policy to use
      canBeReadOnly - if true, allow ZooKeeper client to enter read only mode in case of a network partition. See ZooKeeper(String, int, Watcher, long, byte[], boolean) for details
    • CuratorZookeeperClient

      public CuratorZookeeperClient(ZookeeperFactory zookeeperFactory, EnsembleProvider ensembleProvider, int sessionTimeoutMs, int connectionTimeoutMs, int waitForShutdownTimeoutMs, org.apache.zookeeper.Watcher watcher, RetryPolicy retryPolicy, boolean canBeReadOnly)
      Parameters:
      zookeeperFactory - factory for creating ZooKeeper instances
      ensembleProvider - the ensemble provider
      sessionTimeoutMs - session timeout
      connectionTimeoutMs - connection timeout
      waitForShutdownTimeoutMs - default timeout fo close operation
      watcher - default watcher or null
      retryPolicy - the retry policy to use
      canBeReadOnly - if true, allow ZooKeeper client to enter read only mode in case of a network partition. See ZooKeeper(String, int, Watcher, long, byte[], boolean) for details
      Since:
      4.0.2
  • Method Details

    • getZooKeeper

      public org.apache.zookeeper.ZooKeeper getZooKeeper() throws Exception
      Return the managed ZK instance.
      Returns:
      client the client
      Throws:
      Exception - if the connection timeout has elapsed or an exception occurs in a background process
    • newRetryLoop

      public RetryLoop newRetryLoop()
      Return a new retry loop. All operations should be performed in a retry loop
      Returns:
      new retry loop
    • newSessionFailRetryLoop

      public SessionFailRetryLoop newSessionFailRetryLoop(SessionFailRetryLoop.Mode mode)
      Return a new "session fail" retry loop. See SessionFailRetryLoop for details on when to use it.
      Parameters:
      mode - failure mode
      Returns:
      new retry loop
    • isConnected

      public boolean isConnected()
      Returns true if the client is current connected
      Returns:
      true/false
    • blockUntilConnectedOrTimedOut

      public boolean blockUntilConnectedOrTimedOut() throws InterruptedException
      This method blocks until the connection to ZK succeeds. Use with caution. The block will timeout after the connection timeout (as passed to the constructor) has elapsed
      Returns:
      true if the connection succeeded, false if not
      Throws:
      InterruptedException - interrupted while waiting
    • start

      public void start() throws Exception
      Must be called after construction
      Throws:
      IOException - errors
      Exception
    • close

      public void close()
      Close the client. Same as close(int) using the timeout set at construction time.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      See Also:
    • close

      public void close(int waitForShutdownTimeoutMs)
      Close this client object as the close() method. This method will wait for internal resources to be released.
      Parameters:
      waitForShutdownTimeoutMs - timeout (in milliseconds) to wait for resources to be released. Use zero or a negative value to skip the wait.
    • setRetryPolicy

      public void setRetryPolicy(RetryPolicy policy)
      Change the retry policy
      Parameters:
      policy - new policy
    • getRetryPolicy

      public RetryPolicy getRetryPolicy()
      Return the current retry policy
      Returns:
      policy
    • startTracer

      public TimeTrace startTracer(String name)
      Start a new tracer
      Parameters:
      name - name of the event
      Returns:
      the new tracer (TimeTrace.commit() must be called)
    • startAdvancedTracer

      public OperationTrace startAdvancedTracer(String name)
      Start a new advanced tracer with more metrics being recorded
      Parameters:
      name - name of the event
      Returns:
      the new tracer (OperationTrace.commit() must be called)
    • getTracerDriver

      public TracerDriver getTracerDriver()
      Return the current tracing driver
      Returns:
      tracing driver
    • setTracerDriver

      public void setTracerDriver(TracerDriver tracer)
      Change the tracing driver
      Parameters:
      tracer - new tracing driver
    • getCurrentConnectionString

      public String getCurrentConnectionString()
      Returns the current known connection string - not guaranteed to be correct value at any point in the future.
      Returns:
      connection string
    • getConnectionTimeoutMs

      public int getConnectionTimeoutMs()
      Return the configured connection timeout
      Returns:
      timeout
    • reset

      public void reset() throws Exception
      For internal use only - reset the internally managed ZK handle
      Throws:
      Exception - errors
    • getInstanceIndex

      public long getInstanceIndex()
      Every time a new ZooKeeper instance is allocated, the "instance index" is incremented.
      Returns:
      the current instance index
    • getLastNegotiatedSessionTimeoutMs

      public int getLastNegotiatedSessionTimeoutMs()
      Return the most recent value of ZooKeeper.getSessionTimeout() or 0
      Returns:
      session timeout or 0
    • internalBlockUntilConnectedOrTimedOut

      public void internalBlockUntilConnectedOrTimedOut() throws InterruptedException
      For internal use only
      Throws:
      InterruptedException - interruptions