This is an automated email from the ASF dual-hosted git repository.
szetszwo 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 9e7ba249136 HDDS-16130. Remove Pair usage from Safe-mode APIs and
callers. (#10993)
9e7ba249136 is described below
commit 9e7ba2491364bb7a12f13caba2061b4de103e5e5
Author: Navink <[email protected]>
AuthorDate: Fri Aug 21 00:14:12 2026 +0530
HDDS-16130. Remove Pair usage from Safe-mode APIs and callers. (#10993)
---
.../apache/hadoop/hdds/scm/client/ScmClient.java | 7 +++---
.../protocol/StorageContainerLocationProtocol.java | 5 ++--
...inerLocationProtocolClientSideTranslatorPB.java | 29 ++++------------------
...inerLocationProtocolServerSideTranslatorPB.java | 24 +++---------------
.../hdds/scm/safemode/SCMSafeModeManager.java | 14 ++++++-----
.../hdds/scm/server/SCMClientProtocolServer.java | 13 ++++------
.../hdds/scm/server/StorageContainerManager.java | 14 +++++------
.../hdds/scm/safemode/TestSCMSafeModeManager.java | 25 ++++++++-----------
.../hdds/scm/cli/ContainerOperationClient.java | 5 ++--
.../hdds/scm/cli/SafeModeCheckSubcommand.java | 17 ++++---------
10 files changed, 51 insertions(+), 102 deletions(-)
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java
index cd8bd619592..9a41a047ee1 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java
@@ -23,7 +23,6 @@
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.hdds.annotation.InterfaceAudience;
import org.apache.hadoop.hdds.annotation.InterfaceStability;
import org.apache.hadoop.hdds.client.ReplicationConfig;
@@ -32,6 +31,7 @@
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DeletedBlocksTransactionSummary;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ContainerBalancerStatusInfoResponseProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.DecommissionScmResponseProto;
+import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SafeModeRuleStatusProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.StartContainerBalancerResponseProto;
import org.apache.hadoop.hdds.scm.DatanodeAdminError;
import org.apache.hadoop.hdds.scm.container.ContainerID;
@@ -276,11 +276,10 @@ Pipeline
createReplicationPipeline(HddsProtos.ReplicationType type,
/**
* Get the safe mode status of all rules.
*
- * @return map of rule statuses.
+ * @return list of rule statuses.
* @throws IOException
*/
- Map<String, Pair<Boolean, String>> getSafeModeRuleStatuses()
- throws IOException;
+ List<SafeModeRuleStatusProto> getSafeModeRuleStatuses() throws IOException;
/**
* Force SCM out of safe mode.
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocol.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocol.java
index 98f8efa9ae3..cae99a27fca 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocol.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocol.java
@@ -27,7 +27,6 @@
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
@@ -35,6 +34,7 @@
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DeletedBlocksTransactionSummary;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ContainerBalancerStatusInfoResponseProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.DecommissionScmResponseProto;
+import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SafeModeRuleStatusProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.StartContainerBalancerResponseProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.Type;
import org.apache.hadoop.hdds.scm.DatanodeAdminError;
@@ -411,8 +411,7 @@ List<DeletedBlocksTransactionInfo>
getFailedDeletedBlockTxn(int count,
*/
boolean inSafeMode() throws IOException;
- Map<String, Pair<Boolean, String>> getSafeModeRuleStatuses()
- throws IOException;
+ List<SafeModeRuleStatusProto> getSafeModeRuleStatuses() throws IOException;
/**
* Force SCM out of Safe mode.
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java
index 7808cb286a2..7cdb5fa3365 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java
@@ -37,7 +37,6 @@
import java.util.UUID;
import java.util.function.Consumer;
import java.util.stream.Collectors;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.hdds.annotation.InterfaceAudience;
import org.apache.hadoop.hdds.client.ECReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicatedReplicationConfig;
@@ -881,29 +880,11 @@ public boolean inSafeMode() throws IOException {
}
@Override
- public Map<String, Pair<Boolean, String>> getSafeModeRuleStatuses()
- throws IOException {
- GetSafeModeRuleStatusesRequestProto request =
- GetSafeModeRuleStatusesRequestProto.getDefaultInstance();
- GetSafeModeRuleStatusesResponseProto response =
- submitRequest(Type.GetSafeModeRuleStatuses,
- builder -> builder.setGetSafeModeRuleStatusesRequest(request))
- .getGetSafeModeRuleStatusesResponse();
- return buildSafeModeRuleStatusesMap(response);
- }
-
- /**
- * Helper method to build a map from GetSafeModeRuleStatusesResponseProto.
- * Extracts rule names and their status information.
- */
- private Map<String, Pair<Boolean, String>> buildSafeModeRuleStatusesMap(
- GetSafeModeRuleStatusesResponseProto response) {
- Map<String, Pair<Boolean, String>> ruleStatuses = new HashMap<>();
- for (SafeModeRuleStatusProto statusProto :
response.getSafeModeRuleStatusesProtoList()) {
- ruleStatuses.put(statusProto.getRuleName(),
- Pair.of(statusProto.getValidate(), statusProto.getStatusText()));
- }
- return ruleStatuses;
+ public List<SafeModeRuleStatusProto> getSafeModeRuleStatuses() throws
IOException {
+ GetSafeModeRuleStatusesRequestProto request =
GetSafeModeRuleStatusesRequestProto.getDefaultInstance();
+ GetSafeModeRuleStatusesResponseProto response =
submitRequest(Type.GetSafeModeRuleStatuses,
+ builder ->
builder.setGetSafeModeRuleStatusesRequest(request)).getGetSafeModeRuleStatusesResponse();
+ return response.getSafeModeRuleStatusesProtoList();
}
/**
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 00a9b6b3a0c..c1561f0cd19 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
@@ -38,7 +38,6 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.hdds.annotation.InterfaceAudience;
import org.apache.hadoop.hdds.client.ECReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationConfig;
@@ -93,7 +92,6 @@
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetMetricsResponseProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetPipelineRequestProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetPipelineResponseProto;
-import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetSafeModeRuleStatusesRequestProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.GetSafeModeRuleStatusesResponseProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.InSafeModeRequestProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.InSafeModeResponseProto;
@@ -121,7 +119,6 @@
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMListContainerIDsResponseProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMListContainerRequestProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SCMListContainerResponseProto;
-import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SafeModeRuleStatusProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ScmContainerLocationRequest;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ScmContainerLocationResponse;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ScmContainerLocationResponse.Status;
@@ -628,10 +625,12 @@ public ScmContainerLocationResponse processRequest(
request.getGetPipelineRequest(), request.getVersion()))
.build();
case GetSafeModeRuleStatuses:
+ final GetSafeModeRuleStatusesResponseProto proto =
GetSafeModeRuleStatusesResponseProto.newBuilder()
+ .addAllSafeModeRuleStatusesProto(impl.getSafeModeRuleStatuses())
+ .build();
return ScmContainerLocationResponse.newBuilder()
.setCmdType(request.getCmdType()).setStatus(Status.OK)
- .setGetSafeModeRuleStatusesResponse(getSafeModeRuleStatues(
- request.getGetSafeModeRuleStatusesRequest()))
+ .setGetSafeModeRuleStatusesResponse(proto)
.build();
case DecommissionNodes:
return ScmContainerLocationResponse.newBuilder()
@@ -1055,21 +1054,6 @@ public InSafeModeResponseProto inSafeMode(
}
- public GetSafeModeRuleStatusesResponseProto getSafeModeRuleStatues(
- GetSafeModeRuleStatusesRequestProto request) throws IOException {
- Map<String, Pair<Boolean, String>>
- map = impl.getSafeModeRuleStatuses();
- List<SafeModeRuleStatusProto> proto = new ArrayList();
- for (Map.Entry<String, Pair<Boolean, String>> entry : map.entrySet()) {
-
proto.add(SafeModeRuleStatusProto.newBuilder().setRuleName(entry.getKey())
- .setValidate(entry.getValue().getLeft())
- .setStatusText(entry.getValue().getRight())
- .build());
- }
- return GetSafeModeRuleStatusesResponseProto.newBuilder()
- .addAllSafeModeRuleStatusesProto(proto).build();
- }
-
public FinalizeScmUpgradeResponseProto getFinalizeScmUpgrade(
FinalizeScmUpgradeRequestProto request) throws IOException {
StatusAndMessages progress =
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/safemode/SCMSafeModeManager.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/safemode/SCMSafeModeManager.java
index b185f3a37fc..fff90db4a1d 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/safemode/SCMSafeModeManager.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/safemode/SCMSafeModeManager.java
@@ -23,8 +23,10 @@
import static
org.apache.hadoop.hdds.HddsConfigKeys.HDDS_SCM_SAFEMODE_RULE_REFRESH_INTERVAL_DEFAULT;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executors;
@@ -32,9 +34,9 @@
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.hdds.HddsConfigKeys;
import org.apache.hadoop.hdds.conf.ConfigurationSource;
+import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SafeModeRuleStatusProto;
import org.apache.hadoop.hdds.scm.container.ContainerManager;
import org.apache.hadoop.hdds.scm.ha.SCMContext;
import org.apache.hadoop.hdds.scm.ha.SCMService.Event;
@@ -271,13 +273,13 @@ public boolean getInSafeMode() {
}
/** Get the safe mode status of all rules. */
- public Map<String, Pair<Boolean, String>> getRuleStatus() {
- Map<String, Pair<Boolean, String>> map = new HashMap<>();
+ public List<SafeModeRuleStatusProto> getRuleStatus() {
+ final List<SafeModeRuleStatusProto> protos = new
ArrayList<>(exitRules.size());
for (SafeModeExitRule<?> exitRule : exitRules.values()) {
- map.put(exitRule.getRuleName(),
- Pair.of(exitRule.validate(), exitRule.getStatusText()));
+
protos.add(SafeModeRuleStatusProto.newBuilder().setRuleName(exitRule.getRuleName())
+
.setValidate(exitRule.validate()).setStatusText(exitRule.getStatusText()).build());
}
- return map;
+ return protos;
}
public boolean getPreCheckComplete() {
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java
index acb3e64a3ca..96b9efce50f 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java
@@ -49,7 +49,6 @@
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.fs.CommonConfigurationKeysPublic;
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
@@ -65,6 +64,7 @@
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ContainerBalancerStatusInfoResponseProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.DecommissionScmResponseProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.DecommissionScmResponseProto.Builder;
+import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SafeModeRuleStatusProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.StartContainerBalancerResponseProto;
import org.apache.hadoop.hdds.protocolPB.ReconfigureProtocolPB;
import
org.apache.hadoop.hdds.protocolPB.ReconfigureProtocolServerSideTranslatorPB;
@@ -1064,16 +1064,13 @@ public boolean inSafeMode() throws IOException {
}
@Override
- public Map<String, Pair<Boolean, String>> getSafeModeRuleStatuses()
- throws IOException {
+ public List<SafeModeRuleStatusProto> getSafeModeRuleStatuses() {
try {
- Map<String, Pair<Boolean, String>> result = scm.getRuleStatus();
- AUDIT.logReadSuccess(buildAuditMessageForSuccess(
- SCMAction.GET_SAFE_MODE_RULE_STATUSES, null));
+ final List<SafeModeRuleStatusProto> result = scm.getRuleStatus();
+
AUDIT.logReadSuccess(buildAuditMessageForSuccess(SCMAction.GET_SAFE_MODE_RULE_STATUSES,
null));
return result;
} catch (Exception ex) {
- AUDIT.logReadFailure(buildAuditMessageForFailure(
- SCMAction.GET_SAFE_MODE_RULE_STATUSES, null, ex));
+
AUDIT.logReadFailure(buildAuditMessageForFailure(SCMAction.GET_SAFE_MODE_RULE_STATUSES,
null, ex));
throw ex;
}
}
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
index 93df74a6ea7..745bea6ee1d 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
@@ -55,7 +55,6 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.management.ObjectName;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hdds.HddsConfigKeys;
import org.apache.hadoop.hdds.HddsUtils;
@@ -67,6 +66,7 @@
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeState;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.SCMCommandProto;
+import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SafeModeRuleStatusProto;
import
org.apache.hadoop.hdds.protocolPB.SCMSecurityProtocolClientSideTranslatorPB;
import org.apache.hadoop.hdds.scm.PipelineChoosePolicy;
import org.apache.hadoop.hdds.scm.PlacementPolicy;
@@ -2095,20 +2095,18 @@ public String getNamespace() {
/**
* Get the safe mode status of all rules.
*
- * @return map of rule statuses.
+ * @return list of rule statuses.
*/
- public Map<String, Pair<Boolean, String>> getRuleStatus() {
+ public List<SafeModeRuleStatusProto> getRuleStatus() {
return scmSafeModeManager.getRuleStatus();
}
@Override
public Map<String, String[]> getSafeModeRuleStatus() {
Map<String, String[]> map = new HashMap<>();
- for (Map.Entry<String, Pair<Boolean, String>> entry :
- scmSafeModeManager.getRuleStatus().entrySet()) {
- String[] status =
- {entry.getValue().getRight(), entry.getValue().getLeft().toString()};
- map.put(entry.getKey(), status);
+ for (SafeModeRuleStatusProto entry : scmSafeModeManager.getRuleStatus()) {
+ String[] status = {entry.getStatusText(),
Boolean.toString(entry.getValidate())};
+ map.put(entry.getRuleName(), status);
}
return map;
}
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestSCMSafeModeManager.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestSCMSafeModeManager.java
index cf262873eb0..d1556eeea0b 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestSCMSafeModeManager.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/safemode/TestSCMSafeModeManager.java
@@ -35,10 +35,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
import java.util.stream.Stream;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.hdds.HddsConfigKeys;
import org.apache.hadoop.hdds.client.RatisReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
@@ -47,6 +44,7 @@
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationType;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos;
+import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SafeModeRuleStatusProto;
import org.apache.hadoop.hdds.scm.HddsTestUtils;
import org.apache.hadoop.hdds.scm.ScmConfigKeys;
import org.apache.hadoop.hdds.scm.container.ContainerInfo;
@@ -86,7 +84,8 @@
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.jupiter.params.provider.ValueSource;
-/** Test class for SCMSafeModeManager.
+/**
+ * Test class for SCMSafeModeManager.
*/
public class TestSCMSafeModeManager {
@@ -478,13 +477,11 @@ public void
testSafeModeExitRuleWithPipelineAvailabilityCheck(
* @param stringToMatch string to match in the rule status.
*/
private void validateRuleStatus(String safeModeRule, String stringToMatch) {
- Set<Map.Entry<String, Pair<Boolean, String>>> ruleStatuses =
- scmSafeModeManager.getRuleStatus().entrySet();
- for (Map.Entry<String, Pair<Boolean, String>> entry : ruleStatuses) {
- if (entry.getKey().equals(safeModeRule)) {
- Pair<Boolean, String> value = entry.getValue();
- assertEquals(false, value.getLeft());
- assertThat(value.getRight()).containsIgnoringCase(stringToMatch);
+ List<SafeModeRuleStatusProto> ruleStatuses =
scmSafeModeManager.getRuleStatus();
+ for (SafeModeRuleStatusProto proto : ruleStatuses) {
+ if (proto.getRuleName().equals(safeModeRule)) {
+ assertFalse(proto.getValidate());
+ assertThat(proto.getStatusText()).containsIgnoringCase(stringToMatch);
}
}
}
@@ -1108,7 +1105,7 @@ public void
testSafeModePeriodicLoggingStopsOnNormalExit() throws Exception {
*/
private void verifyPeriodicLoggingActive(GenericTestUtils.LogCapturer
logCapturer)
throws InterruptedException {
- Map<String, Pair<Boolean, String>> ruleStatuses =
scmSafeModeManager.getRuleStatus();
+ List<SafeModeRuleStatusProto> ruleStatuses =
scmSafeModeManager.getRuleStatus();
for (int i = 0; i < 2; i++) {
logCapturer.clearOutput();
// Wait for configured interval (500ms + small buffer) for next log
message
@@ -1116,8 +1113,8 @@ private void
verifyPeriodicLoggingActive(GenericTestUtils.LogCapturer logCapture
String logOutput = logCapturer.getOutput();
assertThat(logOutput).contains("SCM SafeMode Status | state=");
- for (String ruleName : ruleStatuses.keySet()) {
- assertThat(logOutput).contains("SCM SafeMode Status | " + ruleName);
+ for (SafeModeRuleStatusProto proto: ruleStatuses) {
+ assertThat(logOutput).contains("SCM SafeMode Status | " +
proto.getRuleName());
}
}
}
diff --git
a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerOperationClient.java
b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerOperationClient.java
index 4cb429269cd..7fee21620d1 100644
---
a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerOperationClient.java
+++
b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerOperationClient.java
@@ -26,7 +26,6 @@
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.hdds.client.ReplicationConfig;
import org.apache.hadoop.hdds.conf.ConfigurationSource;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
@@ -37,6 +36,7 @@
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DeletedBlocksTransactionSummary;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.ContainerBalancerStatusInfoResponseProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.DecommissionScmResponseProto;
+import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SafeModeRuleStatusProto;
import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.StartContainerBalancerResponseProto;
import org.apache.hadoop.hdds.scm.DatanodeAdminError;
import org.apache.hadoop.hdds.scm.ScmConfigKeys;
@@ -375,8 +375,7 @@ public boolean inSafeMode() throws IOException {
}
@Override
- public Map<String, Pair<Boolean, String>> getSafeModeRuleStatuses()
- throws IOException {
+ public List<SafeModeRuleStatusProto> getSafeModeRuleStatuses() throws
IOException {
return storageContainerLocationClient.getSafeModeRuleStatuses();
}
diff --git
a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCheckSubcommand.java
b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCheckSubcommand.java
index 7af5ea3d0c6..d9064640105 100644
---
a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCheckSubcommand.java
+++
b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/SafeModeCheckSubcommand.java
@@ -20,16 +20,15 @@
import java.io.IOException;
import java.net.InetAddress;
import java.util.List;
-import java.util.Map;
import java.util.OptionalInt;
import java.util.concurrent.Callable;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.Pair;
import org.apache.hadoop.hdds.HddsUtils;
import org.apache.hadoop.hdds.cli.AbstractSubcommand;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
+import
org.apache.hadoop.hdds.protocol.proto.StorageContainerLocationProtocolProtos.SafeModeRuleStatusProto;
import org.apache.hadoop.hdds.scm.client.ScmClient;
import org.apache.hadoop.hdds.scm.ha.SCMNodeInfo;
import
org.apache.hadoop.hdds.scm.protocolPB.StorageContainerLocationProtocolClientSideTranslatorPB.ScmNodeTarget;
@@ -172,9 +171,11 @@ private void queryNode(ScmClient scmClient, ScmNodeTarget
targetScmNode, SCMNode
}
if (isVerbose()) {
- Map<String, Pair<Boolean, String>> rules =
scmClient.getSafeModeRuleStatuses();
+ List<SafeModeRuleStatusProto> rules =
scmClient.getSafeModeRuleStatuses();
if (rules != null && !rules.isEmpty()) {
- printSafeModeRules(rules);
+ for (SafeModeRuleStatusProto r : rules) {
+ System.out.printf("validated:%s, %s, %s%n", r.getValidate(),
r.getRuleName(), r.getStatusText());
+ }
}
}
} catch (Exception e) {
@@ -217,12 +218,4 @@ private boolean matchesAddress(String address1, String
address2) {
return false;
}
}
-
- private void printSafeModeRules(Map<String, Pair<Boolean, String>> rules) {
- for (Map.Entry<String, Pair<Boolean, String>> entry : rules.entrySet()) {
- Pair<Boolean, String> value = entry.getValue();
- System.out.printf("validated:%s, %s, %s%n",
- value.getLeft(), entry.getKey(), value.getRight());
- }
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]