HBASE-20808 Wrong shutdown order between Chores and ChoreService
Signed-off-by: Reid Chan <reidchan@apache.org>
This commit is contained in:
parent
3e7f724837
commit
1ade4d2f44
|
@ -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;
|
||||
|
@ -1269,12 +1269,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) {
|
||||
|
@ -1285,8 +1279,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");
|
||||
|
@ -1364,21 +1361,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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -2436,14 +2436,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();
|
||||
|
|
Loading…
Reference in New Issue