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]
