Class CuratorZookeeperClient

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class CuratorZookeeperClient
    extends java.lang.Object
    implements java.io.Closeable
    A wrapper around Zookeeper that takes care of some low-level housekeeping
    • Constructor Detail

      • CuratorZookeeperClient

        public CuratorZookeeperClient​(java.lang.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 Detail

      • getZooKeeper

        public org.apache.zookeeper.ZooKeeper getZooKeeper()
                                                    throws java.lang.Exception
        Return the managed ZK instance.
        Returns:
        client the client
        Throws:
        java.lang.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
      • isConnected

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

        public boolean blockUntilConnectedOrTimedOut()
                                              throws java.lang.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:
        java.lang.InterruptedException - interrupted while waiting
      • start

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

        public void close()
        Close the client. Same as close(int) using the timeout set at construction time.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        See Also:
        close(int)
      • 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​(java.lang.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​(java.lang.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 java.lang.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 java.lang.Exception
        For internal use only - reset the internally managed ZK handle
        Throws:
        java.lang.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 java.lang.InterruptedException
        For internal use only
        Throws:
        java.lang.InterruptedException - interruptions