|
@@ -33,15 +33,23 @@ import org.apache.hadoop.hdds.conf.OzoneConfiguration;
|
|
|
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeState;
|
|
|
import org.apache.hadoop.hdds.scm.block.BlockManager;
|
|
|
import org.apache.hadoop.hdds.scm.block.BlockManagerImpl;
|
|
|
+import org.apache.hadoop.hdds.scm.container.CloseContainerEventHandler;
|
|
|
import org.apache.hadoop.hdds.scm.container.ContainerMapping;
|
|
|
+import org.apache.hadoop.hdds.scm.container.ContainerReportHandler;
|
|
|
import org.apache.hadoop.hdds.scm.container.Mapping;
|
|
|
import org.apache.hadoop.hdds.scm.container.common.helpers.ContainerInfo;
|
|
|
import org.apache.hadoop.hdds.scm.container.placement.metrics.ContainerStat;
|
|
|
import org.apache.hadoop.hdds.scm.container.placement.metrics.SCMMetrics;
|
|
|
+import org.apache.hadoop.hdds.scm.events.SCMEvents;
|
|
|
import org.apache.hadoop.hdds.scm.exceptions.SCMException;
|
|
|
import org.apache.hadoop.hdds.scm.exceptions.SCMException.ResultCodes;
|
|
|
+import org.apache.hadoop.hdds.scm.node.DeadNodeHandler;
|
|
|
+import org.apache.hadoop.hdds.scm.node.NewNodeHandler;
|
|
|
import org.apache.hadoop.hdds.scm.node.NodeManager;
|
|
|
+import org.apache.hadoop.hdds.scm.node.NodeReportHandler;
|
|
|
import org.apache.hadoop.hdds.scm.node.SCMNodeManager;
|
|
|
+import org.apache.hadoop.hdds.scm.node.StaleNodeHandler;
|
|
|
+import org.apache.hadoop.hdds.scm.node.states.Node2ContainerMap;
|
|
|
import org.apache.hadoop.hdds.server.ServiceRuntimeInfoImpl;
|
|
|
import org.apache.hadoop.hdds.server.events.EventQueue;
|
|
|
import org.apache.hadoop.hdfs.DFSUtil;
|
|
@@ -71,7 +79,6 @@ import java.util.concurrent.TimeUnit;
|
|
|
import static org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_DB_CACHE_SIZE_DEFAULT;
|
|
|
import static org.apache.hadoop.hdds.scm.ScmConfigKeys.OZONE_SCM_DB_CACHE_SIZE_MB;
|
|
|
|
|
|
-import static org.apache.hadoop.hdds.scm.events.SCMEvents.DATANODE_COMMAND;
|
|
|
import static org.apache.hadoop.ozone.OzoneConfigKeys.OZONE_ENABLED;
|
|
|
import static org.apache.hadoop.util.ExitUtil.terminate;
|
|
|
|
|
@@ -126,6 +133,8 @@ public final class StorageContainerManager extends ServiceRuntimeInfoImpl
|
|
|
private final Mapping scmContainerManager;
|
|
|
private final BlockManager scmBlockManager;
|
|
|
private final SCMStorage scmStorage;
|
|
|
+
|
|
|
+ private final EventQueue eventQueue;
|
|
|
/*
|
|
|
* HTTP endpoint for JMX access.
|
|
|
*/
|
|
@@ -164,18 +173,35 @@ public final class StorageContainerManager extends ServiceRuntimeInfoImpl
|
|
|
throw new SCMException("SCM not initialized.", ResultCodes
|
|
|
.SCM_NOT_INITIALIZED);
|
|
|
}
|
|
|
- EventQueue eventQueue = new EventQueue();
|
|
|
-
|
|
|
- SCMNodeManager nm =
|
|
|
- new SCMNodeManager(conf, scmStorage.getClusterID(), this);
|
|
|
- scmNodeManager = nm;
|
|
|
- eventQueue.addHandler(DATANODE_COMMAND, nm);
|
|
|
|
|
|
- scmContainerManager = new ContainerMapping(conf, getScmNodeManager(),
|
|
|
- cacheSize);
|
|
|
-
|
|
|
- scmBlockManager =
|
|
|
- new BlockManagerImpl(conf, getScmNodeManager(), scmContainerManager);
|
|
|
+ eventQueue = new EventQueue();
|
|
|
+
|
|
|
+ scmNodeManager = new SCMNodeManager(
|
|
|
+ conf, scmStorage.getClusterID(), this, eventQueue);
|
|
|
+ scmContainerManager = new ContainerMapping(
|
|
|
+ conf, getScmNodeManager(), cacheSize);
|
|
|
+ scmBlockManager = new BlockManagerImpl(
|
|
|
+ conf, getScmNodeManager(), scmContainerManager);
|
|
|
+
|
|
|
+ Node2ContainerMap node2ContainerMap = new Node2ContainerMap();
|
|
|
+
|
|
|
+ CloseContainerEventHandler closeContainerHandler =
|
|
|
+ new CloseContainerEventHandler(scmContainerManager);
|
|
|
+ NodeReportHandler nodeReportHandler =
|
|
|
+ new NodeReportHandler(scmNodeManager);
|
|
|
+ ContainerReportHandler containerReportHandler =
|
|
|
+ new ContainerReportHandler(scmContainerManager, node2ContainerMap);
|
|
|
+ NewNodeHandler newNodeHandler = new NewNodeHandler(node2ContainerMap);
|
|
|
+ StaleNodeHandler staleNodeHandler = new StaleNodeHandler(node2ContainerMap);
|
|
|
+ DeadNodeHandler deadNodeHandler = new DeadNodeHandler(node2ContainerMap);
|
|
|
+
|
|
|
+ eventQueue.addHandler(SCMEvents.DATANODE_COMMAND, scmNodeManager);
|
|
|
+ eventQueue.addHandler(SCMEvents.NODE_REPORT, nodeReportHandler);
|
|
|
+ eventQueue.addHandler(SCMEvents.CONTAINER_REPORT, containerReportHandler);
|
|
|
+ eventQueue.addHandler(SCMEvents.CLOSE_CONTAINER, closeContainerHandler);
|
|
|
+ eventQueue.addHandler(SCMEvents.NEW_NODE, newNodeHandler);
|
|
|
+ eventQueue.addHandler(SCMEvents.STALE_NODE, staleNodeHandler);
|
|
|
+ eventQueue.addHandler(SCMEvents.DEAD_NODE, deadNodeHandler);
|
|
|
|
|
|
scmAdminUsernames = conf.getTrimmedStringCollection(OzoneConfigKeys
|
|
|
.OZONE_ADMINISTRATORS);
|
|
@@ -189,7 +215,6 @@ public final class StorageContainerManager extends ServiceRuntimeInfoImpl
|
|
|
blockProtocolServer = new SCMBlockProtocolServer(conf, this);
|
|
|
clientProtocolServer = new SCMClientProtocolServer(conf, this);
|
|
|
httpServer = new StorageContainerManagerHttpServer(conf);
|
|
|
-
|
|
|
registerMXBean();
|
|
|
}
|
|
|
|