org.apache.solr.common.cloud
Class SolrZkClient

java.lang.Object
  extended by org.apache.solr.common.cloud.SolrZkClient

public class SolrZkClient
extends Object

All Solr ZooKeeper interactions should go through this class rather than ZooKeeper. This class handles synchronous connects and reconnections.


Field Summary
static AtomicLong numCloses
           
static AtomicLong numOpens
           
 
Constructor Summary
SolrZkClient(String zkServerAddress, int zkClientTimeout)
           
SolrZkClient(String zkServerAddress, int zkClientTimeout, int zkClientConnectTimeout, OnReconnect onReonnect)
           
SolrZkClient(String zkServerAddress, int zkClientTimeout, ZkClientConnectionStrategy strat, OnReconnect onReconnect)
           
SolrZkClient(String zkServerAddress, int zkClientTimeout, ZkClientConnectionStrategy strat, OnReconnect onReconnect, int clientConnectTimeout)
           
 
Method Summary
 void clean(String path)
           
 void close()
           
 String create(String path, byte[] data, org.apache.zookeeper.CreateMode createMode, boolean retryOnConnLoss)
          Returns path of created node
 String create(String path, byte[] data, List<org.apache.zookeeper.data.ACL> acl, org.apache.zookeeper.CreateMode createMode, boolean retryOnConnLoss)
          Returns path of created node
 void delete(String path, int version, boolean retryOnConnLoss)
           
 Boolean exists(String path, boolean retryOnConnLoss)
          Returns true if path exists
 org.apache.zookeeper.data.Stat exists(String path, org.apache.zookeeper.Watcher watcher, boolean retryOnConnLoss)
          Return the stat of the node of the given path.
 String getBaseUrlForNodeName(String nodeName)
          Returns the baseURL corrisponding to a given node's nodeName -- NOTE: does not (currently) imply that the nodeName (or resulting baseURL) exists in the cluster.
 List<String> getChildren(String path, org.apache.zookeeper.Watcher watcher, boolean retryOnConnLoss)
          Returns children of the node at the path
 byte[] getData(String path, org.apache.zookeeper.Watcher watcher, org.apache.zookeeper.data.Stat stat, boolean retryOnConnLoss)
          Returns node's data
 SolrZooKeeper getSolrZooKeeper()
           
 ZkClientConnectionStrategy getZkClientConnectionStrategy()
           
 int getZkClientTimeout()
           
 boolean isClosed()
           
 boolean isConnected()
          Returns true if client is connected
 void makePath(String path, boolean retryOnConnLoss)
          Creates the path in ZooKeeper, creating each node as necessary.
 void makePath(String path, boolean failOnExists, boolean retryOnConnLoss)
           
 void makePath(String path, byte[] data, boolean retryOnConnLoss)
          Creates the path in ZooKeeper, creating each node as necessary.
 void makePath(String path, byte[] data, org.apache.zookeeper.CreateMode createMode, boolean retryOnConnLoss)
          Creates the path in ZooKeeper, creating each node as necessary.
 void makePath(String path, byte[] data, org.apache.zookeeper.CreateMode createMode, org.apache.zookeeper.Watcher watcher, boolean retryOnConnLoss)
          Creates the path in ZooKeeper, creating each node as necessary.
 void makePath(String path, byte[] data, org.apache.zookeeper.CreateMode createMode, org.apache.zookeeper.Watcher watcher, boolean failOnExists, boolean retryOnConnLoss)
          Creates the path in ZooKeeper, creating each node as necessary.
 void makePath(String path, org.apache.zookeeper.CreateMode createMode, boolean retryOnConnLoss)
           
 void makePath(String zkPath, org.apache.zookeeper.CreateMode createMode, org.apache.zookeeper.Watcher watcher, boolean retryOnConnLoss)
           
 void makePath(String path, File file, boolean retryOnConnLoss)
           
 void makePath(String path, File file, boolean failOnExists, boolean retryOnConnLoss)
           
static String prettyPrint(String input, int indent)
           
 void printLayout(String path, int indent, StringBuilder string)
          Fills string with printout of current ZooKeeper layout.
 void printLayoutToStdOut()
          Prints current ZooKeeper layout to stdout.
 org.apache.zookeeper.data.Stat setData(String path, byte[] data, boolean retryOnConnLoss)
          Write data to ZooKeeper.
 org.apache.zookeeper.data.Stat setData(String path, byte[] data, int version, boolean retryOnConnLoss)
          Returns node's state
 org.apache.zookeeper.data.Stat setData(String path, File file, boolean retryOnConnLoss)
          Write file to ZooKeeper - default system encoding used.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

numOpens

public static final AtomicLong numOpens

numCloses

public static final AtomicLong numCloses
Constructor Detail

SolrZkClient

public SolrZkClient(String zkServerAddress,
                    int zkClientTimeout)

SolrZkClient

public SolrZkClient(String zkServerAddress,
                    int zkClientTimeout,
                    int zkClientConnectTimeout,
                    OnReconnect onReonnect)

SolrZkClient

public SolrZkClient(String zkServerAddress,
                    int zkClientTimeout,
                    ZkClientConnectionStrategy strat,
                    OnReconnect onReconnect)

SolrZkClient

public SolrZkClient(String zkServerAddress,
                    int zkClientTimeout,
                    ZkClientConnectionStrategy strat,
                    OnReconnect onReconnect,
                    int clientConnectTimeout)
Method Detail

getZkClientTimeout

public int getZkClientTimeout()

getZkClientConnectionStrategy

public ZkClientConnectionStrategy getZkClientConnectionStrategy()

isConnected

public boolean isConnected()
Returns true if client is connected


delete

public void delete(String path,
                   int version,
                   boolean retryOnConnLoss)
            throws InterruptedException,
                   org.apache.zookeeper.KeeperException
Throws:
InterruptedException
org.apache.zookeeper.KeeperException

exists

public org.apache.zookeeper.data.Stat exists(String path,
                                             org.apache.zookeeper.Watcher watcher,
                                             boolean retryOnConnLoss)
                                      throws org.apache.zookeeper.KeeperException,
                                             InterruptedException
Return the stat of the node of the given path. Return null if no such a node exists.

If the watch is non-null and the call is successful (no exception is thrown), a watch will be left on the node with the given path. The watch will be triggered by a successful operation that creates/delete the node or sets the data on the node.

Parameters:
path - the node path
watcher - explicit watcher
Returns:
the stat of the node of the given path; return null if no such a node exists.
Throws:
org.apache.zookeeper.KeeperException - If the server signals an error
InterruptedException - If the server transaction is interrupted.
IllegalArgumentException - if an invalid path is specified

exists

public Boolean exists(String path,
                      boolean retryOnConnLoss)
               throws org.apache.zookeeper.KeeperException,
                      InterruptedException
Returns true if path exists

Throws:
org.apache.zookeeper.KeeperException
InterruptedException

create

public String create(String path,
                     byte[] data,
                     List<org.apache.zookeeper.data.ACL> acl,
                     org.apache.zookeeper.CreateMode createMode,
                     boolean retryOnConnLoss)
              throws org.apache.zookeeper.KeeperException,
                     InterruptedException
Returns path of created node

Throws:
org.apache.zookeeper.KeeperException
InterruptedException

getChildren

public List<String> getChildren(String path,
                                org.apache.zookeeper.Watcher watcher,
                                boolean retryOnConnLoss)
                         throws org.apache.zookeeper.KeeperException,
                                InterruptedException
Returns children of the node at the path

Throws:
org.apache.zookeeper.KeeperException
InterruptedException

getData

public byte[] getData(String path,
                      org.apache.zookeeper.Watcher watcher,
                      org.apache.zookeeper.data.Stat stat,
                      boolean retryOnConnLoss)
               throws org.apache.zookeeper.KeeperException,
                      InterruptedException
Returns node's data

Throws:
org.apache.zookeeper.KeeperException
InterruptedException

setData

public org.apache.zookeeper.data.Stat setData(String path,
                                              byte[] data,
                                              int version,
                                              boolean retryOnConnLoss)
                                       throws org.apache.zookeeper.KeeperException,
                                              InterruptedException
Returns node's state

Throws:
org.apache.zookeeper.KeeperException
InterruptedException

create

public String create(String path,
                     byte[] data,
                     org.apache.zookeeper.CreateMode createMode,
                     boolean retryOnConnLoss)
              throws org.apache.zookeeper.KeeperException,
                     InterruptedException
Returns path of created node

Throws:
org.apache.zookeeper.KeeperException
InterruptedException

makePath

public void makePath(String path,
                     boolean retryOnConnLoss)
              throws org.apache.zookeeper.KeeperException,
                     InterruptedException
Creates the path in ZooKeeper, creating each node as necessary. e.g. If path=/solr/group/node and none of the nodes, solr, group, node exist, each will be created.

Throws:
org.apache.zookeeper.KeeperException
InterruptedException

makePath

public void makePath(String path,
                     boolean failOnExists,
                     boolean retryOnConnLoss)
              throws org.apache.zookeeper.KeeperException,
                     InterruptedException
Throws:
org.apache.zookeeper.KeeperException
InterruptedException

makePath

public void makePath(String path,
                     File file,
                     boolean failOnExists,
                     boolean retryOnConnLoss)
              throws IOException,
                     org.apache.zookeeper.KeeperException,
                     InterruptedException
Throws:
IOException
org.apache.zookeeper.KeeperException
InterruptedException

makePath

public void makePath(String path,
                     File file,
                     boolean retryOnConnLoss)
              throws IOException,
                     org.apache.zookeeper.KeeperException,
                     InterruptedException
Throws:
IOException
org.apache.zookeeper.KeeperException
InterruptedException

makePath

public void makePath(String path,
                     org.apache.zookeeper.CreateMode createMode,
                     boolean retryOnConnLoss)
              throws org.apache.zookeeper.KeeperException,
                     InterruptedException
Throws:
org.apache.zookeeper.KeeperException
InterruptedException

makePath

public void makePath(String path,
                     byte[] data,
                     boolean retryOnConnLoss)
              throws org.apache.zookeeper.KeeperException,
                     InterruptedException
Creates the path in ZooKeeper, creating each node as necessary.

Parameters:
data - to set on the last zkNode
Throws:
org.apache.zookeeper.KeeperException
InterruptedException

makePath

public void makePath(String path,
                     byte[] data,
                     org.apache.zookeeper.CreateMode createMode,
                     boolean retryOnConnLoss)
              throws org.apache.zookeeper.KeeperException,
                     InterruptedException
Creates the path in ZooKeeper, creating each node as necessary. e.g. If path=/solr/group/node and none of the nodes, solr, group, node exist, each will be created.

Parameters:
data - to set on the last zkNode
Throws:
org.apache.zookeeper.KeeperException
InterruptedException

makePath

public void makePath(String path,
                     byte[] data,
                     org.apache.zookeeper.CreateMode createMode,
                     org.apache.zookeeper.Watcher watcher,
                     boolean retryOnConnLoss)
              throws org.apache.zookeeper.KeeperException,
                     InterruptedException
Creates the path in ZooKeeper, creating each node as necessary. e.g. If path=/solr/group/node and none of the nodes, solr, group, node exist, each will be created.

Parameters:
data - to set on the last zkNode
Throws:
org.apache.zookeeper.KeeperException
InterruptedException

makePath

public void makePath(String path,
                     byte[] data,
                     org.apache.zookeeper.CreateMode createMode,
                     org.apache.zookeeper.Watcher watcher,
                     boolean failOnExists,
                     boolean retryOnConnLoss)
              throws org.apache.zookeeper.KeeperException,
                     InterruptedException
Creates the path in ZooKeeper, creating each node as necessary. e.g. If path=/solr/group/node and none of the nodes, solr, group, node exist, each will be created. Note: retryOnConnLoss is only respected for the final node - nodes before that are always retried on connection loss.

Throws:
org.apache.zookeeper.KeeperException
InterruptedException

makePath

public void makePath(String zkPath,
                     org.apache.zookeeper.CreateMode createMode,
                     org.apache.zookeeper.Watcher watcher,
                     boolean retryOnConnLoss)
              throws org.apache.zookeeper.KeeperException,
                     InterruptedException
Throws:
org.apache.zookeeper.KeeperException
InterruptedException

setData

public org.apache.zookeeper.data.Stat setData(String path,
                                              byte[] data,
                                              boolean retryOnConnLoss)
                                       throws org.apache.zookeeper.KeeperException,
                                              InterruptedException
Write data to ZooKeeper.

Throws:
org.apache.zookeeper.KeeperException
InterruptedException

setData

public org.apache.zookeeper.data.Stat setData(String path,
                                              File file,
                                              boolean retryOnConnLoss)
                                       throws IOException,
                                              org.apache.zookeeper.KeeperException,
                                              InterruptedException
Write file to ZooKeeper - default system encoding used.

Parameters:
path - path to upload file to e.g. /solr/conf/solrconfig.xml
file - path to file to be uploaded
Throws:
IOException
org.apache.zookeeper.KeeperException
InterruptedException

getBaseUrlForNodeName

public String getBaseUrlForNodeName(String nodeName)
Returns the baseURL corrisponding to a given node's nodeName -- NOTE: does not (currently) imply that the nodeName (or resulting baseURL) exists in the cluster.

WARNING: This API is experimental and might change in incompatible ways in the next release.

printLayout

public void printLayout(String path,
                        int indent,
                        StringBuilder string)
                 throws org.apache.zookeeper.KeeperException,
                        InterruptedException
Fills string with printout of current ZooKeeper layout.

Throws:
org.apache.zookeeper.KeeperException
InterruptedException

printLayoutToStdOut

public void printLayoutToStdOut()
                         throws org.apache.zookeeper.KeeperException,
                                InterruptedException
Prints current ZooKeeper layout to stdout.

Throws:
org.apache.zookeeper.KeeperException
InterruptedException

prettyPrint

public static String prettyPrint(String input,
                                 int indent)

close

public void close()

isClosed

public boolean isClosed()

getSolrZooKeeper

public SolrZooKeeper getSolrZooKeeper()

clean

public void clean(String path)
           throws InterruptedException,
                  org.apache.zookeeper.KeeperException
Throws:
InterruptedException
org.apache.zookeeper.KeeperException


Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.