private boolean isConnectionVisibleToAllNodes(ConnectorId connectorId) { for (TestingPrestoServer server : servers) { server.refreshNodes(); Set<Node> activeNodesWithConnector = server.getActiveNodesWithConnector(connectorId); if (activeNodesWithConnector.size() != servers.size()) { return false; } } return true; }
private boolean allNodesGloballyVisible() { for (TestingPrestoServer server : servers) { AllNodes allNodes = server.refreshNodes(); if (!allNodes.getInactiveNodes().isEmpty() || (allNodes.getActiveNodes().size() != servers.size())) { return false; } } return true; }
public void refreshNodes() { AllNodes allNodes; do { try { MILLISECONDS.sleep(10); } catch (InterruptedException e) { Thread.currentThread().interrupt(); break; } allNodes = server.refreshNodes(); } while (allNodes.getActiveNodes().isEmpty()); }
static void waitForNodeRefresh(TestingPrestoServer server) throws InterruptedException { long start = System.nanoTime(); while (server.refreshNodes().getActiveNodes().size() < 1) { assertLessThan(nanosSince(start), new Duration(10, SECONDS)); MILLISECONDS.sleep(10); } }
@Test public void testInitializationTimeout() throws Exception { try (DistributedQueryRunner queryRunner = TpchQueryRunnerBuilder.builder() .setCoordinatorProperties(ImmutableMap.<String, String>builder() .put("query-manager.initialization-required-workers", "5") .put("query-manager.initialization-timeout", "1ns") .build()) .setNodeCount(4) .build()) { queryRunner.execute("SELECT 1"); assertEquals(queryRunner.getCoordinator().refreshNodes().getActiveNodes().size(), 4); } }
private void waitForNodes(int numberOfNodes) throws InterruptedException { DistributedQueryRunner queryRunner = (DistributedQueryRunner) getQueryRunner(); long start = System.nanoTime(); while (queryRunner.getCoordinator().refreshNodes().getActiveNodes().size() < numberOfNodes) { assertLessThan(nanosSince(start), new Duration(10, SECONDS)); MILLISECONDS.sleep(10); } } }
@Test public void testInsufficientWorkerNodesAfterDrop() throws Exception { try (DistributedQueryRunner queryRunner = TpchQueryRunnerBuilder.builder() .setCoordinatorProperties(ImmutableMap.<String, String>builder() .put("query-manager.required-workers", "4") .put("query-manager.required-workers-max-wait", "1ns") .build()) .setNodeCount(4) .build()) { queryRunner.execute("SELECT 1"); assertEquals(queryRunner.getCoordinator().refreshNodes().getActiveNodes().size(), 4); try { // Query should still be allowed to run if active workers drop down below the minimum required nodes queryRunner.getServers().get(0).close(); assertEquals(queryRunner.getCoordinator().refreshNodes().getActiveNodes().size(), 3); queryRunner.execute("SELECT 1"); } catch (RuntimeException e) { assertEquals(e.getMessage(), "Insufficient active worker nodes. Waited 1.00ns for at least 4 workers, but only 3 workers are active"); } } } }
@Test public void testSufficientInitialWorkerNodes() throws Exception { try (DistributedQueryRunner queryRunner = TpchQueryRunnerBuilder.builder() .setSingleCoordinatorProperty("query-manager.initialization-required-workers", "4") .setNodeCount(4) .build()) { queryRunner.execute("SELECT 1"); assertEquals(queryRunner.getCoordinator().refreshNodes().getActiveNodes().size(), 4); // Query should still be allowed to run if active workers drop down below the minimum required nodes queryRunner.getServers().get(0).close(); assertEquals(queryRunner.getCoordinator().refreshNodes().getActiveNodes().size(), 3); queryRunner.execute("SELECT 1"); } }
server.installPlugin(new BlackHolePlugin()); server.createCatalog("blackhole", "blackhole"); server.refreshNodes();
private boolean isConnectionVisibleToAllNodes(ConnectorId connectorId) { for (TestingPrestoServer server : servers) { server.refreshNodes(); Set<Node> activeNodesWithConnector = server.getActiveNodesWithConnector(connectorId); if (activeNodesWithConnector.size() != servers.size()) { return false; } } return true; }
public void refreshNodes() { AllNodes allNodes; do { try { MILLISECONDS.sleep(10); } catch (InterruptedException e) { Thread.currentThread().interrupt(); break; } allNodes = server.refreshNodes(); } while (allNodes.getActiveNodes().isEmpty()); }
private boolean allNodesGloballyVisible() { for (TestingPrestoServer server : servers) { AllNodes allNodes = server.refreshNodes(); if (!allNodes.getInactiveNodes().isEmpty() || (allNodes.getActiveNodes().size() != servers.size())) { return false; } } return true; }
static void waitForNodeRefresh(TestingPrestoServer server) throws InterruptedException { long start = System.nanoTime(); while (server.refreshNodes().getActiveNodes().size() < 1) { assertLessThan(nanosSince(start), new Duration(10, SECONDS)); MILLISECONDS.sleep(10); } }
@Test public void testInitializationTimeout() throws Exception { try (DistributedQueryRunner queryRunner = TpchQueryRunnerBuilder.builder() .setCoordinatorProperties(ImmutableMap.<String, String>builder() .put("query-manager.initialization-required-workers", "5") .put("query-manager.initialization-timeout", "1ns") .build()) .setNodeCount(4) .build()) { queryRunner.execute("SELECT 1"); assertEquals(queryRunner.getCoordinator().refreshNodes().getActiveNodes().size(), 4); } }
@Test public void testInsufficientWorkerNodesAfterDrop() throws Exception { try (DistributedQueryRunner queryRunner = TpchQueryRunnerBuilder.builder() .setCoordinatorProperties(ImmutableMap.<String, String>builder() .put("query-manager.required-workers", "4") .put("query-manager.required-workers-max-wait", "1ns") .build()) .setNodeCount(4) .build()) { queryRunner.execute("SELECT 1"); assertEquals(queryRunner.getCoordinator().refreshNodes().getActiveNodes().size(), 4); try { // Query should still be allowed to run if active workers drop down below the minimum required nodes queryRunner.getServers().get(0).close(); assertEquals(queryRunner.getCoordinator().refreshNodes().getActiveNodes().size(), 3); queryRunner.execute("SELECT 1"); } catch (RuntimeException e) { assertEquals(e.getMessage(), "Insufficient active worker nodes. Waited 1.00ns for at least 4 workers, but only 3 workers are active"); } } } }
@Test public void testSufficientInitialWorkerNodes() throws Exception { try (DistributedQueryRunner queryRunner = TpchQueryRunnerBuilder.builder() .setSingleCoordinatorProperty("query-manager.initialization-required-workers", "4") .setNodeCount(4) .build()) { queryRunner.execute("SELECT 1"); assertEquals(queryRunner.getCoordinator().refreshNodes().getActiveNodes().size(), 4); // Query should still be allowed to run if active workers drop down below the minimum required nodes queryRunner.getServers().get(0).close(); assertEquals(queryRunner.getCoordinator().refreshNodes().getActiveNodes().size(), 3); queryRunner.execute("SELECT 1"); } }