org.apache.hadoop.hbase.zookeeper
Class ZooKeeperWatcher

java.lang.Object
  extended by org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher
All Implemented Interfaces:
Abortable, org.apache.zookeeper.Watcher

public class ZooKeeperWatcher
extends Object
implements org.apache.zookeeper.Watcher, Abortable

Acts as the single ZooKeeper Watcher. One instance of this is instantiated for each Master, RegionServer, and client process.

This is the only class that implements Watcher. Other internal classes which need to be notified of ZooKeeper events must register with the local instance of this watcher via registerListener(org.apache.hadoop.hbase.zookeeper.ZooKeeperListener).

This class also holds and manages the connection to ZooKeeper. Code to deal with connection related events and exceptions are handled here.


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.apache.zookeeper.Watcher
org.apache.zookeeper.Watcher.Event
 
Field Summary
 String assignmentZNode
           
 String baseZNode
           
 String clusterStateZNode
           
 String masterAddressZNode
           
 String rootServerZNode
           
 String rsZNode
           
 String tableZNode
           
 
Constructor Summary
ZooKeeperWatcher(org.apache.hadoop.conf.Configuration conf, String descriptor, Abortable abortable)
          Instantiate a ZooKeeper connection and watcher.
 
Method Summary
 void abort(String why, Throwable e)
          Abort the server or client.
 void close()
          Close the connection to ZooKeeper.
 Set<String> getNodes()
          Get the set of already watched unassigned nodes.
 String getQuorum()
          Get the quorum address of this instance.
 org.apache.zookeeper.ZooKeeper getZooKeeper()
          Get the connection to ZooKeeper.
 void interruptedException(InterruptedException ie)
          Handles InterruptedExceptions in client calls.
 void keeperException(org.apache.zookeeper.KeeperException ke)
          Handles KeeperExceptions in client calls.
 String prefix(String str)
          Adds this instance's identifier as a prefix to the passed str
 void process(org.apache.zookeeper.WatchedEvent event)
          Method called from ZooKeeper for events and connection status.
 void registerListener(ZooKeeperListener listener)
          Register the specified listener to receive ZooKeeper events.
 void registerListenerFirst(ZooKeeperListener listener)
          Register the specified listener to receive ZooKeeper events and add it as the first in the list of current listeners.
 void sync(String path)
          Forces a synchronization of this ZooKeeper client connection.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

baseZNode

public String baseZNode

rootServerZNode

public String rootServerZNode

rsZNode

public String rsZNode

masterAddressZNode

public String masterAddressZNode

clusterStateZNode

public String clusterStateZNode

assignmentZNode

public String assignmentZNode

tableZNode

public String tableZNode
Constructor Detail

ZooKeeperWatcher

public ZooKeeperWatcher(org.apache.hadoop.conf.Configuration conf,
                        String descriptor,
                        Abortable abortable)
                 throws IOException,
                        ZooKeeperConnectionException
Instantiate a ZooKeeper connection and watcher.

Parameters:
descriptor - Descriptive string that is added to zookeeper sessionid and used as identifier for this instance.
Throws:
IOException
ZooKeeperConnectionException
Method Detail

toString

public String toString()
Overrides:
toString in class Object

prefix

public String prefix(String str)
Adds this instance's identifier as a prefix to the passed str

Parameters:
str - String to amend.
Returns:
A new string with this instance's identifier as prefix: e.g. if passed 'hello world', the returned string could be

registerListener

public void registerListener(ZooKeeperListener listener)
Register the specified listener to receive ZooKeeper events.

Parameters:
listener -

registerListenerFirst

public void registerListenerFirst(ZooKeeperListener listener)
Register the specified listener to receive ZooKeeper events and add it as the first in the list of current listeners.

Parameters:
listener -

getZooKeeper

public org.apache.zookeeper.ZooKeeper getZooKeeper()
Get the connection to ZooKeeper.

Returns:
connection reference to zookeeper

getQuorum

public String getQuorum()
Get the quorum address of this instance.

Returns:
quorum string of this zookeeper connection instance

process

public void process(org.apache.zookeeper.WatchedEvent event)
Method called from ZooKeeper for events and connection status. Valid events are passed along to listeners. Connection status changes are dealt with locally.

Specified by:
process in interface org.apache.zookeeper.Watcher

sync

public void sync(String path)
Forces a synchronization of this ZooKeeper client connection.

Executing this method before running other methods will ensure that the subsequent operations are up-to-date and consistent as of the time that the sync is complete.

This is used for compareAndSwap type operations where we need to read the data of an existing node and delete or transition that node, utilizing the previously read version and data. We want to ensure that the version read is up-to-date from when we begin the operation.


getNodes

public Set<String> getNodes()
Get the set of already watched unassigned nodes.

Returns:
Set of Nodes.

keeperException

public void keeperException(org.apache.zookeeper.KeeperException ke)
                     throws org.apache.zookeeper.KeeperException
Handles KeeperExceptions in client calls. This may be temporary but for now this gives one place to deal with these. TODO: Currently this method rethrows the exception to let the caller handle

Parameters:
ke -
Throws:
org.apache.zookeeper.KeeperException

interruptedException

public void interruptedException(InterruptedException ie)
Handles InterruptedExceptions in client calls. This may be temporary but for now this gives one place to deal with these. TODO: Currently, this method does nothing. Is this ever expected to happen? Do we abort or can we let it run? Maybe this should be logged as WARN? It shouldn't happen?

Parameters:
ie -

close

public void close()
Close the connection to ZooKeeper.

Throws:
InterruptedException

abort

public void abort(String why,
                  Throwable e)
Description copied from interface: Abortable
Abort the server or client.

Specified by:
abort in interface Abortable
Parameters:
why - Why we're aborting.
e - Throwable that caused abort. Can be null.


Copyright © 2011 The Apache Software Foundation. All Rights Reserved.