下面列出了org.apache.zookeeper.Watcher.Event.KeeperState#Disconnected ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void process(WatchedEvent event) {
LOGGER.debug("Got Event from ZooKeeper: " + event + " Connection state: " + event.getState());
if (event.getState() == KeeperState.Expired) {
previousState = KeeperState.Disconnected;
goToSlaveMode();
try {
init();
} catch (IOException | ClusterManagerException e) {
LOGGER.error("Failed to init after session timeout", e);
}
return;
}
if (event.getState() != KeeperState.SyncConnected) {
previousState = event.getState();
goToSlaveMode();
return;
}
handleStateChange(event);
}
@Test
public void testProcess2() {
WatchedEvent event = new WatchedEvent(EventType.None, KeeperState.Disconnected, null);
sessionWatcher.process(event);
assertFalse(sessionWatcher.isShutdownStarted());
assertEquals(shutdownService.getExitCode(), 0);
}
/**
* Simulate a zk state change by calling {@link ZkClient#process(WatchedEvent)} directly
*/
public static void simulateZkStateReconnected(RealmAwareZkClient client) {
ZkClient zkClient = (ZkClient) client;
WatchedEvent event = new WatchedEvent(EventType.None, KeeperState.Disconnected, null);
zkClient.process(event);
event = new WatchedEvent(EventType.None, KeeperState.SyncConnected, null);
zkClient.process(event);
}
/**
* Simulate a zk state change by calling {@link ZkClient#process(WatchedEvent)} directly
*/
public static void simulateZkStateReconnected(RealmAwareZkClient client) {
ZkClient zkClient = (ZkClient) client;
WatchedEvent event = new WatchedEvent(EventType.None, KeeperState.Disconnected, null);
zkClient.process(event);
event = new WatchedEvent(EventType.None, KeeperState.SyncConnected, null);
zkClient.process(event);
}
private synchronized void reset() {
clientConnected = new CountDownLatch(1);
state = KeeperState.Disconnected;
connected = false;
expired = false;
}
private synchronized void reset() {
clientConnected = new CountDownLatch(1);
state = KeeperState.Disconnected;
connected = false;
expired = false;
}
@Override
public void handleStateChanged(KeeperState state) {
if (state == KeeperState.Disconnected) {
count++;
}
}
/**
* 回调函数
*/
@Override
public void process(WatchedEvent event) {
//
// 结点更新时
//
if (event.getType() == EventType.NodeDataChanged) {
try {
LOGGER.info("============GOT UPDATE EVENT " + event.toString() + ": (" + monitorPath + "," + keyName
+ "," + disConfigTypeEnum.getModelName() + ")======================");
// 调用回调函数, 回调函数里会重新进行监控
callback();
} catch (Exception e) {
LOGGER.error("monitor node exception. " + monitorPath, e);
}
}
//
// 结点断开连接,这时不要进行处理
//
if (event.getState() == KeeperState.Disconnected) {
if (!debug) {
LOGGER.warn("============GOT Disconnected EVENT " + event.toString() + ": (" + monitorPath + ","
+ keyName + "," + disConfigTypeEnum.getModelName() + ")======================");
} else {
LOGGER.debug("============DEBUG MODE: GOT Disconnected EVENT " + event.toString() + ": (" +
monitorPath +
"," +
keyName +
"," + disConfigTypeEnum.getModelName() + ")======================");
}
}
//
// session expired,需要重新关注哦
//
if (event.getState() == KeeperState.Expired) {
if (!debug) {
LOGGER.error("============GOT Expired " + event.toString() + ": (" + monitorPath + "," + keyName
+ "," + disConfigTypeEnum.getModelName() + ")======================");
// 重新连接
ZookeeperMgr.getInstance().reconnect();
callback();
} else {
LOGGER.debug("============DEBUG MODE: GOT Expired " + event.toString() + ": (" + monitorPath + ","
+ "" + keyName + "," + disConfigTypeEnum.getModelName() + ")======================");
}
}
}
/**
* 回调函数
*/
@Override
public void process(WatchedEvent event) {
//
// 结点更新时
//
if (event.getType() == EventType.NodeDataChanged) {
try {
LOGGER.info("============GOT UPDATE EVENT " + event.toString() + ": (" + monitorPath + "," + keyName
+ "," + disConfigTypeEnum.getModelName() + ")======================");
// 调用回调函数, 回调函数里会重新进行监控
callback();
} catch (Exception e) {
LOGGER.error("monitor node exception. " + monitorPath, e);
}
}
//
// 结点断开连接,这时不要进行处理
//
if (event.getState() == KeeperState.Disconnected) {
if (!debug) {
LOGGER.warn("============GOT Disconnected EVENT " + event.toString() + ": (" + monitorPath + ","
+ keyName + "," + disConfigTypeEnum.getModelName() + ")======================");
} else {
LOGGER.debug("============DEBUG MODE: GOT Disconnected EVENT " + event.toString() + ": (" +
monitorPath +
"," +
keyName +
"," + disConfigTypeEnum.getModelName() + ")======================");
}
}
//
// session expired,需要重新关注哦
//
if (event.getState() == KeeperState.Expired) {
if (!debug) {
LOGGER.error("============GOT Expired " + event.toString() + ": (" + monitorPath + "," + keyName
+ "," + disConfigTypeEnum.getModelName() + ")======================");
// 重新连接
ZookeeperMgr.getInstance().reconnect();
callback();
} else {
LOGGER.debug("============DEBUG MODE: GOT Expired " + event.toString() + ": (" + monitorPath + ","
+ "" + keyName + "," + disConfigTypeEnum.getModelName() + ")======================");
}
}
}