public boolean isDisablingOrDisabledTable(final String tableName) { synchronized (this.cache) { return isDisablingTable(tableName) || isDisabledTable(tableName); } }
public boolean isEnabledOrDisablingTable(final String tableName) { synchronized (this.cache) { return isEnabledTable(tableName) || isDisablingTable(tableName); } }
/** * Gets a list of all the tables set as disabled in zookeeper. * * @return Set of disabled tables, empty Set if none * @throws org.apache.zookeeper.KeeperException */ public static Set<String> getDisabledTables(ZooKeeperWatcher zkw) throws KeeperException { return getAllTables(zkw, ZooKeeperProtos.Table.State.DISABLED); }
public boolean isDisabledOrEnablingTable(final String tableName) { synchronized (this.cache) { return isDisabledTable(tableName) || isEnablingTable(tableName); } }
try { if (state.equalsIgnoreCase("DISABLED")) { this.assignmentManager.getZKTable().setDisabledTable(tableName); } else if (state.equalsIgnoreCase("DISABLING")) { this.assignmentManager.getZKTable().setDisablingTable(tableName); } else if (state.equalsIgnoreCase("ENABLING")) { this.assignmentManager.getZKTable().setEnablingTable(tableName); } else if (state.equalsIgnoreCase("ENABLED")) { this.assignmentManager.getZKTable().setEnabledTable(tableName); } else { throw new ServiceException("Wrong state."); success = this.assignmentManager.getZKTable().isDisabledTable(tableName); } else if (state.equalsIgnoreCase("DISABLING")) { success = this.assignmentManager.getZKTable().isDisablingTable(tableName); } else if (state.equalsIgnoreCase("ENABLING")) { success = this.assignmentManager.getZKTable().isEnablingTable(tableName); } else if (state.equalsIgnoreCase("ENABLED")) { success = this.assignmentManager.getZKTable().isEnabledTable(tableName); + "', current state is " + this.assignmentManager.getZKTable().getTableState(tableName));
@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))); }
Set<String> enablingTables = ZKTable.getEnablingTables(watcher); Set<String> disabledOrEnablingTables = ZKTable.getDisabledTables(watcher); disabledOrEnablingTables.addAll(enablingTables); Set<String> disabledOrDisablingOrEnabling = ZKTable .getDisablingTables(watcher); disabledOrDisablingOrEnabling.addAll(disabledOrEnablingTables); && !getZKTable().isEnabledTable(tableName)) { setEnabledTable(tableName); && !getZKTable().isEnabledTable(tableName)) { setEnabledTable(tableName);
.getDisabledOrDisablingTables(watcher); disabledOrDisablingOrEnabling.addAll(ZKTable.getEnablingTables(watcher)); if (!zkTable.isEnabledTable(tableName)) { setEnabledTable(tableName);
boolean tablePresent = assignmentManager.getZKTable().isTablePresent( egi.getTableNameAsString()); if (!tablePresent) { boolean disabled = assignmentManager.getZKTable().isDisabledTable( egi.getTableNameAsString()); if (disabled) { return false; boolean disabling = assignmentManager.getZKTable().isDisablingTable( egi.getTableNameAsString()); if (disabling) {
@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); }
/** * Sets the specified table as ENABLING in zookeeper atomically If the table * isn't in DISABLED state, no operation is performed * * @param tableName * @return if the operation succeeds or not * @throws org.apache.zookeeper.KeeperException * unexpected zookeeper exception */ public boolean checkDisabledAndSetEnablingTable(final String tableName) throws KeeperException { synchronized (this.cache) { if (!isDisabledTable(tableName)) { return false; } setTableState(tableName, ZooKeeperProtos.Table.State.ENABLING); 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(); } }
/** * 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; } }
/** * Gets a list of all the tables set as disabled in zookeeper. * * @return Set of disabled tables, empty Set if none */ public Set<String> getDisabledTables() { Set<String> disabledTables = new HashSet<String>(); synchronized (this.cache) { Set<String> tables = this.cache.keySet(); for (String table : tables) { if (isDisabledTable(table)) disabledTables.add(table); } } return disabledTables; }
if (!zkTable.isEnablingTable(tableName) && !zkTable.isEnabledTable(tableName)) { LOG.debug("Setting table " + tableName + " to ENABLED state."); setEnabledTable(tableName);
Threads.setDaemonThreadRunning(timerUpdater.getThread(), server.getServerName() + ".timerUpdater"); this.zkTable = new ZKTable(this.watcher); this.maximumAttempts = this.server.getConfiguration().getInt( "wasp.assignment.maximum.attempts", 10);
if (childs != null && childs.size() > 0) { Set<String> disableTables = this.assignmentManager.getZKTable() .getDisabledTables(); StringBuilder tableNames = new StringBuilder(); for (FTable child : childs) { try { if (!this.assignmentManager.getZKTable() .checkEnabledAndSetDisablingTable(this.tableNameStr)) { LOG.info("Table " + tableNameStr + " isn't enabled; skipping disable");
/** * Recover the tables that were not fully moved to DISABLED state. These * tables are in DISABLING state when the master restarted/switched. * * @throws org.apache.zookeeper.KeeperException * @throws com.alibaba.wasp.TableNotFoundException * @throws java.io.IOException */ private void recoverTableInDisablingState() throws KeeperException, TableNotFoundException, IOException { Set<String> disablingTables = ZKTable.getDisablingTables(watcher); if (disablingTables.size() != 0) { for (String tableName : disablingTables) { // Recover by calling DisableTableHandler LOG.info("The table " + tableName + " is in DISABLING state. Hence recovering by moving the table" + " to DISABLED state."); new DisableTableHandler(this.server, this, tableName.getBytes(), (FMasterServices) this.server, true).process(); } } }
try { if (!this.assignmentManager.getZKTable() .checkDisabledAndSetEnablingTable(this.tableNameStr)) { LOG.info("Table " + tableNameStr + " isn't disabled; skipping enable");
if (!this.assignmentManager.getZKTable().checkAndSetEnablingTable( tableName)) throw new TableExistsException(tableName);