in hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java [1597:1740]
public void stop() {
if (isStopped.getAndSet(true)) {
LOG.info("Storage Container Manager is not running.");
IOUtils.close(LOG, scmHAManager);
stopReplicationManager(); // started eagerly
return;
}
try {
if (containerBalancer.isBalancerRunning()) {
LOG.info("Stopping Container Balancer service.");
// stop ContainerBalancer thread in this scm
containerBalancer.stop();
} else {
LOG.info("Container Balancer is not running.");
}
} catch (Exception e) {
LOG.error("Failed to stop Container Balancer service.", e);
}
stopReplicationManager();
try {
LOG.info("Stopping the Datanode Admin Monitor.");
scmDecommissionManager.stop();
} catch (Exception ex) {
LOG.error("The Datanode Admin Monitor failed to stop", ex);
}
try {
LOG.info("Stopping datanode service RPC server");
getDatanodeProtocolServer().stop();
} catch (Exception ex) {
LOG.error("Storage Container Manager datanode RPC stop failed.", ex);
}
try {
LOG.info("Stopping block service RPC server");
getBlockProtocolServer().stop();
} catch (Exception ex) {
LOG.error("Storage Container Manager blockRpcServer stop failed.", ex);
}
try {
LOG.info("Stopping the StorageContainerLocationProtocol RPC server");
getClientProtocolServer().stop();
} catch (Exception ex) {
LOG.error("Storage Container Manager clientRpcServer stop failed.", ex);
}
try {
LOG.info("Stopping Storage Container Manager HTTP server.");
if (httpServer != null) {
httpServer.stop();
}
} catch (Exception ex) {
LOG.error("Storage Container Manager HTTP server stop failed.", ex);
}
LOG.info("Stopping SCM LayoutVersionManager Service.");
scmLayoutVersionManager.close();
if (getSecurityProtocolServer() != null) {
getSecurityProtocolServer().stop();
}
if (rootCARotationManager != null) {
rootCARotationManager.stop();
}
try {
LOG.info("Stopping Block Manager Service.");
scmBlockManager.stop();
} catch (Exception ex) {
LOG.error("SCM block manager service stop failed.", ex);
}
if (metrics != null) {
metrics.unRegister();
}
nettyMetrics.unregister();
if (perfMetrics != null) {
perfMetrics.unRegister();
}
unregisterMXBean();
if (scmContainerMetrics != null) {
scmContainerMetrics.unRegister();
}
if (placementMetrics != null) {
placementMetrics.unRegister();
}
// Event queue must be stopped before the DB store is closed at the end.
try {
LOG.info("Stopping SCM Event Queue.");
eventQueue.close();
} catch (Exception ex) {
LOG.error("SCM Event Queue stop failed", ex);
}
try {
LOG.info("Stopping SCM HA services.");
scmHAManager.stop();
} catch (Exception ex) {
LOG.error("SCM HA Manager stop failed", ex);
}
if (scmHAMetrics != null) {
SCMHAMetrics.unRegister();
}
IOUtils.cleanupWithLogger(LOG, containerManager);
IOUtils.cleanupWithLogger(LOG, pipelineManager);
if (ms != null) {
ms.stop();
}
scmSafeModeManager.stop();
serviceManager.stop();
try {
leaseManager.shutdown();
} catch (LeaseManagerNotRunningException ex) {
LOG.debug("Lease manager not running, ignore");
}
RatisDropwizardExports.clear(ratisMetricsMap, ratisReporterList);
if (scmCertificateClient != null) {
try {
scmCertificateClient.close();
} catch (IOException ioe) {
LOG.error("Closing certificate client failed", ioe);
}
}
try {
LOG.info("Stopping SCM MetadataStore.");
scmMetadataStore.stop();
} catch (Exception ex) {
LOG.error("SCM Metadata store stop failed", ex);
}
}