return; versionOfClosingNode = ZKAssign.createNodeClosing(watcher, entityGroup, state.getServerName()); if (versionOfClosingNode == -1) {
ZKAssign.createNodeClosing(zkw, egi, new ServerName("any.old.server", 1234, -1));
/** * Test if close entityGroup can handle ZK closing node version mismatch * * @throws java.io.IOException * @throws org.apache.zookeeper.KeeperException.NodeExistsException * @throws org.apache.zookeeper.KeeperException * @throws com.alibaba.wasp.DeserializationException */ @Test public void testZKClosingNodeVersionMismatch() throws IOException, NodeExistsException, KeeperException, DeserializationException { final Server server = new MockServer(WTU); final MockFServerServices rss = new MockFServerServices(); FTable ftd = TEST_FTD; final EntityGroupInfo egi = TEST_EGI; // open a entityGroup first so that it can be closed later openEntityGroup(server, rss, ftd, egi); int versionOfClosingNode = ZKAssign.createNodeClosing( server.getZooKeeper(), egi, server.getServerName()); CloseEntityGroupHandler handler = new CloseEntityGroupHandler(server, rss, egi, false, true, versionOfClosingNode + 1, EventType.M_FSERVER_CLOSE_ENTITYGROUP); handler.process(); EntityGroupTransaction rt = EntityGroupTransaction.parseFrom(ZKAssign .getData(server.getZooKeeper(), egi.getEncodedName())); assertTrue(rt.getEventType().equals(EventType.M_ZK_ENTITYGROUP_CLOSING)); }
/** * Test if the entityGroup can be closed properly * * @throws java.io.IOException * @throws org.apache.zookeeper.KeeperException.NodeExistsException * @throws org.apache.zookeeper.KeeperException * @throws com.alibaba.wasp.DeserializationException */ @Test public void testCloseEntityGroup() throws IOException, NodeExistsException, KeeperException, DeserializationException { final Server server = new MockServer(WTU); final MockFServerServices rss = new MockFServerServices(); FTable htd = TEST_FTD; EntityGroupInfo egi = TEST_EGI; openEntityGroup(server, rss, htd, egi); int versionOfClosingNode = ZKAssign.createNodeClosing( server.getZooKeeper(), egi, server.getServerName()); CloseEntityGroupHandler handler = new CloseEntityGroupHandler(server, rss, egi, false, true, versionOfClosingNode, EventType.M_FSERVER_CLOSE_ENTITYGROUP); handler.process(); EntityGroupTransaction rt = EntityGroupTransaction.parseFrom(ZKAssign .getData(server.getZooKeeper(), egi.getEncodedName())); assertTrue(rt.getEventType() .equals(EventType.FSERVER_ZK_ENTITYGROUP_CLOSED)); }