diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStateManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStateManager.java
index 1bcd2d2f3c20..560cea4ff0d0 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStateManager.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStateManager.java
@@ -338,11 +338,9 @@ private NodeStatus newNodeStatus(DatanodeDetails dn,
LOG.info("Updating nodeOperationalState on registration as the " +
"datanode has a persisted state of {} and expiry of {}",
dnOpState, dn.getPersistedOpStateExpiryEpochSec());
- return new NodeStatus(dnOpState, state,
- dn.getPersistedOpStateExpiryEpochSec());
+ return NodeStatus.valueOf(dnOpState, state, dn.getPersistedOpStateExpiryEpochSec());
} else {
- return new NodeStatus(
- NodeOperationalState.IN_SERVICE, state);
+ return NodeStatus.valueOf(NodeOperationalState.IN_SERVICE, state);
}
}
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java
index 01d57d8329ca..5dbd6ee54beb 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/NodeStatus.java
@@ -17,101 +17,134 @@
package org.apache.hadoop.hdds.scm.node;
-import com.google.common.collect.ImmutableSet;
+import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeOperationalState.DECOMMISSIONED;
+import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeOperationalState.DECOMMISSIONING;
+import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeOperationalState.ENTERING_MAINTENANCE;
+import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeOperationalState.IN_MAINTENANCE;
+import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeOperationalState.IN_SERVICE;
+import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeState.DEAD;
+import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeState.HEALTHY;
+import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeState.HEALTHY_READONLY;
+import static org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeState.STALE;
+
+import java.util.Collections;
+import java.util.EnumMap;
import java.util.EnumSet;
+import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
+import org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeOperationalState;
+import org.apache.hadoop.hdds.protocol.proto.HddsProtos.NodeState;
/**
- * This class is used to capture the current status of a datanode. This
- * includes its health (healthy, stale or dead) and its operation status (
- * in_service, decommissioned and maintenance mode) along with the expiry time
- * for the operational state (used with maintenance mode).
+ * The status of a datanode including {@link NodeState}, {@link NodeOperationalState}
+ * and the expiry time for the operational state,
+ * where the expiry time is used in maintenance mode.
+ *
+ * This class is value-based.
*/
-public class NodeStatus implements Comparable {
-
- private static final Set
- MAINTENANCE_STATES = ImmutableSet.copyOf(EnumSet.of(
- HddsProtos.NodeOperationalState.ENTERING_MAINTENANCE,
- HddsProtos.NodeOperationalState.IN_MAINTENANCE
- ));
-
- private static final Set
- DECOMMISSION_STATES = ImmutableSet.copyOf(EnumSet.of(
- HddsProtos.NodeOperationalState.DECOMMISSIONING,
- HddsProtos.NodeOperationalState.DECOMMISSIONED
- ));
-
- private static final Set
- OUT_OF_SERVICE_STATES = ImmutableSet.copyOf(EnumSet.of(
- HddsProtos.NodeOperationalState.DECOMMISSIONING,
- HddsProtos.NodeOperationalState.DECOMMISSIONED,
- HddsProtos.NodeOperationalState.ENTERING_MAINTENANCE,
- HddsProtos.NodeOperationalState.IN_MAINTENANCE
- ));
-
- public static Set maintenanceStates() {
- return MAINTENANCE_STATES;
+public final class NodeStatus implements Comparable {
+ /** For the {@link NodeStatus} objects with {@link #opStateExpiryEpochSeconds} == 0. */
+ private static final Map> CONSTANT_MAP;
+ static {
+ final Map> map = new EnumMap<>(NodeOperationalState.class);
+ for (NodeOperationalState op : NodeOperationalState.values()) {
+ final EnumMap healthMap = new EnumMap<>(NodeState.class);
+ for (NodeState health : NodeState.values()) {
+ healthMap.put(health, new NodeStatus(health, op, 0));
+ }
+ map.put(op, healthMap);
+ }
+ CONSTANT_MAP = map;
}
- public static Set decommissionStates() {
- return DECOMMISSION_STATES;
+ /** @return a {@link NodeStatus} object with {@link #opStateExpiryEpochSeconds} == 0. */
+ public static NodeStatus valueOf(NodeOperationalState op, NodeState health) {
+ return CONSTANT_MAP.get(op).get(health);
}
- public static Set outOfServiceStates() {
- return OUT_OF_SERVICE_STATES;
+ /** @return a {@link NodeStatus} object. */
+ public static NodeStatus valueOf(NodeOperationalState op, NodeState health, long opExpiryEpochSeconds) {
+ return opExpiryEpochSeconds == 0 ? valueOf(op, health)
+ : new NodeStatus(health, op, opExpiryEpochSeconds);
}
- private HddsProtos.NodeOperationalState operationalState;
- private HddsProtos.NodeState health;
- private long opStateExpiryEpochSeconds;
+ private static final Set MAINTENANCE_STATES = Collections.unmodifiableSet(
+ EnumSet.of(ENTERING_MAINTENANCE, IN_MAINTENANCE));
+ /**
+ * @return the set consists of {@link NodeOperationalState#ENTERING_MAINTENANCE}
+ * and {@link NodeOperationalState#IN_MAINTENANCE}.
+ */
+ public static Set maintenanceStates() {
+ return MAINTENANCE_STATES;
+ }
- public NodeStatus(HddsProtos.NodeOperationalState operationalState,
- HddsProtos.NodeState health) {
- this.operationalState = operationalState;
- this.health = health;
- this.opStateExpiryEpochSeconds = 0;
+ private static final Set DECOMMISSION_STATES = Collections.unmodifiableSet(
+ EnumSet.of(DECOMMISSIONING, DECOMMISSIONED));
+ /**
+ * @return the set consists of {@link NodeOperationalState#DECOMMISSIONING}
+ * and {@link NodeOperationalState#DECOMMISSIONED}.
+ */
+ public static Set decommissionStates() {
+ return DECOMMISSION_STATES;
}
- public NodeStatus(HddsProtos.NodeOperationalState operationalState,
- HddsProtos.NodeState health,
- long opStateExpireEpocSeconds) {
- this.operationalState = operationalState;
- this.health = health;
- this.opStateExpiryEpochSeconds = opStateExpireEpocSeconds;
+ private static final Set OUT_OF_SERVICE_STATES = Collections.unmodifiableSet(
+ EnumSet.of(DECOMMISSIONING, DECOMMISSIONED, ENTERING_MAINTENANCE, IN_MAINTENANCE));
+ /**
+ * @return the set consists of {@link NodeOperationalState#DECOMMISSIONING},
+ * {@link NodeOperationalState#DECOMMISSIONED},
+ * {@link NodeOperationalState#ENTERING_MAINTENANCE}
+ * and {@link NodeOperationalState#IN_MAINTENANCE}.
+ */
+ public static Set outOfServiceStates() {
+ return OUT_OF_SERVICE_STATES;
}
+ private static final NodeStatus IN_SERVICE_HEALTHY = valueOf(IN_SERVICE, HEALTHY);
+ /** @return the status of {@link NodeOperationalState#IN_SERVICE} and {@link NodeState#HEALTHY}. */
public static NodeStatus inServiceHealthy() {
- return new NodeStatus(HddsProtos.NodeOperationalState.IN_SERVICE,
- HddsProtos.NodeState.HEALTHY);
+ return IN_SERVICE_HEALTHY;
}
+ private static final NodeStatus IN_SERVICE_HEALTHY_READONLY = valueOf(IN_SERVICE, HEALTHY_READONLY);
+ /** @return the status of {@link NodeOperationalState#IN_SERVICE} and {@link NodeState#HEALTHY_READONLY}. */
public static NodeStatus inServiceHealthyReadOnly() {
- return new NodeStatus(HddsProtos.NodeOperationalState.IN_SERVICE,
- HddsProtos.NodeState.HEALTHY_READONLY);
+ return IN_SERVICE_HEALTHY_READONLY;
}
+ private static final NodeStatus IN_SERVICE_STALE = NodeStatus.valueOf(IN_SERVICE, STALE);
+ /** @return the status of {@link NodeOperationalState#IN_SERVICE} and {@link NodeState#STALE}. */
public static NodeStatus inServiceStale() {
- return new NodeStatus(HddsProtos.NodeOperationalState.IN_SERVICE,
- HddsProtos.NodeState.STALE);
+ return IN_SERVICE_STALE;
}
+ private static final NodeStatus IN_SERVICE_DEAD = NodeStatus.valueOf(IN_SERVICE, DEAD);
+ /** @return the status of {@link NodeOperationalState#IN_SERVICE} and {@link NodeState#DEAD}. */
public static NodeStatus inServiceDead() {
- return new NodeStatus(HddsProtos.NodeOperationalState.IN_SERVICE,
- HddsProtos.NodeState.DEAD);
+ return IN_SERVICE_DEAD;
+ }
+
+ private final NodeState health;
+ private final NodeOperationalState operationalState;
+ private final long opStateExpiryEpochSeconds;
+
+ private NodeStatus(NodeState health, NodeOperationalState op, long opExpiryEpochSeconds) {
+ this.health = health;
+ this.operationalState = op;
+ this.opStateExpiryEpochSeconds = opExpiryEpochSeconds;
}
+ /** Is this node writeable ({@link NodeState#HEALTHY} and {@link NodeOperationalState#IN_SERVICE}) ? */
public boolean isNodeWritable() {
- return health == HddsProtos.NodeState.HEALTHY &&
- operationalState == HddsProtos.NodeOperationalState.IN_SERVICE;
+ return health == HEALTHY && operationalState == IN_SERVICE;
}
- public HddsProtos.NodeState getHealth() {
+ public NodeState getHealth() {
return health;
}
- public HddsProtos.NodeOperationalState getOperationalState() {
+ public NodeOperationalState getOperationalState() {
return operationalState;
}
@@ -119,102 +152,68 @@ public long getOpStateExpiryEpochSeconds() {
return opStateExpiryEpochSeconds;
}
+ /** Is the op expired? */
public boolean operationalStateExpired() {
- if (0 == opStateExpiryEpochSeconds) {
- return false;
- }
- return System.currentTimeMillis() / 1000 >= opStateExpiryEpochSeconds;
+ return opStateExpiryEpochSeconds != 0
+ && System.currentTimeMillis() >= 1000 * opStateExpiryEpochSeconds;
}
+ /** @return true iff the node is {@link NodeOperationalState#IN_SERVICE}. */
public boolean isInService() {
- return operationalState == HddsProtos.NodeOperationalState.IN_SERVICE;
+ return operationalState == IN_SERVICE;
}
/**
- * Returns true if the nodeStatus indicates the node is in any decommission
- * state.
- *
- * @return True if the node is in any decommission state, false otherwise
+ * @return true iff the node is {@link NodeOperationalState#DECOMMISSIONING}
+ * or {@link NodeOperationalState#DECOMMISSIONED}.
*/
public boolean isDecommission() {
return DECOMMISSION_STATES.contains(operationalState);
}
- /**
- * Returns true if the node is currently decommissioning.
- *
- * @return True if the node is decommissioning, false otherwise
- */
+ /** @return true iff the node is {@link NodeOperationalState#DECOMMISSIONING}. */
public boolean isDecommissioning() {
- return operationalState == HddsProtos.NodeOperationalState.DECOMMISSIONING;
+ return operationalState == DECOMMISSIONING;
}
- /**
- * Returns true if the node is decommissioned.
- *
- * @return True if the node is decommissioned, false otherwise
- */
+ /** @return true iff the node is {@link NodeOperationalState#DECOMMISSIONED}. */
public boolean isDecommissioned() {
- return operationalState == HddsProtos.NodeOperationalState.DECOMMISSIONED;
+ return operationalState == DECOMMISSIONED;
}
/**
- * Returns true if the node is in any maintenance state.
- *
- * @return True if the node is in any maintenance state, false otherwise
+ * @return true iff the node is {@link NodeOperationalState#ENTERING_MAINTENANCE}
+ * or {@link NodeOperationalState#IN_MAINTENANCE}.
*/
public boolean isMaintenance() {
- return MAINTENANCE_STATES.contains(operationalState);
+ return maintenanceStates().contains(operationalState);
}
- /**
- * Returns true if the node is currently entering maintenance.
- *
- * @return True if the node is entering maintenance, false otherwise
- */
+ /** @return true iff the node is {@link NodeOperationalState#ENTERING_MAINTENANCE}. */
public boolean isEnteringMaintenance() {
- return operationalState
- == HddsProtos.NodeOperationalState.ENTERING_MAINTENANCE;
+ return operationalState == ENTERING_MAINTENANCE;
}
- /**
- * Returns true if the node is currently in maintenance.
- *
- * @return True if the node is in maintenance, false otherwise.
- */
+ /** @return true iff the node is {@link NodeOperationalState#IN_MAINTENANCE}. */
public boolean isInMaintenance() {
- return operationalState == HddsProtos.NodeOperationalState.IN_MAINTENANCE;
+ return operationalState == IN_MAINTENANCE;
}
- /**
- * Returns true if the nodeStatus is healthy or healthy_readonly (ie not stale
- * or dead) and false otherwise.
- *
- * @return True if the node is healthy or healthy_readonly, false otherwise.
- */
+ /** @return true iff this node is {@link NodeState#HEALTHY} or {@link NodeState#HEALTHY_READONLY}. */
public boolean isHealthy() {
- return health == HddsProtos.NodeState.HEALTHY
- || health == HddsProtos.NodeState.HEALTHY_READONLY;
+ return health == HEALTHY
+ || health == HEALTHY_READONLY;
}
- /**
- * Returns true if the nodeStatus is either healthy or stale and false
- * otherwise.
- *
- * @return True is the node is Healthy or Stale, false otherwise.
- */
+ /** @return true iff this node is {@link NodeState#HEALTHY} or {@link NodeState#STALE}. */
public boolean isAlive() {
- return health == HddsProtos.NodeState.HEALTHY
- || health == HddsProtos.NodeState.STALE;
+ return health == HEALTHY
+ || health == STALE;
}
- /**
- * Returns true if the nodeStatus is dead and false otherwise.
- *
- * @return True is the node is Dead, false otherwise.
- */
+ /** @return true iff the node is {@link NodeState#DEAD}. */
public boolean isDead() {
- return health == HddsProtos.NodeState.DEAD;
+ return health == DEAD;
}
@Override
@@ -228,13 +227,10 @@ public boolean equals(Object obj) {
if (getClass() != obj.getClass()) {
return false;
}
- NodeStatus other = (NodeStatus) obj;
- if (this.operationalState == other.operationalState &&
- this.health == other.health
- && this.opStateExpiryEpochSeconds == other.opStateExpiryEpochSeconds) {
- return true;
- }
- return false;
+ final NodeStatus that = (NodeStatus) obj;
+ return this.operationalState == that.operationalState
+ && this.health == that.health
+ && this.opStateExpiryEpochSeconds == that.opStateExpiryEpochSeconds;
}
@Override
@@ -244,8 +240,8 @@ public int hashCode() {
@Override
public String toString() {
- return "OperationalState: " + operationalState + " Health: " + health +
- " OperationStateExpiry: " + opStateExpiryEpochSeconds;
+ return "OperationalState: " + operationalState
+ + "(expiry: " + opStateExpiryEpochSeconds + "s), Health: " + health;
}
@Override
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/NodeStateMap.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/NodeStateMap.java
index b2b9884ea162..c41e02459a63 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/NodeStateMap.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/NodeStateMap.java
@@ -146,8 +146,7 @@ public NodeStatus updateNodeHealthState(UUID nodeId, NodeState newHealth)
lock.writeLock().lock();
DatanodeInfo dn = getNodeInfoUnsafe(nodeId);
NodeStatus oldStatus = dn.getNodeStatus();
- NodeStatus newStatus = new NodeStatus(
- oldStatus.getOperationalState(), newHealth);
+ NodeStatus newStatus = NodeStatus.valueOf(oldStatus.getOperationalState(), newHealth);
dn.setNodeStatus(newStatus);
return newStatus;
} finally {
@@ -170,8 +169,7 @@ public NodeStatus updateNodeOperationalState(UUID nodeId,
lock.writeLock().lock();
DatanodeInfo dn = getNodeInfoUnsafe(nodeId);
NodeStatus oldStatus = dn.getNodeStatus();
- NodeStatus newStatus = new NodeStatus(
- newOpState, oldStatus.getHealth(), opStateExpiryEpochSeconds);
+ NodeStatus newStatus = NodeStatus.valueOf(newOpState, oldStatus.getHealth(), opStateExpiryEpochSeconds);
dn.setNodeStatus(newStatus);
return newStatus;
} finally {
@@ -440,7 +438,7 @@ private void checkIfNodeExist(UUID uuid) throws NodeNotFoundException {
private List filterNodes(
NodeOperationalState opState, NodeState health) {
if (opState != null && health != null) {
- return filterNodes(matching(new NodeStatus(opState, health)));
+ return filterNodes(matching(NodeStatus.valueOf(opState, health)));
}
if (opState != null) {
return filterNodes(matching(opState));
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/SimpleMockNodeManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/SimpleMockNodeManager.java
index 085a28244404..9c4b7e659b86 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/SimpleMockNodeManager.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/SimpleMockNodeManager.java
@@ -130,7 +130,7 @@ public void setNodeOperationalState(DatanodeDetails dn,
throw new NodeNotFoundException();
}
dni.setNodeStatus(
- new NodeStatus(
+ NodeStatus.valueOf(
newState, dni.getNodeStatus().getHealth(), opStateExpiryEpocSec));
}
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestMoveManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestMoveManager.java
index cd6096893631..2f5df49e1607 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestMoveManager.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/balancer/TestMoveManager.java
@@ -148,7 +148,7 @@ public void testMoveSourceOrDestNotInService() throws NodeNotFoundException,
assertMoveFailsWith(REPLICATION_FAIL_NODE_UNHEALTHY,
containerInfo.containerID());
- nodes.put(src, new NodeStatus(
+ nodes.put(src, NodeStatus.valueOf(
HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
nodes.put(tgt, NodeStatus.inServiceHealthy());
@@ -156,7 +156,7 @@ public void testMoveSourceOrDestNotInService() throws NodeNotFoundException,
containerInfo.containerID());
nodes.put(src, NodeStatus.inServiceHealthy());
- nodes.put(tgt, new NodeStatus(
+ nodes.put(tgt, NodeStatus.valueOf(
HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
assertMoveFailsWith(REPLICATION_FAIL_NODE_NOT_IN_SERVICE,
@@ -463,7 +463,7 @@ public void testMoveCompleteSrcNotHealthy() throws Exception {
public void testMoveCompleteSrcNotInService() throws Exception {
CompletableFuture res = setupSuccessfulMove();
- nodes.put(src, new NodeStatus(
+ nodes.put(src, NodeStatus.valueOf(
HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
ContainerReplicaOp op = new ContainerReplicaOp(
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementRackAware.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementRackAware.java
index 6942cda70ec1..e5c396fefa3c 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementRackAware.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementRackAware.java
@@ -616,7 +616,7 @@ public void testOutOfServiceNodesNotSelected(int datanodeCount) {
setup(datanodeCount);
// Set all the nodes to out of service
for (DatanodeInfo dn : dnInfos) {
- dn.setNodeStatus(new NodeStatus(DECOMMISSIONED, HEALTHY));
+ dn.setNodeStatus(NodeStatus.valueOf(DECOMMISSIONED, HEALTHY));
}
for (int i = 0; i < 10; i++) {
@@ -632,7 +632,7 @@ public void testOutOfServiceNodesNotSelected(int datanodeCount) {
// ok, as there is only 1 IN_SERVICE node and with the retry logic we
// may never find it.
}
- dnInfos.get(index).setNodeStatus(new NodeStatus(DECOMMISSIONED, HEALTHY));
+ dnInfos.get(index).setNodeStatus(NodeStatus.valueOf(DECOMMISSIONED, HEALTHY));
}
}
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementRackScatter.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementRackScatter.java
index 235a4563c1fd..07e015c660b8 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementRackScatter.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/placement/algorithms/TestSCMContainerPlacementRackScatter.java
@@ -826,7 +826,7 @@ public void testExcludedNodesOverlapsOutOfServiceNodes() throws SCMException {
setup(datanodeCount);
// DN 5 is out of service
- dnInfos.get(5).setNodeStatus(new NodeStatus(DECOMMISSIONED, HEALTHY));
+ dnInfos.get(5).setNodeStatus(NodeStatus.valueOf(DECOMMISSIONED, HEALTHY));
// SCM should have detected that DN 5 is dead
cluster.remove(datanodes.get(5));
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestECOverReplicationHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestECOverReplicationHandler.java
index 073c2e959cee..2fc978794deb 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestECOverReplicationHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestECOverReplicationHandler.java
@@ -92,11 +92,9 @@ void setup(@TempDir File testDir) throws NodeNotFoundException, NotLeaderExcepti
.thenAnswer(invocation -> {
DatanodeDetails dd = invocation.getArgument(0);
if (staleNode != null && staleNode.equals(dd)) {
- return new NodeStatus(dd.getPersistedOpState(),
- HddsProtos.NodeState.STALE, 0);
+ return NodeStatus.valueOf(dd.getPersistedOpState(), HddsProtos.NodeState.STALE);
}
- return new NodeStatus(dd.getPersistedOpState(),
- HddsProtos.NodeState.HEALTHY, 0);
+ return NodeStatus.valueOf(dd.getPersistedOpState(), HddsProtos.NodeState.HEALTHY);
});
commandsSent = new HashSet<>();
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestECUnderReplicationHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestECUnderReplicationHandler.java
index fe2e6e4da6e8..8a18c1ba1ddb 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestECUnderReplicationHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestECUnderReplicationHandler.java
@@ -131,8 +131,7 @@ void setup(@TempDir File testDir) throws NodeNotFoundException,
nodeManager = new MockNodeManager(true, 10) {
@Override
public NodeStatus getNodeStatus(DatanodeDetails dd) {
- return new NodeStatus(
- dd.getPersistedOpState(), HddsProtos.NodeState.HEALTHY, 0);
+ return NodeStatus.valueOf(dd.getPersistedOpState(), HddsProtos.NodeState.HEALTHY);
}
};
replicationManager = mock(ReplicationManager.class);
@@ -146,8 +145,7 @@ public NodeStatus getNodeStatus(DatanodeDetails dd) {
when(replicationManager.getNodeStatus(any(DatanodeDetails.class)))
.thenAnswer(invocation -> {
DatanodeDetails dd = invocation.getArgument(0);
- return new NodeStatus(dd.getPersistedOpState(),
- HddsProtos.NodeState.HEALTHY, 0);
+ return NodeStatus.valueOf(dd.getPersistedOpState(), HddsProtos.NodeState.HEALTHY);
});
commandsSent = new HashSet<>();
@@ -392,11 +390,10 @@ public void testUnderReplicationWithDecomIndexAndMaintOnSameIndex()
@Override
public NodeStatus getNodeStatus(DatanodeDetails dd) {
if (dd.equals(deadMaintenance.getDatanodeDetails())) {
- return new NodeStatus(dd.getPersistedOpState(),
+ return NodeStatus.valueOf(dd.getPersistedOpState(),
HddsProtos.NodeState.DEAD);
}
- return new NodeStatus(
- dd.getPersistedOpState(), HddsProtos.NodeState.HEALTHY, 0);
+ return NodeStatus.valueOf(dd.getPersistedOpState(), HddsProtos.NodeState.HEALTHY);
}
};
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestMisReplicationHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestMisReplicationHandler.java
index ff6df90b51c9..43824f8886ca 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestMisReplicationHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestMisReplicationHandler.java
@@ -86,8 +86,8 @@ protected void setup(ReplicationConfig repConfig, File testDir)
when(replicationManager.getNodeStatus(any(DatanodeDetails.class)))
.thenAnswer(invocation -> {
DatanodeDetails dd = invocation.getArgument(0);
- return new NodeStatus(dd.getPersistedOpState(),
- HddsProtos.NodeState.HEALTHY, 0);
+ return NodeStatus.valueOf(dd.getPersistedOpState(),
+ HddsProtos.NodeState.HEALTHY);
});
ReplicationManagerConfiguration rmConf =
conf.getObject(ReplicationManagerConfiguration.class);
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestQuasiClosedStuckOverReplicationHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestQuasiClosedStuckOverReplicationHandler.java
index 20f6de21b03e..6d6a342f5f75 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestQuasiClosedStuckOverReplicationHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestQuasiClosedStuckOverReplicationHandler.java
@@ -85,7 +85,7 @@ void setup() throws NodeNotFoundException,
replicationManager.getNodeStatus(any(DatanodeDetails.class)))
.thenAnswer(invocationOnMock -> {
DatanodeDetails dn = invocationOnMock.getArgument(0);
- return new NodeStatus(dn.getPersistedOpState(),
+ return NodeStatus.valueOf(dn.getPersistedOpState(),
HddsProtos.NodeState.HEALTHY);
});
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestQuasiClosedStuckUnderReplicationHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestQuasiClosedStuckUnderReplicationHandler.java
index 2c46aea502cf..a43a04fa26d7 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestQuasiClosedStuckUnderReplicationHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestQuasiClosedStuckUnderReplicationHandler.java
@@ -98,7 +98,7 @@ void setup(@TempDir File testDir) throws NodeNotFoundException,
replicationManager.getNodeStatus(any(DatanodeDetails.class)))
.thenAnswer(invocationOnMock -> {
DatanodeDetails dn = invocationOnMock.getArgument(0);
- return new NodeStatus(dn.getPersistedOpState(),
+ return NodeStatus.valueOf(dn.getPersistedOpState(),
HddsProtos.NodeState.HEALTHY);
});
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisOverReplicationHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisOverReplicationHandler.java
index 3a15358a0789..471e60173f9d 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisOverReplicationHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisOverReplicationHandler.java
@@ -94,8 +94,7 @@ public void setup() throws NodeNotFoundException, NotLeaderException,
when(replicationManager.getNodeStatus(any(DatanodeDetails.class)))
.thenAnswer(invocation -> {
DatanodeDetails dd = invocation.getArgument(0);
- return new NodeStatus(dd.getPersistedOpState(),
- HddsProtos.NodeState.HEALTHY, 0);
+ return NodeStatus.valueOf(dd.getPersistedOpState(), HddsProtos.NodeState.HEALTHY);
});
commandsSent = new HashSet<>();
@@ -208,8 +207,7 @@ public void testOverReplicatedQuasiClosedContainerWithDifferentOrigins()
when(replicationManager.getNodeStatus(eq(staleNode)))
.thenAnswer(invocation -> {
DatanodeDetails dd = invocation.getArgument(0);
- return new NodeStatus(dd.getPersistedOpState(),
- HddsProtos.NodeState.STALE, 0);
+ return NodeStatus.valueOf(dd.getPersistedOpState(), HddsProtos.NodeState.STALE);
});
testProcessing(replicas, Collections.emptyList(),
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisUnderReplicationHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisUnderReplicationHandler.java
index b722fd08f6fa..21bc259b1a2e 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisUnderReplicationHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestRatisUnderReplicationHandler.java
@@ -115,7 +115,7 @@ void setup(@TempDir File testDir) throws NodeNotFoundException,
replicationManager.getNodeStatus(any(DatanodeDetails.class)))
.thenAnswer(invocationOnMock -> {
DatanodeDetails dn = invocationOnMock.getArgument(0);
- return new NodeStatus(dn.getPersistedOpState(),
+ return NodeStatus.valueOf(dn.getPersistedOpState(),
HddsProtos.NodeState.HEALTHY);
});
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerScenarios.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerScenarios.java
index 79f6299bace2..7b35ee269bba 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerScenarios.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerScenarios.java
@@ -447,7 +447,7 @@ public DatanodeDetails getDatanodeDetails() {
public ContainerReplica buildContainerReplica() {
createDatanodeDetails();
createOrigin();
- NODE_STATUS_MAP.put(datanodeDetails, new NodeStatus(operationalState, healthState));
+ NODE_STATUS_MAP.put(datanodeDetails, NodeStatus.valueOf(operationalState, healthState));
datanodeDetails.setPersistedOpState(operationalState);
ContainerReplica.ContainerReplicaBuilder builder = new ContainerReplica.ContainerReplicaBuilder();
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerUtil.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerUtil.java
index 24ba6f268495..588bfe5c67dd 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerUtil.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/TestReplicationManagerUtil.java
@@ -105,7 +105,7 @@ public void testGetExcludedAndUsedNodes() throws NodeNotFoundException {
final DatanodeDetails dn = invocation.getArgument(0);
for (ContainerReplica r : replicas) {
if (r.getDatanodeDetails().equals(dn)) {
- return new NodeStatus(
+ return NodeStatus.valueOf(
r.getDatanodeDetails().getPersistedOpState(),
HddsProtos.NodeState.HEALTHY);
}
@@ -189,7 +189,7 @@ public void testGetUsedAndExcludedNodesForQuasiClosedContainer() throws NodeNotF
final DatanodeDetails dn = invocation.getArgument(0);
for (ContainerReplica r : replicas) {
if (r.getDatanodeDetails().equals(dn)) {
- return new NodeStatus(
+ return NodeStatus.valueOf(
r.getDatanodeDetails().getPersistedOpState(),
HddsProtos.NodeState.HEALTHY);
}
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestVulnerableUnhealthyReplicasHandler.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestVulnerableUnhealthyReplicasHandler.java
index 451c87304db0..61e9ab86328b 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestVulnerableUnhealthyReplicasHandler.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/container/replication/health/TestVulnerableUnhealthyReplicasHandler.java
@@ -148,7 +148,7 @@ public void testReturnsTrueForQuasiClosedContainerWithVulnerableReplica() throws
.thenAnswer(invocation -> {
DatanodeDetails dn = invocation.getArgument(0);
if (dn.equals(unhealthy.getDatanodeDetails())) {
- return new NodeStatus(DECOMMISSIONING, HEALTHY);
+ return NodeStatus.valueOf(DECOMMISSIONING, HEALTHY);
}
return NodeStatus.inServiceHealthy();
});
@@ -191,7 +191,7 @@ public void testReturnsTrueForQuasiClosedContainerWithVulnerableReplicaWhenAllRe
.thenAnswer(invocation -> {
DatanodeDetails dn = invocation.getArgument(0);
if (dn.equals(unhealthy.getDatanodeDetails())) {
- return new NodeStatus(DECOMMISSIONING, HEALTHY);
+ return NodeStatus.valueOf(DECOMMISSIONING, HEALTHY);
}
return NodeStatus.inServiceHealthy();
});
@@ -219,7 +219,7 @@ public void testReturnsFalseForVulnerableReplicaWithAnotherCopy() throws NodeNot
.thenAnswer(invocation -> {
DatanodeDetails dn = invocation.getArgument(0);
if (dn.equals(unhealthy.getDatanodeDetails())) {
- return new NodeStatus(DECOMMISSIONING, HEALTHY);
+ return NodeStatus.valueOf(DECOMMISSIONING, HEALTHY);
}
return NodeStatus.inServiceHealthy();
});
@@ -250,7 +250,7 @@ public void testDoesNotEnqueueForReadOnlyRequest() throws NodeNotFoundException
.thenAnswer(invocation -> {
DatanodeDetails dn = invocation.getArgument(0);
if (dn.equals(unhealthy.getDatanodeDetails())) {
- return new NodeStatus(DECOMMISSIONING, HEALTHY);
+ return NodeStatus.valueOf(DECOMMISSIONING, HEALTHY);
}
return NodeStatus.inServiceHealthy();
});
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestDatanodeAdminMonitor.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestDatanodeAdminMonitor.java
index 2711bad59095..b97d6a2bbb63 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestDatanodeAdminMonitor.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestDatanodeAdminMonitor.java
@@ -115,7 +115,7 @@ public void testClosePipelinesEventFiredWhenAdminStarted()
throws NodeNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
// Ensure the node has some pipelines
nodeManager.setPipelines(dn1, 2);
@@ -154,7 +154,7 @@ public void testDecommissionNodeTransitionsToCompleteWhenNoContainers()
throws NodeNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
// Add the node to the monitor. By default we have zero pipelines and
@@ -173,7 +173,7 @@ public void testDecommissionNodeWaitsForContainersToReplicate()
throws NodeNotFoundException, ContainerNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
nodeManager.setContainers(dn1, generateContainers(3));
@@ -236,7 +236,7 @@ public void testDecommissionWaitsForUnhealthyReplicaToReplicateNewRM()
throws NodeNotFoundException, ContainerNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
// create 3 QUASI_CLOSED replicas with containerID 1 and same origin ID
@@ -307,7 +307,7 @@ public void testDecommissionWaitsForUnhealthyReplicaWithUniqueOriginToReplicateN
throws NodeNotFoundException, ContainerNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING, HddsProtos.NodeState.HEALTHY));
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING, HddsProtos.NodeState.HEALTHY));
// create a container and 3 QUASI_CLOSED replicas with containerID 1 and same origin ID
ContainerID containerID = ContainerID.valueOf(1);
@@ -364,7 +364,7 @@ public void testDecommissionNotBlockedByDeletingContainers()
throws NodeNotFoundException, ContainerNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
nodeManager.setContainers(dn1, generateContainers(3));
@@ -393,7 +393,7 @@ public void testDecommissionNodeWithUnrecoverableECContainer()
throws NodeNotFoundException, ContainerNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
nodeManager.setContainers(dn1, generateContainers(1));
@@ -451,7 +451,7 @@ public void testDecommissionAbortedWhenNodeInUnexpectedState()
throws NodeNotFoundException, ContainerNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
nodeManager.setContainers(dn1, generateContainers(3));
@@ -475,7 +475,7 @@ public void testDecommissionAbortedWhenNodeInUnexpectedState()
// Set the node to dead, and then the workflow should get aborted, setting
// the node state back to IN_SERVICE on the next run.
nodeManager.setNodeStatus(dn1,
- new NodeStatus(IN_SERVICE,
+ NodeStatus.valueOf(IN_SERVICE,
HddsProtos.NodeState.HEALTHY));
monitor.run();
assertEquals(0, monitor.getTrackedNodeCount());
@@ -488,7 +488,7 @@ public void testDecommissionAbortedWhenNodeGoesDead()
throws NodeNotFoundException, ContainerNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
nodeManager.setContainers(dn1, generateContainers(3));
@@ -512,7 +512,7 @@ public void testDecommissionAbortedWhenNodeGoesDead()
// Set the node to dead, and then the workflow should get aborted, setting
// the node state back to IN_SERVICE.
nodeManager.setNodeStatus(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.DEAD));
monitor.run();
assertEquals(0, monitor.getTrackedNodeCount());
@@ -525,7 +525,7 @@ public void testStartTimeMetricWhenNodesDecommissioned()
throws NodeNotFoundException, ContainerNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
nodeManager.setContainers(dn1, generateContainers(3));
DatanodeAdminMonitorTestUtil
@@ -554,7 +554,7 @@ public void testMaintenanceWaitsForMaintenanceToComplete()
throws NodeNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(ENTERING_MAINTENANCE,
+ NodeStatus.valueOf(ENTERING_MAINTENANCE,
HddsProtos.NodeState.HEALTHY));
// Add the node to the monitor, it should transiting to
@@ -585,7 +585,7 @@ public void testMaintenanceEndsClosingPipelines()
throws NodeNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(ENTERING_MAINTENANCE,
+ NodeStatus.valueOf(ENTERING_MAINTENANCE,
HddsProtos.NodeState.HEALTHY));
// Ensure the node has some pipelines
nodeManager.setPipelines(dn1, 2);
@@ -611,7 +611,7 @@ public void testMaintenanceEndsWhileReplicatingContainers()
throws ContainerNotFoundException, NodeNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(ENTERING_MAINTENANCE,
+ NodeStatus.valueOf(ENTERING_MAINTENANCE,
HddsProtos.NodeState.HEALTHY));
nodeManager.setContainers(dn1, generateContainers(3));
@@ -646,7 +646,7 @@ public void testDeadMaintenanceNodeDoesNotAbortWorkflow()
throws NodeNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(ENTERING_MAINTENANCE,
+ NodeStatus.valueOf(ENTERING_MAINTENANCE,
HddsProtos.NodeState.HEALTHY));
// Add the node to the monitor, it should transiting to
@@ -658,7 +658,7 @@ public void testDeadMaintenanceNodeDoesNotAbortWorkflow()
// Set the node dead and ensure the workflow does not end
NodeStatus status = nodeManager.getNodeStatus(dn1);
- nodeManager.setNodeStatus(dn1, new NodeStatus(
+ nodeManager.setNodeStatus(dn1, NodeStatus.valueOf(
status.getOperationalState(), HddsProtos.NodeState.DEAD));
// Running the monitor again causes the node to remain in maintenance
@@ -672,7 +672,7 @@ public void testCancelledNodesMovedToInService()
throws NodeNotFoundException {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(ENTERING_MAINTENANCE,
+ NodeStatus.valueOf(ENTERING_MAINTENANCE,
HddsProtos.NodeState.HEALTHY));
// Add the node to the monitor, it should transiting to
@@ -696,7 +696,7 @@ public void testContainersReplicatedOnDecomDnAPI()
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
Set containers = new HashSet<>();
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java
index 3c71ee4e04e3..a4a350719ae3 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionManager.java
@@ -1044,7 +1044,7 @@ private NodeStatus getNodeOpState(DatanodeDetails dn, List dns)
}
for (DatanodeDetails datanode : dns) {
if (datanode.equals(dn)) {
- return new NodeStatus(datanode.getPersistedOpState(), HddsProtos.NodeState.HEALTHY);
+ return NodeStatus.valueOf(datanode.getPersistedOpState(), HddsProtos.NodeState.HEALTHY);
}
}
return null;
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionMetrics.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionMetrics.java
index d7462c3777fc..e60de693fca6 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionMetrics.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeDecommissionMetrics.java
@@ -85,7 +85,7 @@ public void after() {
public void testDecommMonitorCollectTrackedNodes() {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(ENTERING_MAINTENANCE,
+ NodeStatus.valueOf(ENTERING_MAINTENANCE,
HddsProtos.NodeState.HEALTHY));
monitor.startMonitoring(dn1);
monitor.run();
@@ -100,7 +100,7 @@ public void testDecommMonitorCollectTrackedNodes() {
public void testDecommMonitorCollectRecommissionNodes() {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(DECOMMISSIONING,
+ NodeStatus.valueOf(DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
monitor.startMonitoring(dn1);
monitor.run();
@@ -122,7 +122,7 @@ public void testDecommMonitorCollectPipelinesWaitingClosed() {
"datanode_host1",
"/r1/ng1");
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
// Ensure the node has some pipelines
nodeManager.setPipelines(dn1, 2);
@@ -155,7 +155,7 @@ public void testDecommMonitorCollectUnderReplicated()
"datanode_host1",
"/r1/ng1");
nodeManager.register(dn1,
- new NodeStatus(HddsProtos.NodeOperationalState.DECOMMISSIONING,
+ NodeStatus.valueOf(HddsProtos.NodeOperationalState.DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
Set containers = new HashSet<>();
@@ -195,7 +195,7 @@ public void testDecommMonitorCollectSufficientlyReplicated()
"datanode_host1",
"/r1/ng1");
nodeManager.register(dn1,
- new NodeStatus(DECOMMISSIONING,
+ NodeStatus.valueOf(DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
Set containers = new HashSet<>();
containers.add(ContainerID.valueOf(1));
@@ -233,7 +233,7 @@ public void testDecommMonitorCollectUnclosedContainers()
"datanode_host1",
"/r1/ng1");
nodeManager.register(dn1,
- new NodeStatus(DECOMMISSIONING,
+ NodeStatus.valueOf(DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
Set containers = new HashSet<>();
containers.add(ContainerID.valueOf(1));
@@ -269,10 +269,10 @@ public void testDecommMonitorCollectionMultipleDnContainers()
DatanodeDetails dn2 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(DECOMMISSIONING,
+ NodeStatus.valueOf(DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
nodeManager.register(dn2,
- new NodeStatus(DECOMMISSIONING,
+ NodeStatus.valueOf(DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
Set containersDn1 = new HashSet<>();
@@ -312,10 +312,10 @@ public void testDecommMonitorCollectionMultipleDnPipelines() {
DatanodeDetails dn2 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(DECOMMISSIONING,
+ NodeStatus.valueOf(DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
nodeManager.register(dn2,
- new NodeStatus(DECOMMISSIONING,
+ NodeStatus.valueOf(DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
nodeManager.setPipelines(dn1, 2);
@@ -334,7 +334,7 @@ public void testDecommMonitorStartTimeForHost() {
DatanodeDetails dn1 = MockDatanodeDetails.randomDatanodeDetails();
nodeManager.register(dn1,
- new NodeStatus(DECOMMISSIONING,
+ NodeStatus.valueOf(DECOMMISSIONING,
HddsProtos.NodeState.HEALTHY));
nodeManager.setPipelines(dn1, 2);
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeStatus.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeStatus.java
index d7e319407242..01ceab3ab33c 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeStatus.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestNodeStatus.java
@@ -40,27 +40,27 @@ class TestNodeStatus {
@ParameterizedTest
@EnumSource
void readOnly(HddsProtos.NodeOperationalState state) {
- assertEquals(0, new NodeStatus(state, HEALTHY)
- .compareTo(new NodeStatus(state, HEALTHY_READONLY)));
+ assertEquals(0, NodeStatus.valueOf(state, HEALTHY)
+ .compareTo(NodeStatus.valueOf(state, HEALTHY_READONLY)));
}
@Test
void healthyFirst() {
assertThat(0).isGreaterThan(inServiceHealthy().compareTo(inServiceStale()));
assertThat(0).isLessThan(inServiceDead().compareTo(inServiceHealthy()));
- assertThat(0).isGreaterThan(new NodeStatus(ENTERING_MAINTENANCE, HEALTHY).compareTo(
+ assertThat(0).isGreaterThan(NodeStatus.valueOf(ENTERING_MAINTENANCE, HEALTHY).compareTo(
inServiceStale()
));
assertThat(0).isLessThan(inServiceStale().compareTo(
- new NodeStatus(DECOMMISSIONING, HEALTHY)
+ NodeStatus.valueOf(DECOMMISSIONING, HEALTHY)
));
}
@Test
void inServiceFirst() {
assertThat(0).isGreaterThan(inServiceHealthy().compareTo(
- new NodeStatus(ENTERING_MAINTENANCE, HEALTHY)));
- assertThat(0).isLessThan(new NodeStatus(DECOMMISSIONING, HEALTHY).compareTo(
+ NodeStatus.valueOf(ENTERING_MAINTENANCE, HEALTHY)));
+ assertThat(0).isLessThan(NodeStatus.valueOf(DECOMMISSIONING, HEALTHY).compareTo(
inServiceHealthy()
));
}
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/states/TestNodeStateMap.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/states/TestNodeStateMap.java
index 82775e4962e5..27654816f0bd 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/states/TestNodeStateMap.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/states/TestNodeStateMap.java
@@ -81,7 +81,7 @@ public void testNodeOperationalStateCanBeUpdated()
NodeStatus status = NodeStatus.inServiceHealthy();
map.addNode(dn, status, null);
- NodeStatus expectedStatus = new NodeStatus(
+ NodeStatus expectedStatus = NodeStatus.valueOf(
NodeOperationalState.DECOMMISSIONING,
NodeState.HEALTHY, 999);
NodeStatus returnedStatus = map.updateNodeOperationalState(
@@ -166,7 +166,7 @@ private void addNodeWithState(
NodeOperationalState opState, NodeState health
)
throws NodeAlreadyExistsException {
- NodeStatus status = new NodeStatus(opState, health);
+ NodeStatus status = NodeStatus.valueOf(opState, health);
map.addNode(dn, status, null);
}
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestECPipelineProvider.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestECPipelineProvider.java
index f3b42d7d49e7..6aecd2b5fdd3 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestECPipelineProvider.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestECPipelineProvider.java
@@ -137,10 +137,10 @@ void omitsDeadNodes() throws NodeNotFoundException {
.thenReturn(NodeStatus.inServiceDead());
DatanodeDetails dead2 = iterator.next().getDatanodeDetails();
when(nodeManager.getNodeStatus(dead2))
- .thenReturn(new NodeStatus(IN_MAINTENANCE, DEAD));
+ .thenReturn(NodeStatus.valueOf(IN_MAINTENANCE, DEAD));
DatanodeDetails dead3 = iterator.next().getDatanodeDetails();
when(nodeManager.getNodeStatus(dead3))
- .thenReturn(new NodeStatus(DECOMMISSIONED, DEAD));
+ .thenReturn(NodeStatus.valueOf(DECOMMISSIONED, DEAD));
Set deadNodes = ImmutableSet.of(dead, dead2, dead3);
Pipeline pipeline = provider.createForRead(ecConf, replicas);
@@ -166,7 +166,7 @@ void sortsHealthyNodesFirst() throws NodeNotFoundException {
DatanodeDetails decomNode = MockDatanodeDetails.randomDatanodeDetails();
replicas.add(replica.toBuilder().setDatanodeDetails(decomNode).build());
when(nodeManager.getNodeStatus(decomNode))
- .thenReturn(new NodeStatus(DECOMMISSIONING, HEALTHY));
+ .thenReturn(NodeStatus.valueOf(DECOMMISSIONING, HEALTHY));
decomNodes.add(decomNode);
DatanodeDetails staleNode = MockDatanodeDetails.randomDatanodeDetails();
diff --git a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/testutils/ReplicationNodeManagerMock.java b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/testutils/ReplicationNodeManagerMock.java
index 48508891f6d0..81c64354c4b8 100644
--- a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/testutils/ReplicationNodeManagerMock.java
+++ b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/ozone/container/testutils/ReplicationNodeManagerMock.java
@@ -238,7 +238,7 @@ public void setNodeOperationalState(DatanodeDetails dd,
throws NodeNotFoundException {
NodeStatus currentStatus = nodeStateMap.get(dd);
if (currentStatus != null) {
- nodeStateMap.put(dd, new NodeStatus(newState, currentStatus.getHealth(),
+ nodeStateMap.put(dd, NodeStatus.valueOf(newState, currentStatus.getHealth(),
opStateExpiryEpocSec));
} else {
throw new NodeNotFoundException();