You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by bu...@apache.org on 2015/07/13 18:14:47 UTC
[5/8] hbase git commit: HBASE-13415 Procedure v2 - Use nonces for
double submits from client (Stephen Yuan Jiang)
http://git-wip-us.apache.org/repos/asf/hbase/blob/951ec7a0/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDisableTableProcedure.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDisableTableProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDisableTableProcedure.java
index 0537ccc..6959af9 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDisableTableProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestDisableTableProcedure.java
@@ -24,6 +24,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.TableNotEnabledException;
@@ -34,7 +35,6 @@ import org.apache.hadoop.hbase.protobuf.generated.MasterProcedureProtos.DisableT
import org.apache.hadoop.hbase.testclassification.MasterTests;
import org.apache.hadoop.hbase.testclassification.MediumTests;
import org.apache.hadoop.hbase.util.Bytes;
-
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
@@ -49,6 +49,9 @@ public class TestDisableTableProcedure {
protected static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
+ private static long nonceGroup = HConstants.NO_NONCE;
+ private static long nonce = HConstants.NO_NONCE;
+
private static void setupConf(Configuration conf) {
conf.setInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS, 1);
}
@@ -71,6 +74,9 @@ public class TestDisableTableProcedure {
@Before
public void setup() throws Exception {
ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(getMasterProcedureExecutor(), false);
+ nonceGroup =
+ MasterProcedureTestingUtility.generateNonceGroup(UTIL.getHBaseCluster().getMaster());
+ nonce = MasterProcedureTestingUtility.generateNonce(UTIL.getHBaseCluster().getMaster());
}
@After
@@ -91,7 +97,7 @@ public class TestDisableTableProcedure {
// Disable the table
long procId = procExec.submitProcedure(
- new DisableTableProcedure(procExec.getEnvironment(), tableName, false));
+ new DisableTableProcedure(procExec.getEnvironment(), tableName, false), nonceGroup, nonce);
// Wait the completion
ProcedureTestingUtility.waitProcedure(procExec, procId);
ProcedureTestingUtility.assertProcNotFailed(procExec, procId);
@@ -108,7 +114,7 @@ public class TestDisableTableProcedure {
// Disable the table
long procId1 = procExec.submitProcedure(new DisableTableProcedure(
- procExec.getEnvironment(), tableName, false));
+ procExec.getEnvironment(), tableName, false), nonceGroup, nonce);
// Wait the completion
ProcedureTestingUtility.waitProcedure(procExec, procId1);
ProcedureTestingUtility.assertProcNotFailed(procExec, procId1);
@@ -117,7 +123,7 @@ public class TestDisableTableProcedure {
// Disable the table again - expect failure
long procId2 = procExec.submitProcedure(new DisableTableProcedure(
- procExec.getEnvironment(), tableName, false));
+ procExec.getEnvironment(), tableName, false), nonceGroup + 1, nonce + 1);
// Wait the completion
ProcedureTestingUtility.waitProcedure(procExec, procId2);
ProcedureResult result = procExec.getResult(procId2);
@@ -130,7 +136,7 @@ public class TestDisableTableProcedure {
final ProcedurePrepareLatch prepareLatch = new ProcedurePrepareLatch.CompatibilityLatch();
long procId3 = procExec.submitProcedure(new DisableTableProcedure(
- procExec.getEnvironment(), tableName, false, prepareLatch));
+ procExec.getEnvironment(), tableName, false, prepareLatch), nonceGroup + 2, nonce + 2);
prepareLatch.await();
Assert.fail("Disable should throw exception through latch.");
} catch (TableNotEnabledException tnee) {
@@ -148,6 +154,29 @@ public class TestDisableTableProcedure {
tableName);
}
+ @Test(timeout = 60000)
+ public void testDisableTableTwiceWithSameNonce() throws Exception {
+ final TableName tableName = TableName.valueOf("testDisableTableTwiceWithSameNonce");
+ final ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
+
+ MasterProcedureTestingUtility.createTable(procExec, tableName, null, "f1", "f2");
+
+ // Disable the table
+ long procId1 = procExec.submitProcedure(new DisableTableProcedure(
+ procExec.getEnvironment(), tableName, false), nonceGroup, nonce);
+ long procId2 = procExec.submitProcedure(new DisableTableProcedure(
+ procExec.getEnvironment(), tableName, false), nonceGroup, nonce);
+ // Wait the completion
+ ProcedureTestingUtility.waitProcedure(procExec, procId1);
+ ProcedureTestingUtility.assertProcNotFailed(procExec, procId1);
+ MasterProcedureTestingUtility.validateTableIsDisabled(UTIL.getHBaseCluster().getMaster(),
+ tableName);
+
+ ProcedureTestingUtility.waitProcedure(procExec, procId2);
+ ProcedureTestingUtility.assertProcNotFailed(procExec, procId2);
+ assertTrue(procId1 == procId2);
+ }
+
@Test(timeout=60000)
public void testRecoveryAndDoubleExecution() throws Exception {
final TableName tableName = TableName.valueOf("testRecoveryAndDoubleExecution");
@@ -161,9 +190,8 @@ public class TestDisableTableProcedure {
ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, true);
// Start the Disable procedure && kill the executor
- long procId =
- procExec.submitProcedure(new DisableTableProcedure(procExec.getEnvironment(), tableName,
- false));
+ long procId = procExec.submitProcedure(
+ new DisableTableProcedure(procExec.getEnvironment(), tableName, false), nonceGroup, nonce);
// Restart the executor and execute the step twice
int numberOfSteps = DisableTableState.values().length;
http://git-wip-us.apache.org/repos/asf/hbase/blob/951ec7a0/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.java
index 12c78e8..0204e52 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestEnableTableProcedure.java
@@ -24,6 +24,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.TableNotDisabledException;
@@ -34,7 +35,6 @@ import org.apache.hadoop.hbase.protobuf.generated.MasterProcedureProtos.EnableTa
import org.apache.hadoop.hbase.testclassification.MasterTests;
import org.apache.hadoop.hbase.testclassification.MediumTests;
import org.apache.hadoop.hbase.util.Bytes;
-
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
@@ -49,6 +49,9 @@ public class TestEnableTableProcedure {
protected static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
+ private static long nonceGroup = HConstants.NO_NONCE;
+ private static long nonce = HConstants.NO_NONCE;
+
private static void setupConf(Configuration conf) {
conf.setInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS, 1);
}
@@ -71,6 +74,9 @@ public class TestEnableTableProcedure {
@Before
public void setup() throws Exception {
ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(getMasterProcedureExecutor(), false);
+ nonceGroup =
+ MasterProcedureTestingUtility.generateNonceGroup(UTIL.getHBaseCluster().getMaster());
+ nonce = MasterProcedureTestingUtility.generateNonce(UTIL.getHBaseCluster().getMaster());
}
@After
@@ -92,7 +98,7 @@ public class TestEnableTableProcedure {
// Enable the table
long procId = procExec.submitProcedure(
- new EnableTableProcedure(procExec.getEnvironment(), tableName, false));
+ new EnableTableProcedure(procExec.getEnvironment(), tableName, false), nonceGroup, nonce);
// Wait the completion
ProcedureTestingUtility.waitProcedure(procExec, procId);
ProcedureTestingUtility.assertProcNotFailed(procExec, procId);
@@ -100,6 +106,29 @@ public class TestEnableTableProcedure {
tableName);
}
+ @Test(timeout = 60000)
+ public void testEnableTableTwiceWithSameNonce() throws Exception {
+ final TableName tableName = TableName.valueOf("testEnableTableTwiceWithSameNonce");
+ final ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
+
+ MasterProcedureTestingUtility.createTable(procExec, tableName, null, "f1", "f2");
+ UTIL.getHBaseAdmin().disableTable(tableName);
+
+ // Enable the table
+ long procId1 = procExec.submitProcedure(
+ new EnableTableProcedure(procExec.getEnvironment(), tableName, false), nonceGroup, nonce);
+ long procId2 = procExec.submitProcedure(
+ new EnableTableProcedure(procExec.getEnvironment(), tableName, false), nonceGroup, nonce);
+
+ // Wait the completion
+ ProcedureTestingUtility.waitProcedure(procExec, procId1);
+ ProcedureTestingUtility.assertProcNotFailed(procExec, procId1);
+ // The second proc should succeed too - because it is the same proc.
+ ProcedureTestingUtility.waitProcedure(procExec, procId2);
+ ProcedureTestingUtility.assertProcNotFailed(procExec, procId2);
+ assertTrue(procId1 == procId2);
+ }
+
@Test(timeout=60000, expected=TableNotDisabledException.class)
public void testEnableNonDisabledTable() throws Exception {
final TableName tableName = TableName.valueOf("testEnableNonExistingTable");
@@ -109,7 +138,7 @@ public class TestEnableTableProcedure {
// Enable the table - expect failure
long procId1 = procExec.submitProcedure(
- new EnableTableProcedure(procExec.getEnvironment(), tableName, false));
+ new EnableTableProcedure(procExec.getEnvironment(), tableName, false), nonceGroup, nonce);
ProcedureTestingUtility.waitProcedure(procExec, procId1);
ProcedureResult result = procExec.getResult(procId1);
@@ -119,7 +148,9 @@ public class TestEnableTableProcedure {
// Enable the table with skipping table state check flag (simulate recovery scenario)
long procId2 = procExec.submitProcedure(
- new EnableTableProcedure(procExec.getEnvironment(), tableName, true));
+ new EnableTableProcedure(procExec.getEnvironment(), tableName, true),
+ nonceGroup + 1,
+ nonce + 1);
// Wait the completion
ProcedureTestingUtility.waitProcedure(procExec, procId2);
ProcedureTestingUtility.assertProcNotFailed(procExec, procId2);
@@ -127,7 +158,9 @@ public class TestEnableTableProcedure {
// Enable the table - expect failure from ProcedurePrepareLatch
final ProcedurePrepareLatch prepareLatch = new ProcedurePrepareLatch.CompatibilityLatch();
long procId3 = procExec.submitProcedure(
- new EnableTableProcedure(procExec.getEnvironment(), tableName, false, prepareLatch));
+ new EnableTableProcedure(procExec.getEnvironment(), tableName, false, prepareLatch),
+ nonceGroup + 2,
+ nonce + 2);
prepareLatch.await();
Assert.fail("Enable should throw exception through latch.");
}
@@ -147,7 +180,7 @@ public class TestEnableTableProcedure {
// Start the Enable procedure && kill the executor
long procId = procExec.submitProcedure(
- new EnableTableProcedure(procExec.getEnvironment(), tableName, false));
+ new EnableTableProcedure(procExec.getEnvironment(), tableName, false), nonceGroup, nonce);
// Restart the executor and execute the step twice
int numberOfSteps = EnableTableState.values().length;
@@ -175,7 +208,7 @@ public class TestEnableTableProcedure {
// Start the Enable procedure && kill the executor
long procId = procExec.submitProcedure(
- new EnableTableProcedure(procExec.getEnvironment(), tableName, false));
+ new EnableTableProcedure(procExec.getEnvironment(), tableName, false), nonceGroup, nonce);
int numberOfSteps = EnableTableState.values().length - 2; // failing in the middle of proc
MasterProcedureTestingUtility.testRollbackAndDoubleExecution(
http://git-wip-us.apache.org/repos/asf/hbase/blob/951ec7a0/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyColumnFamilyProcedure.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyColumnFamilyProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyColumnFamilyProcedure.java
index d29ea25..3b40955 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyColumnFamilyProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyColumnFamilyProcedure.java
@@ -25,6 +25,7 @@ import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HColumnDescriptor;
+import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.InvalidFamilyOperationException;
import org.apache.hadoop.hbase.TableName;
@@ -47,6 +48,9 @@ public class TestModifyColumnFamilyProcedure {
protected static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
+ private static long nonceGroup = HConstants.NO_NONCE;
+ private static long nonce = HConstants.NO_NONCE;
+
private static void setupConf(Configuration conf) {
conf.setInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS, 1);
}
@@ -69,6 +73,9 @@ public class TestModifyColumnFamilyProcedure {
@Before
public void setup() throws Exception {
ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(getMasterProcedureExecutor(), false);
+ nonceGroup =
+ MasterProcedureTestingUtility.generateNonceGroup(UTIL.getHBaseCluster().getMaster());
+ nonce = MasterProcedureTestingUtility.generateNonce(UTIL.getHBaseCluster().getMaster());
}
@After
@@ -94,8 +101,10 @@ public class TestModifyColumnFamilyProcedure {
// Test 1: modify the column family online
columnDescriptor.setBlocksize(newBlockSize);
- long procId1 = procExec.submitProcedure(new ModifyColumnFamilyProcedure(
- procExec.getEnvironment(), tableName, columnDescriptor));
+ long procId1 = procExec.submitProcedure(
+ new ModifyColumnFamilyProcedure(procExec.getEnvironment(), tableName, columnDescriptor),
+ nonceGroup,
+ nonce);
// Wait the completion
ProcedureTestingUtility.waitProcedure(procExec, procId1);
ProcedureTestingUtility.assertProcNotFailed(procExec, procId1);
@@ -105,9 +114,10 @@ public class TestModifyColumnFamilyProcedure {
// Test 2: modify the column family offline
UTIL.getHBaseAdmin().disableTable(tableName);
columnDescriptor.setBlocksize(newBlockSize * 2);
- long procId2 =
- procExec.submitProcedure(new ModifyColumnFamilyProcedure(procExec.getEnvironment(),
- tableName, columnDescriptor));
+ long procId2 = procExec.submitProcedure(
+ new ModifyColumnFamilyProcedure(procExec.getEnvironment(), tableName, columnDescriptor),
+ nonceGroup + 1,
+ nonce + 1);
// Wait the completion
ProcedureTestingUtility.waitProcedure(procExec, procId2);
ProcedureTestingUtility.assertProcNotFailed(procExec, procId2);
@@ -129,8 +139,10 @@ public class TestModifyColumnFamilyProcedure {
// Modify the column family that does not exist
columnDescriptor.setBlocksize(newBlockSize);
- long procId1 = procExec.submitProcedure(new ModifyColumnFamilyProcedure(
- procExec.getEnvironment(), tableName, columnDescriptor));
+ long procId1 = procExec.submitProcedure(
+ new ModifyColumnFamilyProcedure(procExec.getEnvironment(), tableName, columnDescriptor),
+ nonceGroup,
+ nonce);
// Wait the completion
ProcedureTestingUtility.waitProcedure(procExec, procId1);
@@ -158,8 +170,10 @@ public class TestModifyColumnFamilyProcedure {
// Start the Modify procedure && kill the executor
columnDescriptor.setBlocksize(newBlockSize);
- long procId = procExec.submitProcedure(new ModifyColumnFamilyProcedure(
- procExec.getEnvironment(), tableName, columnDescriptor));
+ long procId = procExec.submitProcedure(
+ new ModifyColumnFamilyProcedure(procExec.getEnvironment(), tableName, columnDescriptor),
+ nonceGroup,
+ nonce);
// Restart the executor and execute the step twice
int numberOfSteps = ModifyColumnFamilyState.values().length;
@@ -190,9 +204,10 @@ public class TestModifyColumnFamilyProcedure {
// Start the Modify procedure && kill the executor
columnDescriptor.setBlocksize(newBlockSize);
- long procId =
- procExec.submitProcedure(new ModifyColumnFamilyProcedure(procExec.getEnvironment(),
- tableName, columnDescriptor));
+ long procId = procExec.submitProcedure(
+ new ModifyColumnFamilyProcedure(procExec.getEnvironment(), tableName, columnDescriptor),
+ nonceGroup,
+ nonce);
// Restart the executor and execute the step twice
int numberOfSteps = ModifyColumnFamilyState.values().length;
@@ -220,8 +235,10 @@ public class TestModifyColumnFamilyProcedure {
// Start the Modify procedure && kill the executor
columnDescriptor.setBlocksize(newBlockSize);
- long procId = procExec.submitProcedure(new ModifyColumnFamilyProcedure(
- procExec.getEnvironment(), tableName, columnDescriptor));
+ long procId = procExec.submitProcedure(
+ new ModifyColumnFamilyProcedure(procExec.getEnvironment(), tableName, columnDescriptor),
+ nonceGroup,
+ nonce);
// Failing in the middle of proc
int numberOfSteps = ModifyColumnFamilyState.values().length - 2;
http://git-wip-us.apache.org/repos/asf/hbase/blob/951ec7a0/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyTableProcedure.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyTableProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyTableProcedure.java
index af29338..ebe70d2 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyTableProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestModifyTableProcedure.java
@@ -27,6 +27,7 @@ import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseTestingUtility;
import org.apache.hadoop.hbase.HColumnDescriptor;
+import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
@@ -48,6 +49,9 @@ public class TestModifyTableProcedure {
protected static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
+ private static long nonceGroup = HConstants.NO_NONCE;
+ private static long nonce = HConstants.NO_NONCE;
+
private static void setupConf(Configuration conf) {
conf.setInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS, 1);
}
@@ -70,6 +74,9 @@ public class TestModifyTableProcedure {
@Before
public void setup() throws Exception {
ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(getMasterProcedureExecutor(), false);
+ nonceGroup =
+ MasterProcedureTestingUtility.generateNonceGroup(UTIL.getHBaseCluster().getMaster());
+ nonce = MasterProcedureTestingUtility.generateNonce(UTIL.getHBaseCluster().getMaster());
}
@After
@@ -224,8 +231,8 @@ public class TestModifyTableProcedure {
htd.setRegionReplication(3);
// Start the Modify procedure && kill the executor
- long procId =
- procExec.submitProcedure(new ModifyTableProcedure(procExec.getEnvironment(), htd));
+ long procId = procExec.submitProcedure(
+ new ModifyTableProcedure(procExec.getEnvironment(), htd), nonceGroup, nonce);
// Restart the executor and execute the step twice
int numberOfSteps = ModifyTableState.values().length;
@@ -266,8 +273,8 @@ public class TestModifyTableProcedure {
htd.removeFamily(cf3.getBytes());
// Start the Modify procedure && kill the executor
- long procId =
- procExec.submitProcedure(new ModifyTableProcedure(procExec.getEnvironment(), htd));
+ long procId = procExec.submitProcedure(
+ new ModifyTableProcedure(procExec.getEnvironment(), htd), nonceGroup, nonce);
// Restart the executor and execute the step twice
int numberOfSteps = ModifyTableState.values().length;
@@ -304,8 +311,8 @@ public class TestModifyTableProcedure {
htd.addFamily(new HColumnDescriptor(familyName));
// Start the Modify procedure && kill the executor
- long procId =
- procExec.submitProcedure(new ModifyTableProcedure(procExec.getEnvironment(), htd));
+ long procId = procExec.submitProcedure(
+ new ModifyTableProcedure(procExec.getEnvironment(), htd), nonceGroup, nonce);
// Restart the executor and rollback the step twice
int numberOfSteps = ModifyTableState.values().length - 4; // failing in the middle of proc
@@ -341,8 +348,8 @@ public class TestModifyTableProcedure {
htd.setRegionReplication(3);
// Start the Modify procedure && kill the executor
- long procId =
- procExec.submitProcedure(new ModifyTableProcedure(procExec.getEnvironment(), htd));
+ long procId = procExec.submitProcedure(
+ new ModifyTableProcedure(procExec.getEnvironment(), htd), nonceGroup, nonce);
// Restart the executor and rollback the step twice
int numberOfSteps = ModifyTableState.values().length - 4; // failing in the middle of proc
@@ -379,8 +386,8 @@ public class TestModifyTableProcedure {
htd.setRegionReplication(3);
// Start the Modify procedure && kill the executor
- long procId =
- procExec.submitProcedure(new ModifyTableProcedure(procExec.getEnvironment(), htd));
+ long procId = procExec.submitProcedure(
+ new ModifyTableProcedure(procExec.getEnvironment(), htd), nonceGroup, nonce);
// Failing after MODIFY_TABLE_DELETE_FS_LAYOUT we should not trigger the rollback.
// NOTE: the 5 (number of MODIFY_TABLE_DELETE_FS_LAYOUT + 1 step) is hardcoded,
http://git-wip-us.apache.org/repos/asf/hbase/blob/951ec7a0/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java
index 58acbae..e9f5746 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestTruncateTableProcedure.java
@@ -22,6 +22,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.TableName;
@@ -34,7 +35,6 @@ import org.apache.hadoop.hbase.protobuf.generated.MasterProcedureProtos.Truncate
import org.apache.hadoop.hbase.testclassification.MasterTests;
import org.apache.hadoop.hbase.testclassification.MediumTests;
import org.apache.hadoop.hbase.util.Bytes;
-
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
@@ -43,9 +43,7 @@ import org.junit.Test;
import org.junit.experimental.categories.Category;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
@Category({MasterTests.class, MediumTests.class})
public class TestTruncateTableProcedure {
@@ -53,6 +51,9 @@ public class TestTruncateTableProcedure {
protected static final HBaseTestingUtility UTIL = new HBaseTestingUtility();
+ private static long nonceGroup = HConstants.NO_NONCE;
+ private static long nonce = HConstants.NO_NONCE;
+
private static void setupConf(Configuration conf) {
conf.setInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS, 1);
}
@@ -77,6 +78,10 @@ public class TestTruncateTableProcedure {
final ProcedureExecutor<MasterProcedureEnv> procExec = getMasterProcedureExecutor();
ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, false);
assertTrue("expected executor to be running", procExec.isRunning());
+
+ nonceGroup =
+ MasterProcedureTestingUtility.generateNonceGroup(UTIL.getHBaseCluster().getMaster());
+ nonce = MasterProcedureTestingUtility.generateNonce(UTIL.getHBaseCluster().getMaster());
}
@After
@@ -210,7 +215,9 @@ public class TestTruncateTableProcedure {
// Start the Truncate procedure && kill the executor
long procId = procExec.submitProcedure(
- new TruncateTableProcedure(procExec.getEnvironment(), tableName, preserveSplits));
+ new TruncateTableProcedure(procExec.getEnvironment(), tableName, preserveSplits),
+ nonceGroup,
+ nonce);
// Restart the executor and execute the step twice
// NOTE: the 7 (number of TruncateTableState steps) is hardcoded,