diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java index e83fa83..3979a40 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java @@ -254,6 +254,7 @@ public abstract class CoprocessorHost { public void shutdown(CoprocessorEnvironment e) { if (e instanceof Environment) { + LOG.info("Stop coprocessor " + e.getInstance().getClass().getName()); ((Environment)e).shutdown(); } else { LOG.warn("Shutdown called on unknown environment: "+ diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java index e87d614..e6bc778 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java @@ -1263,6 +1263,8 @@ public class MasterCoprocessorHost break; } } + // invoke coprocessor stop method + shutdown(env); } } @@ -1285,6 +1287,8 @@ public class MasterCoprocessorHost break; } } + // invoke coprocessor stop method + shutdown(env); } } diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 14a5a93..7d73a32 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -1621,16 +1621,19 @@ public class HRegionServer extends HasThread implements @Override public void stop(final String msg) { - try { - if (this.rsHost != null) { - this.rsHost.preStop(msg); + if (!this.stopped) + { + try { + if (this.rsHost != null) { + this.rsHost.preStop(msg); + } + this.stopped = true; + LOG.info("STOPPED: " + msg); + // Wakes run() if it is sleeping + sleeper.skipSleepCycle(); + } catch (IOException exp) { + LOG.warn("The region server did not stop", exp); } - this.stopped = true; - LOG.info("STOPPED: " + msg); - // Wakes run() if it is sleeping - sleeper.skipSleepCycle(); - } catch (IOException exp) { - LOG.warn("The region server did not stop", exp); } } diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java index b37ed6f..5052f2a 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.java @@ -72,6 +72,8 @@ public class RegionServerCoprocessorHost extends break; } } + // invoke coprocessor stop method + shutdown(env); } }