You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2017/07/31 21:25:21 UTC
[3/3] hbase git commit: HBASE-18261 Created RecoverMetaProcedure and
used it from ServerCrashProcedure and
HMaster.finishActiveMasterInitialization().
HBASE-18261 Created RecoverMetaProcedure and used it from ServerCrashProcedure and HMaster.finishActiveMasterInitialization().
This procedure can be used from any code before accessing meta, to initialize/ recover meta
Signed-off-by: Michael Stack <st...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a5db120e
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a5db120e
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a5db120e
Branch: refs/heads/master
Commit: a5db120e6090faecb680f3f1e297f78e567ba3a3
Parents: 331a6cf
Author: Umesh Agashe <ua...@cloudera.com>
Authored: Fri Jun 23 14:44:28 2017 -0700
Committer: Michael Stack <st...@apache.org>
Committed: Mon Jul 31 14:25:03 2017 -0700
----------------------------------------------------------------------
.../hbase/procedure2/StateMachineProcedure.java | 26 +
.../generated/MasterProcedureProtos.java | 1514 ++++++++++++++----
.../src/main/protobuf/MasterProcedure.proto | 11 +
.../org/apache/hadoop/hbase/master/HMaster.java | 39 +-
.../hbase/master/MasterMetaBootstrap.java | 73 +-
.../hadoop/hbase/master/MasterServices.java | 7 +
.../hadoop/hbase/master/MasterWalManager.java | 2 +-
.../master/assignment/AssignmentManager.java | 2 +
.../master/procedure/RecoverMetaProcedure.java | 253 +++
.../master/procedure/ServerCrashProcedure.java | 56 +-
.../hbase/master/MockNoopMasterServices.java | 9 +-
.../hbase/master/TestMasterNoCluster.java | 2 +-
.../MasterProcedureTestingUtility.java | 11 +-
.../procedure/TestServerCrashProcedure.java | 28 +-
14 files changed, 1564 insertions(+), 469 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/a5db120e/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.java
----------------------------------------------------------------------
diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.java
index becd9b7..5de5066 100644
--- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.java
+++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/StateMachineProcedure.java
@@ -59,6 +59,20 @@ public abstract class StateMachineProcedure<TEnvironment, TState>
private List<Procedure<TEnvironment>> subProcList = null;
+ protected final int getCycles() {
+ return cycles;
+ }
+
+ /**
+ * Cycles on same state. Good for figuring if we are stuck.
+ */
+ private int cycles = 0;
+
+ /**
+ * Ordinal of the previous state. So we can tell if we are progressing or not.
+ */
+ private int previousState;
+
protected enum Flow {
HAS_MORE_STATE,
NO_MORE_STATE,
@@ -152,6 +166,18 @@ public abstract class StateMachineProcedure<TEnvironment, TState>
if (stateCount == 0) {
setNextState(getStateId(state));
}
+
+ if (LOG.isTraceEnabled()) {
+ LOG.trace(state + " " + this + "; cycles=" + this.cycles);
+ }
+ // Keep running count of cycles
+ if (getStateId(state) != this.previousState) {
+ this.previousState = getStateId(state);
+ this.cycles = 0;
+ } else {
+ this.cycles++;
+ }
+
stateFlow = executeFromState(env, state);
if (!hasMoreState()) setNextState(EOF_STATE);
if (subProcList != null && !subProcList.isEmpty()) {