/** {@inheritDoc} */ @Override public void processOutStream(int type, BinaryRawWriterEx writer) throws IgniteCheckedException { switch (type) { case OP_GET_ENABLED_EVENTS: writeEventTypes(events.enabledEvents(), writer); break; default: super.processOutStream(type, writer); } }
/** * @param g Grid. * @return Enabled events. */ private int[] getEnabledEvents(Ignite g) { return g.events().enabledEvents(); }
/** * Node fail itself. * * @throws Exception If failed. */ @Test public void testMassiveFailSelfKill() throws Exception { startGrids(5); grid(0).events().enabledEvents(); CountDownLatch latch = new CountDownLatch(1); grid(0).events().localListen((e) -> { DiscoveryEvent evt = (DiscoveryEvent)e; if (evt.eventNode().equals(compromisedNode)) latch.countDown(); return true; }, EventType.EVT_NODE_FAILED); compromisedNode = (TcpDiscoveryNode)grid(2).localNode(); for (int i = 3; i < 5; i++) failedAddrs.addAll(((TcpDiscoveryNode)grid(i).localNode()).socketAddresses()); System.out.println(">> Start failing nodes"); forceFailConnectivity = true; assert latch.await(waitTime(), TimeUnit.MILLISECONDS); assertEquals(4, grid(0).cluster().forServers().nodes().size()); }
/** * */ private void doFailNodes(boolean simulateNodeFailure) throws Exception { startGrids(5); grid(0).events().enabledEvents(); failedNodes = new HashSet<>(Arrays.asList(grid(3).cluster().localNode(), grid(4).cluster().localNode())); CountDownLatch latch = new CountDownLatch(failedNodes.size()); grid(0).events().localListen(e -> { DiscoveryEvent evt = (DiscoveryEvent)e; if (failedNodes.contains(evt.eventNode())) latch.countDown(); return true; }, EventType.EVT_NODE_FAILED); compromisedNode = (TcpDiscoveryNode)grid(2).localNode(); for (int i = 3; i < 5; i++) failedAddrs.addAll(((TcpDiscoveryNode)grid(i).localNode()).socketAddresses()); System.out.println(">> Start failing nodes"); forceFailConnectivity = true; if (simulateNodeFailure) { for (int i = 3; i < 5; i++) ((TcpDiscoverySpi)grid(i).configuration().getDiscoverySpi()).simulateNodeFailure(); } assert latch.await(waitTime(), TimeUnit.MILLISECONDS); assertEquals(3, grid(0).cluster().forServers().nodes().size()); }
/** * When connectivity restored, no topology changes will be applied. * * @throws Exception If failed. */ @Test public void testMassiveFailAndRecovery() throws Exception { startGrids(5); grid(0).events().enabledEvents(); CountDownLatch latch = new CountDownLatch(1); grid(0).events().localListen(e -> { DiscoveryEvent evt = (DiscoveryEvent)e; if (evt.eventNode().equals(compromisedNode)) latch.countDown(); return true; }, EventType.EVT_NODE_FAILED); compromisedNode = (TcpDiscoveryNode)grid(2).localNode(); for (int i = 3; i < 5; i++) failedAddrs.addAll(((TcpDiscoveryNode)grid(i).localNode()).socketAddresses()); System.out.println(">> Start failing nodes"); forceFailConnectivity = true; doSleep(timeout / 4); // wait 1 try forceFailConnectivity = false; System.out.println(">> Stop failing nodes"); assert !latch.await(waitTime(), TimeUnit.MILLISECONDS); // Topology is not changed assertEquals(5, grid(0).cluster().forServers().nodes().size()); assertEquals(5, grid(0).cluster().topologyVersion()); }
/** * @throws Exception If failed. */ @Test public void testEnableDisable() throws Exception { inclEvtTypes = null; try { Ignite g = startGrid(); IgniteEvents evts = g.events(); evts.enableLocal(EVT_CACHE_OBJECT_PUT); evts.disableLocal(EVT_CACHE_OBJECT_PUT); for (int evtType : evts.enabledEvents()) assertFalse(evtType == EVT_CACHE_OBJECT_PUT); } finally { stopAllGrids(); } }
/** {@inheritDoc} */ @Override public void processOutStream(int type, BinaryRawWriterEx writer) throws IgniteCheckedException { switch (type) { case OP_GET_ENABLED_EVENTS: writeEventTypes(events.enabledEvents(), writer); break; default: super.processOutStream(type, writer); } }