@InterfaceAudience.Private public class MasterAddressTracker extends ZooKeeperNodeTracker
Listens for ZooKeeper events related to the master address. The node
/master
will contain the address of the current master.
This listener is interested in
NodeDeleted
and NodeCreated
events on
/master
.
Utilizes ZooKeeperNodeTracker
for zk interactions.
You can get the current master via getMasterAddress()
or via
getMasterAddress(ZooKeeperWatcher)
if you do not have a running
instance of this Tracker in your context.
This class also includes utility for interacting with the master znode, for writing and reading the znode content.
abortable, node
watcher
Constructor and Description |
---|
MasterAddressTracker(ZooKeeperWatcher watcher,
Abortable abortable)
Construct a master address listener with the specified
zookeeper reference. |
Modifier and Type | Method and Description |
---|---|
static boolean |
deleteIfEquals(ZooKeeperWatcher zkw,
String content)
delete the master znode if its content is same as the parameter
|
int |
getBackupMasterInfoPort(ServerName sn)
Get the info port of the backup master if it is available.
|
ServerName |
getMasterAddress()
Get the address of the current master if one is available.
|
ServerName |
getMasterAddress(boolean refresh)
Get the address of the current master if one is available.
|
static ServerName |
getMasterAddress(ZooKeeperWatcher zkw)
Get master address.
|
int |
getMasterInfoPort()
Get the info port of the current master of one is available.
|
static int |
getMasterInfoPort(ZooKeeperWatcher zkw)
Get master info port.
|
boolean |
hasMaster()
Check if there is a master available.
|
static ZooKeeperProtos.Master |
parse(byte[] data) |
static boolean |
setMasterAddress(ZooKeeperWatcher zkw,
String znode,
ServerName master,
int infoPort)
Set master address into the
master znode or into the backup
subdirectory of backup masters; switch off the passed in znode
path. |
blockUntilAvailable, blockUntilAvailable, checkIfBaseNodeAvailable, getData, getNode, nodeCreated, nodeDataChanged, nodeDeleted, start, stop, toString
getWatcher, nodeChildrenChanged
public MasterAddressTracker(ZooKeeperWatcher watcher, Abortable abortable)
zookeeper
reference.
This constructor does not trigger any actions, you must call methods
explicitly. Normally you will just want to execute ZooKeeperNodeTracker.start()
to
begin tracking of the master address.
watcher
- zk reference and watcherabortable
- abortable in case of fatal errorpublic ServerName getMasterAddress()
public int getMasterInfoPort()
public int getBackupMasterInfoPort(ServerName sn)
sn
- server name of backup masterpublic ServerName getMasterAddress(boolean refresh)
refresh
- whether to refresh the data by calling ZK directly.public static ServerName getMasterAddress(ZooKeeperWatcher zkw) throws KeeperException, IOException
getMasterAddress()
if you do not have an
instance of this tracker in your context.zkw
- ZooKeeperWatcher to useKeeperException
IOException
public static int getMasterInfoPort(ZooKeeperWatcher zkw) throws KeeperException, IOException
getMasterInfoPort()
if you do not have an
instance of this tracker in your context.zkw
- ZooKeeperWatcher to useKeeperException
IOException
public static boolean setMasterAddress(ZooKeeperWatcher zkw, String znode, ServerName master, int infoPort) throws KeeperException
master
znode or into the backup
subdirectory of backup masters; switch off the passed in znode
path.zkw
- The ZooKeeperWatcher to use.znode
- Where to create the znode; could be at the top level or it
could be under backup mastersmaster
- ServerName of the current master must not be null.KeeperException
public boolean hasMaster()
public static ZooKeeperProtos.Master parse(byte[] data) throws DeserializationException
data
- zookeeper data. may be nullDeserializationException
public static boolean deleteIfEquals(ZooKeeperWatcher zkw, String content)
zkw
- must not be nullcontent
- must not be null