org.neo4j.kernel.ha.zookeeper
Class AbstractZooKeeperManager

java.lang.Object
  extended by org.neo4j.kernel.ha.zookeeper.AbstractZooKeeperManager
Direct Known Subclasses:
ZooClient, ZooKeeperClusterClient

public abstract class AbstractZooKeeperManager
extends Object

Contains basic functionality for a ZooKeeper manager, f.ex. how to get the current master in the cluster.


Field Summary
protected  Pair<Master,Machine> cachedMaster
           
protected  int clientLockReadTimeout
           
protected  int clientReadTimeout
           
protected static String HA_SERVERS_CHILD
           
protected  int maxConcurrentChannelsPerSlave
           
protected  org.neo4j.kernel.impl.util.StringLogger msgLog
           
protected static Master NO_MASTER
           
static Pair<Master,Machine> NO_MASTER_MACHINE_PAIR
           
 
Constructor Summary
AbstractZooKeeperManager(String servers, org.neo4j.com.StoreIdGetter storeIdGetter, org.neo4j.kernel.impl.util.StringLogger msgLog, int clientReadTimeout, int clientLockReadTimeout, int maxConcurrentChannelsPerSlave, int sessionTimeout)
           
 
Method Summary
protected  String asRootPath(org.neo4j.kernel.impl.nioneo.store.StoreId storeId)
           
protected  Map<Integer,ZooKeeperMachine> getAllMachines(boolean wait)
           
 Pair<Master,Machine> getCachedMaster()
           
protected  org.neo4j.kernel.impl.nioneo.store.StoreId getClusterStoreId(org.apache.zookeeper.ZooKeeper keeper, String clusterName)
           
protected  String getHaServer(int machineId, boolean wait)
           
protected  ZooKeeperMachine getMasterBasedOn(Collection<ZooKeeperMachine> machines)
           
protected  Master getMasterClientToMachine(Machine master)
           
protected  Pair<Master,Machine> getMasterFromZooKeeper(boolean wait, boolean allowChange)
          Tries to discover the master from the zookeeper information.
protected abstract  int getMyMachineId()
           
abstract  String getRoot()
           
 String getServers()
           
protected  int getSessionTimeout()
           
abstract  org.apache.zookeeper.ZooKeeper getZooKeeper(boolean sync)
           
protected  void invalidateMaster()
           
protected  Pair<Integer,Integer> parseChild(String child)
           
protected  Pair<Long,Integer> readDataRepresentingInstance(String path)
           
protected  Pair<String,Integer> readHaServer(int machineId, boolean wait)
           
 void shutdown()
           
abstract  void waitForSyncConnected()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HA_SERVERS_CHILD

protected static final String HA_SERVERS_CHILD
See Also:
Constant Field Values

cachedMaster

protected volatile Pair<Master,Machine> cachedMaster

msgLog

protected final org.neo4j.kernel.impl.util.StringLogger msgLog

maxConcurrentChannelsPerSlave

protected final int maxConcurrentChannelsPerSlave

clientReadTimeout

protected final int clientReadTimeout

clientLockReadTimeout

protected final int clientLockReadTimeout

NO_MASTER

protected static final Master NO_MASTER

NO_MASTER_MACHINE_PAIR

public static final Pair<Master,Machine> NO_MASTER_MACHINE_PAIR
Constructor Detail

AbstractZooKeeperManager

public AbstractZooKeeperManager(String servers,
                                org.neo4j.com.StoreIdGetter storeIdGetter,
                                org.neo4j.kernel.impl.util.StringLogger msgLog,
                                int clientReadTimeout,
                                int clientLockReadTimeout,
                                int maxConcurrentChannelsPerSlave,
                                int sessionTimeout)
Method Detail

asRootPath

protected String asRootPath(org.neo4j.kernel.impl.nioneo.store.StoreId storeId)

getClusterStoreId

protected org.neo4j.kernel.impl.nioneo.store.StoreId getClusterStoreId(org.apache.zookeeper.ZooKeeper keeper,
                                                                       String clusterName)

getSessionTimeout

protected int getSessionTimeout()

getZooKeeper

public abstract org.apache.zookeeper.ZooKeeper getZooKeeper(boolean sync)

getRoot

public abstract String getRoot()

parseChild

protected Pair<Integer,Integer> parseChild(String child)

readDataRepresentingInstance

protected Pair<Long,Integer> readDataRepresentingInstance(String path)
                                                   throws InterruptedException,
                                                          org.apache.zookeeper.KeeperException
Throws:
InterruptedException
org.apache.zookeeper.KeeperException

invalidateMaster

protected void invalidateMaster()

getMasterFromZooKeeper

protected Pair<Master,Machine> getMasterFromZooKeeper(boolean wait,
                                                      boolean allowChange)
Tries to discover the master from the zookeeper information. Will return a Pair of a Master and the Machine it resides on. If the new master is different than the current then the current is invalidated and if allowChange is set to true then the a connection to the new master is established otherwise a NO_MASTER is returned.

Parameters:
wait - Whether to wait for a sync connected event
allowChange - If to connect to the new master
Returns:
The master machine pair, possibly a NO_MASTER_MACHINE_PAIR

getMasterClientToMachine

protected Master getMasterClientToMachine(Machine master)

getMyMachineId

protected abstract int getMyMachineId()

getCachedMaster

public Pair<Master,Machine> getCachedMaster()

getMasterBasedOn

protected ZooKeeperMachine getMasterBasedOn(Collection<ZooKeeperMachine> machines)

getAllMachines

protected Map<Integer,ZooKeeperMachine> getAllMachines(boolean wait)

getHaServer

protected String getHaServer(int machineId,
                             boolean wait)

readHaServer

protected Pair<String,Integer> readHaServer(int machineId,
                                            boolean wait)

shutdown

public void shutdown()

waitForSyncConnected

public abstract void waitForSyncConnected()

getServers

public String getServers()


Copyright © 2002-2012 The Neo4j Graph Database Project. All Rights Reserved.