Skip to content

Commit 1c16cb2

Browse files
author
fanshilun
committed
HDDS-11463. Track and display failed DataNode storage locations in SCM.
1 parent 2797c45 commit 1c16cb2

File tree

16 files changed

+560
-97
lines changed

16 files changed

+560
-97
lines changed

hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/HddsConfigKeys.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ public final class HddsConfigKeys {
116116
public static final double
117117
HDDS_SCM_SAFEMODE_ONE_NODE_REPORTED_PIPELINE_PCT_DEFAULT = 0.90;
118118

119+
public static final String HDDS_SCM_SAFEMODE_REPORTED_DATANODE_PCT =
120+
"hdds.scm.safemode.reported.datanode.pct";
121+
public static final double HDDS_SCM_SAFEMODE_REPORTED_DATANODE_PCT_DEFAULT = 0.10;
122+
119123
// This configuration setting is used as a fallback location by all
120124
// Ozone/HDDS services for their metadata. It is useful as a single
121125
// config point for test/PoC clusters.

hadoop-hdds/common/src/main/resources/ozone-default.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1702,6 +1702,15 @@
17021702
</description>
17031703
</property>
17041704

1705+
<property>
1706+
<name>hdds.scm.safemode.reported.datanode.pct</name>
1707+
<value>0.10</value>
1708+
<tag>HDDS,SCM,OPERATION</tag>
1709+
<description>
1710+
Percentage of successfully reported datanodes.
1711+
</description>
1712+
</property>
1713+
17051714
<property>
17061715
<name>hdds.container.action.max.limit</name>
17071716
<value>20</value>

hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/container/ContainerReportHandler.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@
2626
.StorageContainerDatanodeProtocolProtos.ContainerReportsProto;
2727
import org.apache.hadoop.hdds.scm.ScmConfig;
2828
import org.apache.hadoop.hdds.scm.container.report.ContainerReportValidator;
29+
import org.apache.hadoop.hdds.scm.events.SCMEvents;
2930
import org.apache.hadoop.hdds.scm.ha.SCMContext;
3031
import org.apache.hadoop.hdds.scm.node.NodeManager;
3132
import org.apache.hadoop.hdds.scm.node.states.NodeNotFoundException;
3233
import org.apache.hadoop.hdds.scm.server.SCMDatanodeHeartbeatDispatcher
3334
.ContainerReportFromDatanode;
35+
import org.apache.hadoop.hdds.scm.server.SCMDatanodeProtocolServer;
3436
import org.apache.hadoop.hdds.server.events.EventHandler;
3537
import org.apache.hadoop.hdds.server.events.EventPublisher;
3638
import org.apache.hadoop.ozone.common.statemachine.InvalidStateTransitionException;
@@ -199,6 +201,11 @@ public void onMessage(final ContainerReportFromDatanode reportFromDatanode,
199201
// list
200202
processMissingReplicas(datanodeDetails, expectedContainersInDatanode);
201203
containerManager.notifyContainerReportProcessing(true, true);
204+
if (reportFromDatanode.isRegister()) {
205+
publisher.fireEvent(SCMEvents.CONTAINER_REGISTRATION_REPORT,
206+
new SCMDatanodeProtocolServer.NodeRegistrationContainerReport(datanodeDetails,
207+
reportFromDatanode.getReport()));
208+
}
202209
}
203210
} catch (NodeNotFoundException ex) {
204211
containerManager.notifyContainerReportProcessing(true, false);

hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/events/SCMEvents.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ public final class SCMEvents {
6464
NodeRegistrationContainerReport.class,
6565
"Node_Registration_Container_Report");
6666

67+
/**
68+
* Event generated on DataNode Registration Container Report.
69+
*/
70+
public static final TypedEvent<NodeRegistrationContainerReport>
71+
CONTAINER_REGISTRATION_REPORT = new TypedEvent<>(
72+
NodeRegistrationContainerReport.class, "Container_Registration_Report");
73+
6774
/**
6875
* ContainerReports are sent out by Datanodes. This report is received by
6976
* SCMDatanodeHeartbeatDispatcher and Container_Report Event is generated.

0 commit comments

Comments
 (0)