This is an automated email from the ASF dual-hosted git repository.

yiyang0203 pushed a commit to branch HDDS-5713
in repository https://gitbox.apache.org/repos/asf/ozone.git

commit 323dec75fbf8971a855eb86e0966cb092bfdb362
Author: Stephen O'Donnell <[email protected]>
AuthorDate: Tue Feb 6 16:34:56 2024 +0000

    HDDS-10304. [DiskBalancer] Start command - Fix nodes not being processed 
and incorrect config values (#6181)
---
 .../protocol/commands/DiskBalancerCommand.java      |  5 +++++
 .../hadoop/hdds/scm/node/DiskBalancerManager.java   |  4 +++-
 ...ainerLocationProtocolServerSideTranslatorPB.java | 21 ++++++++++++---------
 3 files changed, 20 insertions(+), 10 deletions(-)

diff --git 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/protocol/commands/DiskBalancerCommand.java
 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/protocol/commands/DiskBalancerCommand.java
index 1780877787..b8c047d1b1 100644
--- 
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/protocol/commands/DiskBalancerCommand.java
+++ 
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/protocol/commands/DiskBalancerCommand.java
@@ -76,4 +76,9 @@ public class DiskBalancerCommand extends 
SCMCommand<DiskBalancerCommandProto> {
   public DiskBalancerConfiguration getDiskBalancerConfiguration() {
     return diskBalancerConfiguration;
   }
+
+  @Override
+  public String toString() {
+    return getType() + ": opType=" + opType + ", configuration=" + 
diskBalancerConfiguration;
+  }
 }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/DiskBalancerManager.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/DiskBalancerManager.java
index 1af9bfde4c..a45e81e15f 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/DiskBalancerManager.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/DiskBalancerManager.java
@@ -156,7 +156,7 @@ public class DiskBalancerManager {
     List<DatanodeAdminError> errors = new ArrayList<>();
     for (DatanodeDetails dn : dns) {
       try {
-        if (nodeManager.getNodeStatus(dn).isHealthy()) {
+        if (!nodeManager.getNodeStatus(dn).isHealthy()) {
           errors.add(new DatanodeAdminError(dn.getHostName(),
               "Datanode not in healthy state"));
           continue;
@@ -169,6 +169,7 @@ public class DiskBalancerManager {
             HddsProtos.DiskBalancerOpType.START, updateConf);
         sendCommand(dn, command);
       } catch (Exception e) {
+        LOG.info("Caught an error for {}", dn);
         errors.add(new DatanodeAdminError(dn.getHostName(), e.getMessage()));
       }
     }
@@ -355,6 +356,7 @@ public class DiskBalancerManager {
           " since not leader SCM.", dn.getUuidString());
       return;
     }
+    LOG.info("Sending {} to Datanode {}", command, dn);
     scmNodeEventPublisher.fireEvent(SCMEvents.DATANODE_COMMAND,
         new CommandForDatanode<>(dn.getUuid(), command));
   }
diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
index d369006f39..598f5c0acc 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
@@ -1348,23 +1348,26 @@ public final class 
StorageContainerLocationProtocolServerSideTranslatorPB
                   DatanodeDiskBalancerOpRequestProto request)
           throws IOException {
     List<DatanodeAdminError> errors;
+    HddsProtos.DiskBalancerConfigurationProto conf = request.getConf();
     switch (request.getOpType()) {
     case START:
       errors = impl.startDiskBalancer(
-              Optional.of(request.getConf().getThreshold()),
-              Optional.of(request.getConf().getDiskBandwidthInMB()),
-              Optional.of(request.getConf().getParallelThread()),
-              Optional.of(request.getHostsList()));
+          conf.hasThreshold() ? Optional.of(conf.getThreshold()) : 
Optional.empty(),
+          conf.hasDiskBandwidthInMB() ? 
Optional.of(conf.getDiskBandwidthInMB()) : Optional.empty(),
+          conf.hasParallelThread() ? Optional.of(conf.getParallelThread()) : 
Optional.empty(),
+          request.getHostsList().isEmpty() ? Optional.empty() : 
Optional.of(request.getHostsList()));
       break;
     case UPDATE:
+
       errors = impl.updateDiskBalancerConfiguration(
-              Optional.of(request.getConf().getThreshold()),
-              Optional.of(request.getConf().getDiskBandwidthInMB()),
-              Optional.of(request.getConf().getParallelThread()),
-              Optional.of(request.getHostsList()));
+          conf.hasThreshold() ? Optional.of(conf.getThreshold()) : 
Optional.empty(),
+          conf.hasDiskBandwidthInMB() ? 
Optional.of(conf.getDiskBandwidthInMB()) : Optional.empty(),
+          conf.hasParallelThread() ? Optional.of(conf.getParallelThread()) : 
Optional.empty(),
+          request.getHostsList().isEmpty() ? Optional.empty() : 
Optional.of(request.getHostsList()));
       break;
     case STOP:
-      errors = impl.stopDiskBalancer(Optional.of(request.getHostsList()));
+      errors = impl.stopDiskBalancer(
+          request.getHostsList().isEmpty() ? Optional.empty() : 
Optional.of(request.getHostsList()));
       break;
     default:
       errors = new ArrayList<>();


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to