diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java index a5e07ba602c..f0e67114f3c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java @@ -58,6 +58,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; +import org.apache.hadoop.hbase.ChoreService; import org.apache.hadoop.hbase.ClusterId; import org.apache.hadoop.hbase.ClusterMetrics; import org.apache.hadoop.hbase.ClusterMetrics.Option; @@ -72,7 +73,6 @@ import org.apache.hadoop.hbase.MetaTableAccessor; import org.apache.hadoop.hbase.NamespaceDescriptor; import org.apache.hadoop.hbase.PleaseHoldException; import org.apache.hadoop.hbase.ReplicationPeerNotFoundException; -import org.apache.hadoop.hbase.ScheduledChore; import org.apache.hadoop.hbase.ServerName; import org.apache.hadoop.hbase.TableDescriptors; import org.apache.hadoop.hbase.TableName; @@ -1255,12 +1255,6 @@ public class HMaster extends HRegionServer implements MasterServices { } } - private void cancelChore(ScheduledChore chore) { - if (chore != null) { - chore.cancel(); - } - } - @Override protected void stopServiceThreads() { if (masterJettyServer != null) { @@ -1271,8 +1265,11 @@ public class HMaster extends HRegionServer implements MasterServices { LOG.error("Failed to stop master jetty server", e); } } - super.stopServiceThreads(); stopChores(); + if (this.mobCompactThread != null) { + this.mobCompactThread.close(); + } + super.stopServiceThreads(); CleanerChore.shutDownChorePool(); LOG.debug("Stopping service threads"); @@ -1350,21 +1347,20 @@ public class HMaster extends HRegionServer implements MasterServices { } private void stopChores() { - cancelChore(this.expiredMobFileCleanerChore); - cancelChore(this.mobCompactChore); - cancelChore(this.balancerChore); - cancelChore(this.normalizerChore); - cancelChore(this.clusterStatusChore); - cancelChore(this.catalogJanitorChore); - cancelChore(this.clusterStatusPublisherChore); - if (this.mobCompactThread != null) { - this.mobCompactThread.close(); + ChoreService choreService = getChoreService(); + if (choreService != null) { + choreService.cancelChore(this.expiredMobFileCleanerChore); + choreService.cancelChore(this.mobCompactChore); + choreService.cancelChore(this.balancerChore); + choreService.cancelChore(this.normalizerChore); + choreService.cancelChore(this.clusterStatusChore); + choreService.cancelChore(this.catalogJanitorChore); + choreService.cancelChore(this.clusterStatusPublisherChore); + choreService.cancelChore(this.snapshotQuotaChore); + choreService.cancelChore(this.logCleaner); + choreService.cancelChore(this.hfileCleaner); + choreService.cancelChore(this.replicationBarrierCleaner); } - cancelChore(this.clusterStatusPublisherChore); - cancelChore(this.snapshotQuotaChore); - cancelChore(this.logCleaner); - cancelChore(this.hfileCleaner); - cancelChore(this.replicationBarrierCleaner); } /** diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 39b006cd4d0..91a57694b31 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -2411,14 +2411,17 @@ public class HRegionServer extends HasThread implements */ protected void stopServiceThreads() { // clean up the scheduled chores - if (this.choreService != null) choreService.shutdown(); - if (this.nonceManagerChore != null) nonceManagerChore.cancel(true); - if (this.compactionChecker != null) compactionChecker.cancel(true); - if (this.periodicFlusher != null) periodicFlusher.cancel(true); - if (this.healthCheckChore != null) healthCheckChore.cancel(true); - if (this.storefileRefresher != null) storefileRefresher.cancel(true); - if (this.movedRegionsCleaner != null) movedRegionsCleaner.cancel(true); - if (this.fsUtilizationChore != null) fsUtilizationChore.cancel(true); + if (this.choreService != null) { + choreService.cancelChore(nonceManagerChore); + choreService.cancelChore(compactionChecker); + choreService.cancelChore(periodicFlusher); + choreService.cancelChore(healthCheckChore); + choreService.cancelChore(storefileRefresher); + choreService.cancelChore(movedRegionsCleaner); + choreService.cancelChore(fsUtilizationChore); + // clean up the remaining scheduled chores (in case we missed out any) + choreService.shutdown(); + } if (this.cacheFlusher != null) { this.cacheFlusher.join();