You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2013/01/25 03:38:31 UTC
svn commit: r1438298 - in /hbase/trunk/hbase-server/src:
main/java/org/apache/hadoop/hbase/master/HMaster.java
main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java
test/java/org/apache/hadoop/hbase/client/TestAdmin.java
Author: mbertozzi
Date: Fri Jan 25 02:38:31 2013
New Revision: 1438298
URL: http://svn.apache.org/viewvc?rev=1438298&view=rev
Log:
HBASE-7657 Make ModifyTableHandler synchronous (Himanshu Vashishtha)
Modified:
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java
hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1438298&r1=1438297&r2=1438298&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Fri Jan 25 02:38:31 2013
@@ -1772,9 +1772,8 @@ Server {
if (cpHost != null) {
cpHost.preModifyTable(tableName, descriptor);
}
- TableEventHandler tblHandle = new ModifyTableHandler(tableName, descriptor, this, this);
- this.executorService.submit(tblHandle);
- tblHandle.waitForPersist();
+ new ModifyTableHandler(tableName, descriptor, this, this).process();
+
if (cpHost != null) {
cpHost.postModifyTable(tableName, descriptor);
}
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java?rev=1438298&r1=1438297&r2=1438298&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/handler/TableEventHandler.java Fri Jan 25 02:38:31 2013
@@ -61,7 +61,6 @@ public abstract class TableEventHandler
protected final MasterServices masterServices;
protected final byte [] tableName;
protected final String tableNameStr;
- protected boolean persistedToZk = false;
public TableEventHandler(EventType eventType, byte [] tableName, Server server,
MasterServices masterServices)
@@ -111,10 +110,7 @@ public abstract class TableEventHandler
LOG.error("Error manipulating table " + Bytes.toString(tableName), e);
} catch (KeeperException e) {
LOG.error("Error manipulating table " + Bytes.toString(tableName), e);
- } finally {
- // notify the waiting thread that we're done persisting the request
- setPersist();
- }
+ }
}
public boolean reOpenAllRegions(List<HRegionInfo> regions) throws IOException {
@@ -165,29 +161,6 @@ public abstract class TableEventHandler
return done;
}
- /**
- * Table modifications are processed asynchronously, but provide an API for
- * you to query their status.
- *
- * @throws IOException
- */
- public synchronized void waitForPersist() throws IOException {
- if (!persistedToZk) {
- try {
- wait();
- } catch (InterruptedException ie) {
- throw (IOException) new InterruptedIOException().initCause(ie);
- }
- assert persistedToZk;
- }
- }
-
- private synchronized void setPersist() {
- if (!persistedToZk) {
- persistedToZk = true;
- notify();
- }
- }
/**
* @return Table descriptor for this table
Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java?rev=1438298&r1=1438297&r2=1438298&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java Fri Jan 25 02:38:31 2013
@@ -385,7 +385,7 @@ public class TestAdmin {
copy.setValue(key, key);
boolean expectedException = false;
try {
- modifyTable(tableName, copy);
+ admin.modifyTable(tableName, copy);
} catch (TableNotDisabledException re) {
expectedException = true;
}
@@ -474,7 +474,7 @@ public class TestAdmin {
copy.setValue(key, key);
boolean expectedException = false;
try {
- modifyTable(tableName, copy);
+ admin.modifyTable(tableName, copy);
} catch (TableNotDisabledException re) {
expectedException = true;
}
@@ -486,32 +486,6 @@ public class TestAdmin {
}
/**
- * Modify table is async so wait on completion of the table operation in master.
- * @param tableName
- * @param htd
- * @throws IOException
- */
- private void modifyTable(final byte [] tableName, final HTableDescriptor htd)
- throws IOException {
- MasterServices services = TEST_UTIL.getMiniHBaseCluster().getMaster();
- ExecutorService executor = services.getExecutorService();
- AtomicBoolean done = new AtomicBoolean(false);
- executor.registerListener(EventType.C_M_MODIFY_TABLE, new DoneListener(done));
- this.admin.modifyTable(tableName, htd);
- while (!done.get()) {
- //noinspection SynchronizationOnLocalVariableOrMethodParameter
- synchronized (done) {
- try {
- done.wait(100);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- executor.unregisterListener(EventType.C_M_MODIFY_TABLE);
- }
-
- /**
* Listens for when an event is done in Master.
*/
static class DoneListener implements EventHandler.EventHandlerListener {