private boolean allNodesGloballyVisible() { for (TestingPrestoServer server : servers) { AllNodes allNodes = server.refreshNodes(); if (!allNodes.getInactiveNodes().isEmpty() || (allNodes.getActiveNodes().size() != servers.size())) { return false; } } return true; }
@Managed public int getInactiveNodeCount() { return getAllNodes().getInactiveNodes().size(); }
@Managed public int getInactiveNodeCount() { return getAllNodes().getInactiveNodes().size(); }
@Override public Set<Node> getNodes(NodeState state) { switch (state) { case ACTIVE: return getAllNodes().getActiveNodes(); case INACTIVE: return getAllNodes().getInactiveNodes(); case SHUTTING_DOWN: return getAllNodes().getShuttingDownNodes(); default: throw new IllegalArgumentException("Unknown node state " + state); } }
@Override public Set<Node> getNodes(NodeState state) { switch (state) { case ACTIVE: return getAllNodes().getActiveNodes(); case INACTIVE: return getAllNodes().getInactiveNodes(); case SHUTTING_DOWN: return getAllNodes().getShuttingDownNodes(); default: throw new IllegalArgumentException("Unknown node state " + state); } }
@Override public Set<Node> getNodes(NodeState state) { switch (state) { case ACTIVE: return getAllNodes().getActiveNodes(); case INACTIVE: return getAllNodes().getInactiveNodes(); case SHUTTING_DOWN: return getAllNodes().getShuttingDownNodes(); default: throw new IllegalArgumentException("Unknown node state " + state); } }
@Override public Set<Node> getNodes(NodeState state) { switch (state) { case ACTIVE: return getAllNodes().getActiveNodes(); case INACTIVE: return getAllNodes().getInactiveNodes(); case SHUTTING_DOWN: return getAllNodes().getShuttingDownNodes(); default: throw new IllegalArgumentException("Unknown node state " + state); } }
@Test(timeOut = 60000) public void testNodeChangeListener() throws Exception { DiscoveryNodeManager manager = new DiscoveryNodeManager(selector, nodeInfo, new NoOpFailureDetector(), expectedVersion, testHttpClient, internalCommunicationConfig); try { manager.startPollingNodeStates(); BlockingQueue<AllNodes> notifications = new ArrayBlockingQueue<>(100); manager.addNodeChangeListener(notifications::add); AllNodes allNodes = notifications.take(); assertEquals(allNodes.getActiveNodes(), activeNodes); assertEquals(allNodes.getInactiveNodes(), inactiveNodes); selector.announceNodes(ImmutableSet.of(currentNode), ImmutableSet.of(coordinator)); allNodes = notifications.take(); assertEquals(allNodes.getActiveNodes(), ImmutableSet.of(currentNode, coordinator)); assertEquals(allNodes.getActiveCoordinators(), ImmutableSet.of(coordinator)); selector.announceNodes(activeNodes, inactiveNodes); allNodes = notifications.take(); assertEquals(allNodes.getActiveNodes(), activeNodes); assertEquals(allNodes.getInactiveNodes(), inactiveNodes); } finally { manager.stop(); } }
@Test(timeOut = 60000) public void testNodeChangeListener() throws Exception { DiscoveryNodeManager manager = new DiscoveryNodeManager(selector, nodeInfo, new NoOpFailureDetector(), expectedVersion, testHttpClient, internalCommunicationConfig); try { manager.startPollingNodeStates(); BlockingQueue<AllNodes> notifications = new ArrayBlockingQueue<>(100); manager.addNodeChangeListener(notifications::add); AllNodes allNodes = notifications.take(); assertEquals(allNodes.getActiveNodes(), activeNodes); assertEquals(allNodes.getInactiveNodes(), inactiveNodes); selector.announceNodes(ImmutableSet.of(currentNode), ImmutableSet.of(coordinator)); allNodes = notifications.take(); assertEquals(allNodes.getActiveNodes(), ImmutableSet.of(currentNode, coordinator)); assertEquals(allNodes.getActiveCoordinators(), ImmutableSet.of(coordinator)); selector.announceNodes(activeNodes, inactiveNodes); allNodes = notifications.take(); assertEquals(allNodes.getActiveNodes(), activeNodes); assertEquals(allNodes.getInactiveNodes(), inactiveNodes); } finally { manager.stop(); } }
@Override public RecordCursor cursor(ConnectorTransactionHandle transactionHandle, ConnectorSession session, TupleDomain<Integer> constraint) { Builder table = InMemoryRecordSet.builder(NODES_TABLE); AllNodes allNodes = nodeManager.getAllNodes(); addRows(table, allNodes.getActiveNodes(), ACTIVE); addRows(table, allNodes.getInactiveNodes(), INACTIVE); addRows(table, allNodes.getShuttingDownNodes(), SHUTTING_DOWN); return table.build().cursor(); }
@Override public RecordCursor cursor(ConnectorTransactionHandle transactionHandle, ConnectorSession session, TupleDomain<Integer> constraint) { Builder table = InMemoryRecordSet.builder(NODES_TABLE); AllNodes allNodes = nodeManager.getAllNodes(); addRows(table, allNodes.getActiveNodes(), ACTIVE); addRows(table, allNodes.getInactiveNodes(), INACTIVE); addRows(table, allNodes.getShuttingDownNodes(), SHUTTING_DOWN); return table.build().cursor(); }
@Test public void testGetAllNodes() { DiscoveryNodeManager manager = new DiscoveryNodeManager(selector, nodeInfo, new NoOpFailureDetector(), expectedVersion, testHttpClient, internalCommunicationConfig); try { AllNodes allNodes = manager.getAllNodes(); Set<Node> activeNodes = allNodes.getActiveNodes(); assertEqualsIgnoreOrder(activeNodes, this.activeNodes); for (Node actual : activeNodes) { for (Node expected : this.activeNodes) { assertNotSame(actual, expected); } } assertEqualsIgnoreOrder(activeNodes, manager.getNodes(ACTIVE)); Set<Node> inactiveNodes = allNodes.getInactiveNodes(); assertEqualsIgnoreOrder(inactiveNodes, this.inactiveNodes); for (Node actual : inactiveNodes) { for (Node expected : this.inactiveNodes) { assertNotSame(actual, expected); } } assertEqualsIgnoreOrder(inactiveNodes, manager.getNodes(INACTIVE)); } finally { manager.stop(); } }
@Test public void testGetAllNodes() { DiscoveryNodeManager manager = new DiscoveryNodeManager(selector, nodeInfo, new NoOpFailureDetector(), expectedVersion, testHttpClient, internalCommunicationConfig); try { AllNodes allNodes = manager.getAllNodes(); Set<Node> activeNodes = allNodes.getActiveNodes(); assertEqualsIgnoreOrder(activeNodes, this.activeNodes); for (Node actual : activeNodes) { for (Node expected : this.activeNodes) { assertNotSame(actual, expected); } } assertEqualsIgnoreOrder(activeNodes, manager.getNodes(ACTIVE)); Set<Node> inactiveNodes = allNodes.getInactiveNodes(); assertEqualsIgnoreOrder(inactiveNodes, this.inactiveNodes); for (Node actual : inactiveNodes) { for (Node expected : this.inactiveNodes) { assertNotSame(actual, expected); } } assertEqualsIgnoreOrder(inactiveNodes, manager.getNodes(INACTIVE)); } finally { manager.stop(); } }