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 00ace72dbe..baff874471 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 @@ -205,7 +205,7 @@ public abstract class RegionTransitionProcedure this.transitionState = state; } - RegionTransitionState getTransitionState() { + public RegionTransitionState getTransitionState() { return transitionState; } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java index 6ec0079875..5aceda09db 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/ServerCrashProcedure.java @@ -44,6 +44,7 @@ import org.slf4j.LoggerFactory; import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos; +import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.RegionTransitionState; import org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProcedureProtos.ServerCrashState; /** @@ -419,6 +420,11 @@ public class ServerCrashProcedure if (sce == null) { sce = new ServerCrashException(getProcId(), getServerName()); } + if (rtp instanceof AssignProcedure + && rtp.getTransitionState() == RegionTransitionState.REGION_TRANSITION_FINISH) { + // we will not interrupt the assign RTP if we are in the REGION_TRANSITION_FINISH finish + continue; + } rtp.remoteCallFailed(env, this.serverName, sce); // If an assign, remove from passed-in list of regions so we subsequently do not create // a new assign; the exisitng assign after the call to remoteCallFailed will recalibrate