This is an automated email from the ASF dual-hosted git repository.
sumitagrawal pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 85feb8813ea HDDS-13981. DN quickly reregister to SCM (#9351)
85feb8813ea is described below
commit 85feb8813eaa1d1fab7ed8f824f108d9980ff0cd
Author: Sumit Agrawal <[email protected]>
AuthorDate: Wed Dec 3 17:25:36 2025 +0530
HDDS-13981. DN quickly reregister to SCM (#9351)
---
.../container/common/statemachine/DatanodeStateMachine.java | 9 +++++++++
.../container/common/states/datanode/RunningDatanodeState.java | 3 +++
.../container/common/states/endpoint/HeartbeatEndpointTask.java | 3 +++
.../ozone/dn/volume/TestDatanodeHddsVolumeFailureDetection.java | 2 +-
4 files changed, 16 insertions(+), 1 deletion(-)
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java
index 3b61050c4af..ad64b291e16 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java
@@ -786,4 +786,13 @@ public Thread getCmdProcessThread() {
public VolumeChoosingPolicy getVolumeChoosingPolicy() {
return volumeChoosingPolicy;
}
+
+ /**
+ * Sets the next heartbeat time. Setting to current time will trigger HB
immediately as will be less than time
+ * compared to Time.monotonicNow() when compared.
+ * @param time
+ */
+ public void setNextHB(long time) {
+ nextHB.set(time);
+ }
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/datanode/RunningDatanodeState.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/datanode/RunningDatanodeState.java
index daa2abad9d8..e246238b541 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/datanode/RunningDatanodeState.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/datanode/RunningDatanodeState.java
@@ -129,6 +129,9 @@ private Callable<EndPointStates> buildEndPointTask(
EndpointStateMachine endpoint) {
switch (endpoint.getState()) {
case GETVERSION:
+ // set the next heartbeat time to current to avoid wait for next
heartbeat as REGISTER can be triggered
+ // immediately after GETVERSION
+ context.getParent().setNextHB(Time.monotonicNow());
return new VersionEndpointTask(endpoint, conf,
context.getParent().getContainer());
case REGISTER:
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
index 0959d78bdb2..7cb24558c7c 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/states/endpoint/HeartbeatEndpointTask.java
@@ -61,6 +61,7 @@
import org.apache.hadoop.ozone.protocol.commands.ReplicateContainerCommand;
import org.apache.hadoop.ozone.protocol.commands.SCMCommand;
import
org.apache.hadoop.ozone.protocol.commands.SetNodeOperationalStateCommand;
+import org.apache.hadoop.util.Time;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -425,6 +426,8 @@ private void processReregisterCommand() {
+ " Interrupt HEARTBEAT and transit to GETVERSION state.");
}
rpcEndpoint.setState(EndPointStates.GETVERSION);
+ // trigger immediate GETVERSION
+ context.getParent().setNextHB(Time.monotonicNow());
} else {
if (LOG.isDebugEnabled()) {
LOG.debug("Illegal state {} found, expecting {}.",
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/volume/TestDatanodeHddsVolumeFailureDetection.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/volume/TestDatanodeHddsVolumeFailureDetection.java
index 4ae78fdd818..bd167bbf3c7 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/volume/TestDatanodeHddsVolumeFailureDetection.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/volume/TestDatanodeHddsVolumeFailureDetection.java
@@ -327,7 +327,7 @@ private static MiniOzoneCluster newCluster(boolean schemaV3)
DatanodeConfiguration dnConf =
ozoneConfig.getObject(DatanodeConfiguration.class);
dnConf.setFailedDataVolumesTolerated(1);
- dnConf.setDiskCheckMinGap(Duration.ofSeconds(2));
+ dnConf.setDiskCheckMinGap(Duration.ofSeconds(0));
ozoneConfig.setFromObject(dnConf);
MiniOzoneCluster cluster = MiniOzoneCluster.newBuilder(ozoneConfig)
.setNumDatanodes(1)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]