From 01f6bd3b0a5afb036bc38eed28a2bddb7713ac5d Mon Sep 17 00:00:00 2001 From: Jingyun Tian Date: Mon, 14 Jan 2019 15:28:15 +0800 Subject: [PATCH] HBASE-21647 Add status track for splitting WAL tasks --- .../hadoop/hbase/procedure2/Procedure.java | 9 +++++ .../TransitRegionStateProcedure.java | 3 ++ .../procedure/ServerCrashProcedure.java | 37 +++++++++++++++++++ .../master/procedure/SplitWALProcedure.java | 2 + 4 files changed, 51 insertions(+) diff --git a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/Procedure.java b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/Procedure.java index 9934dc36f2..4550aa542b 100644 --- a/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/Procedure.java +++ b/hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/Procedure.java @@ -896,6 +896,15 @@ public abstract class Procedure implements Comparable 0 ? "; remaining num of running child procedures = " + childrenLatch + : "")); + } + @Override protected void rollbackState(MasterProcedureEnv env, ServerCrashState state) throws IOException { @@ -387,6 +412,7 @@ public class ServerCrashProcedure this.regionsOnCrashedServer.add(ProtobufUtil.toRegionInfo(ri)); } } + updateProgress(false); } @Override @@ -455,4 +481,15 @@ public class ServerCrashProcedure protected boolean holdLock(MasterProcedureEnv env) { return true; } + + public static void updateProgress(MasterProcedureEnv env, long parentId) { + if (parentId == NO_PROC_ID) { + return; + } + Procedure parentProcedure = + env.getMasterServices().getMasterProcedureExecutor().getProcedure(parentId); + if (parentProcedure != null && parentProcedure instanceof ServerCrashProcedure) { + ((ServerCrashProcedure) parentProcedure).updateProgress(false); + } + } } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/SplitWALProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/SplitWALProcedure.java index 3b2d0d504e..8514c166cd 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/SplitWALProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/SplitWALProcedure.java @@ -23,6 +23,7 @@ import java.io.IOException; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.ServerName; import org.apache.hadoop.hbase.master.SplitWALManager; +import org.apache.hadoop.hbase.procedure2.Procedure; import org.apache.hadoop.hbase.procedure2.ProcedureStateSerializer; import org.apache.hadoop.hbase.procedure2.ProcedureSuspendedException; import org.apache.hadoop.hbase.procedure2.ProcedureUtil; @@ -94,6 +95,7 @@ public class SplitWALProcedure setNextState(MasterProcedureProtos.SplitWALState.ACQUIRE_SPLIT_WAL_WORKER); return Flow.HAS_MORE_STATE; } + ServerCrashProcedure.updateProgress(env, getParentProcId()); return Flow.NO_MORE_STATE; default: throw new UnsupportedOperationException("unhandled state=" + state); -- 2.17.1