HBASE-20100 TestEnableTableProcedure flakey Allow OPEN as a possible state when update region transition state. Usually state is OPENING but if crash before finish step is completed, on replay, master may have read that the state is OPEN from meta table and so will think it open... When we replay the procedure finish, allow that the region is already OPEN.
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/ba063abd Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/ba063abd Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/ba063abd Branch: refs/heads/HBASE-19064 Commit: ba063abd2f4b0aaa0622a8665c4ba96ed31eafb8 Parents: f01c90b Author: Michael Stack <st...@apache.org> Authored: Tue Feb 27 12:06:48 2018 -0800 Committer: Michael Stack <st...@apache.org> Committed: Tue Feb 27 14:51:21 2018 -0800 ---------------------------------------------------------------------- .../org/apache/hadoop/hbase/master/assignment/AssignProcedure.java | 2 +- .../org/apache/hadoop/hbase/master/assignment/RegionStates.java | 2 ++ .../hadoop/hbase/master/assignment/RegionTransitionProcedure.java | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/ba063abd/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignProcedure.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignProcedure.java index 65eafe7..fd31553 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignProcedure.java @@ -208,7 +208,7 @@ public class AssignProcedure extends RegionTransitionProcedure { } } } - LOG.info("Start " + this + "; " + regionNode.toShortString() + + LOG.info("Starting " + this + "; " + regionNode.toShortString() + "; forceNewPlan=" + this.forceNewPlan + ", retain=" + retain); env.getAssignmentManager().queueAssign(regionNode); http://git-wip-us.apache.org/repos/asf/hbase/blob/ba063abd/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStates.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStates.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStates.java index fa94495..adeba67 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStates.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionStates.java @@ -60,6 +60,8 @@ public class RegionStates { private static final Logger LOG = LoggerFactory.getLogger(RegionStates.class); protected static final State[] STATES_EXPECTED_ON_OPEN = new State[] { + State.OPEN, // State may already be OPEN if we died after receiving the OPEN from regionserver + // but before complete finish of AssignProcedure. HBASE-20100. State.OFFLINE, State.CLOSED, // disable/offline State.SPLITTING, State.SPLIT, // ServerCrashProcedure State.OPENING, State.FAILED_OPEN, // already in-progress (retrying) http://git-wip-us.apache.org/repos/asf/hbase/blob/ba063abd/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.java index 8277dbe..7ce7454 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.java @@ -317,6 +317,7 @@ public abstract class RegionTransitionProcedure case REGION_TRANSITION_FINISH: // 3. wait assignment response. completion/failure + LOG.debug("Finishing {}; {}", this, regionNode.toShortString()); finishTransition(env, regionNode); am.removeRegionInTransition(regionNode, this); return null;