public boolean isEnabledOrDisablingTable(final String tableName) { synchronized (this.cache) { return isEnabledTable(tableName) || isDisablingTable(tableName); } }
/** * Sets the specified table as DISABLING in zookeeper atomically If the table * isn't in ENABLED state, no operation is performed * * @param tableName * @return if the operation succeeds or not * @throws org.apache.zookeeper.KeeperException * unexpected zookeeper exception */ public boolean checkEnabledAndSetDisablingTable(final String tableName) throws KeeperException { synchronized (this.cache) { if (this.cache.get(tableName) != null && !isEnabledTable(tableName)) { return false; } setTableState(tableName, ZooKeeperProtos.Table.State.DISABLING); return true; } }
@Override public void process() { try { LOG.info("Handling table operation " + eventType + " on table " + tableNameStr); List<EntityGroupInfo> egis = FMetaReader.getTableEntityGroups( server.getConfiguration(), Bytes.toBytes(tableNameStr)); handleTableOperation(egis); if (eventType.isOnlineSchemaChangeSupported() && this.fMasterServices.getAssignmentManager().getZKTable() .isEnabledTable(tableNameStr)) { if (reOpenAllEntityGroups(egis)) { LOG.info("Completed table operation " + eventType + " on table " + tableNameStr); } else { LOG.warn("Error on reopening the entityGroups"); } } } catch (IOException e) { LOG.error("Error manipulating table " + tableNameStr, e); } catch (KeeperException e) { LOG.error("Error manipulating table " + tableNameStr, e); } finally { // notify the waiting thread that we're done persisting the request setPersist(); } }
if (!zkTable.isEnabledTable(tableName)) { setEnabledTable(tableName);
&& !getZKTable().isEnabledTable(tableName)) { setEnabledTable(tableName); && !getZKTable().isEnabledTable(tableName)) { setEnabledTable(tableName);
success = this.assignmentManager.getZKTable().isEnablingTable(tableName); } else if (state.equalsIgnoreCase("ENABLED")) { success = this.assignmentManager.getZKTable().isEnabledTable(tableName);
&& !zkTable.isEnabledTable(tableName)) { LOG.debug("Setting table " + tableName + " to ENABLED state."); setEnabledTable(tableName);
@Test(timeout = 36000) public void testEnableDisableAddColumnDeleteColumn() throws Exception { ZooKeeperWatcher zkw = WaspTestingUtility.getZooKeeperWatcher(TEST_UTIL); byte[] tableName = Bytes.toBytes("testMasterAdmin"); TEST_UTIL.createTable(tableName); ZKTable zkTable = new ZKTable(zkw); while (!zkTable.isEnabledTable("testMasterAdmin")) { Thread.sleep(10); } admin.disableTable(tableName); admin.addColumn(tableName, new Field(FieldKeyWord.REQUIRED, "cf", "col2", DataType.STRING, null)); admin.enableTable(tableName); try { admin.deleteColumn(tableName, Bytes.toBytes("col2")); } catch (TableNotDisabledException e) { LOG.info(e); } admin.disableTable(tableName); admin.deleteTable(tableName); }
@Test public void testDisableEnableTableHasChilds() throws IOException, InterruptedException { final byte[] rootTable = Bytes.toBytes("testDisableTableHasChildsRoot"); final byte[] childTable = Bytes.toBytes("testDisableTableHasChildsChild"); TEST_UTIL.createTable(rootTable); TEST_UTIL.waitTableAvailable(rootTable); TEST_UTIL.createChildTable(rootTable, childTable); TEST_UTIL.waitTableEnabled(childTable, 5000); try { admin.disableTable(rootTable); } catch (Exception e) { assertTrue(e instanceof NotAllChildTableDisableException); } assertTrue("Table must be enabled.", TEST_UTIL.getWaspCluster().getMaster().getAssignmentManager() .getZKTable().isEnabledTable(Bytes.toString(rootTable))); }
assertTrue(m.assignmentManager.getZKTable().isEnabledTable( Bytes.toString(TABLENAME))); TEST_UTIL.loadTable(ft);
@Test public void testDisableAndEnableTable() throws IOException { final byte[] table = Bytes.toBytes("testDisableAndEnableTable"); TEST_UTIL.createTable(table); admin.disableTable(table); assertTrue("Table must be disabled.", TEST_UTIL.getWaspCluster().getMaster().getAssignmentManager() .getZKTable().isDisabledTable(Bytes.toString(table))); admin.enableTable(table); assertTrue("Table must be enabled.", TEST_UTIL.getWaspCluster().getMaster().getAssignmentManager() .getZKTable().isEnabledTable(Bytes.toString(table))); }
@Test public void testCreateTable() throws IOException { FTable[] tables = admin.listTables(); int numTables = tables.length; TEST_UTIL.createTable(Bytes.toBytes("testCreateTable")); tables = admin.listTables(); assertEquals(numTables + 1, tables.length); assertTrue("Table must be enabled.", TEST_UTIL.getWaspCluster().getMaster() .getAssignmentManager().getZKTable().isEnabledTable("testCreateTable")); }
@Test public void testDisableAndEnableTables() throws IOException { final byte[] table1 = Bytes.toBytes("testDisableAndEnableTable1"); final byte[] table2 = Bytes.toBytes("testDisableAndEnableTable2"); TEST_UTIL.createTable(table1); TEST_UTIL.createTable(table2); admin.disableTables("testDisableAndEnableTable.*"); assertTrue("Table must be disabled.", TEST_UTIL.getWaspCluster().getMaster().getAssignmentManager() .getZKTable().isDisabledTable(Bytes.toString(table1))); assertTrue("Table must be disabled.", TEST_UTIL.getWaspCluster().getMaster().getAssignmentManager() .getZKTable().isDisabledTable(Bytes.toString(table2))); admin.enableTables("testDisableAndEnableTable.*"); assertTrue("Table must be enabled.", TEST_UTIL.getWaspCluster().getMaster().getAssignmentManager() .getZKTable().isEnabledTable(Bytes.toString(table1))); assertTrue("Table must be enabled.", TEST_UTIL.getWaspCluster().getMaster().getAssignmentManager() .getZKTable().isEnabledTable(Bytes.toString(table2))); }