From 159f1b468607c7cc9d0d3caf344daf94281e248b Mon Sep 17 00:00:00 2001 From: zhangduo Date: Fri, 6 Jul 2018 15:29:58 +0800 Subject: [PATCH] Revert "HBASE-20808 Wrong shutdown order between Chores and ChoreService" For cutting 2.1.0RC0 This reverts commit ae2c858c5ef30695d939af748cba1080be0ce970. --- .../apache/hadoop/hbase/master/HMaster.java | 40 ++++++++++--------- .../hbase/regionserver/HRegionServer.java | 19 ++++----- 2 files changed, 30 insertions(+), 29 deletions(-) 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 f0e67114f3c..a5e07ba602c 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,7 +58,6 @@ 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; @@ -73,6 +72,7 @@ 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,6 +1255,12 @@ public class HMaster extends HRegionServer implements MasterServices { } } + private void cancelChore(ScheduledChore chore) { + if (chore != null) { + chore.cancel(); + } + } + @Override protected void stopServiceThreads() { if (masterJettyServer != null) { @@ -1265,11 +1271,8 @@ public class HMaster extends HRegionServer implements MasterServices { LOG.error("Failed to stop master jetty server", e); } } - stopChores(); - if (this.mobCompactThread != null) { - this.mobCompactThread.close(); - } super.stopServiceThreads(); + stopChores(); CleanerChore.shutDownChorePool(); LOG.debug("Stopping service threads"); @@ -1347,20 +1350,21 @@ public class HMaster extends HRegionServer implements MasterServices { } private void stopChores() { - 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.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(); } + 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 91a57694b31..39b006cd4d0 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,17 +2411,14 @@ public class HRegionServer extends HasThread implements */ protected void stopServiceThreads() { // clean up the scheduled chores - 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.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.cacheFlusher != null) { this.cacheFlusher.join();