protected static KuduTable createTable( String tableName, Schema schema, CreateTableBuilder builder) { LOG.info("Creating table: {}", tableName); Deferred<KuduTable> d = client.createTable(tableName, schema, builder); final AtomicBoolean gotError = new AtomicBoolean(false); d.addErrback( new Callback<Object, Object>() { @Override public Object call(Object arg) throws Exception { gotError.set(true); LOG.error("Error : " + arg); return null; } }); KuduTable table = null; try { table = d.join(DEFAULT_SLEEP); } catch (Exception e) { fail("Timed out"); } if (gotError.get()) { fail( "Got error during table creation, is the Kudu master running at " + masterAddresses + "?"); } tableNames.add(tableName); return table; }
/** * Wait up to DEFAULT_SLEEP for an expected count of TS to connect to the master * * @param expected How many TS are expected * @return true if there are at least as many TS as expected, otherwise false */ static boolean waitForTabletServers(int expected) throws Exception { int count = 0; Stopwatch stopwatch = new Stopwatch().start(); while (count < expected && stopwatch.elapsedMillis() < DEFAULT_SLEEP) { Thread.sleep(200); Deferred<ListTabletServersResponse> d = client.listTabletServers(); d.addErrback(defaultErrorCB); count = d.join(DEFAULT_SLEEP).getTabletServersCount(); } return count >= expected; }