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 bf13abb3721 HDDS-16353. Pipeline violates the equals and hashCode
contract (#11179)
bf13abb3721 is described below
commit bf13abb372111919e697fa39b1a8cd450e3b77ef
Author: Eric C. Ho <[email protected]>
AuthorDate: Tue Sep 1 18:39:10 2026 +0800
HDDS-16353. Pipeline violates the equals and hashCode contract (#11179)
---
.../org/apache/hadoop/hdds/scm/pipeline/Pipeline.java | 16 ++++------------
.../apache/hadoop/hdds/scm/pipeline/TestPipeline.java | 12 ++++++++++++
2 files changed, 16 insertions(+), 12 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/Pipeline.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/Pipeline.java
index 1379a9c52aa..f6065a578e2 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/Pipeline.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/pipeline/Pipeline.java
@@ -36,8 +36,6 @@
import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.hadoop.hdds.client.ECReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicatedReplicationConfig;
import org.apache.hadoop.hdds.client.ReplicationConfig;
@@ -519,20 +517,14 @@ public boolean equals(Object o) {
Pipeline that = (Pipeline) o;
- return new EqualsBuilder()
- .append(id, that.id)
- .append(replicationConfig, that.replicationConfig)
- .append(nodeStatus.keySet(), that.nodeStatus.keySet())
- .isEquals();
+ return id.equals(that.id)
+ && replicationConfig.equals(that.replicationConfig)
+ && nodeStatus.keySet().equals(that.nodeStatus.keySet());
}
@Override
public int hashCode() {
- return new HashCodeBuilder()
- .append(id)
- .append(replicationConfig.getReplicationType())
- .append(nodeStatus)
- .toHashCode();
+ return id.hashCode();
}
@Override
diff --git
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipeline.java
b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipeline.java
index c6ab6678e8b..ed823d1ae9f 100644
---
a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipeline.java
+++
b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/scm/pipeline/TestPipeline.java
@@ -147,4 +147,16 @@ void testCopyForReadFromNodeRejectsUnknownNode() {
Pipeline subject = MockPipeline.createRatisPipeline();
assertThrows(IllegalStateException.class, () ->
subject.copyForReadFromNode(randomDatanodeDetails()));
}
+
+ @Test
+ void testEqualsAndHashCodeIgnoreNodeStatusValues() throws IOException {
+ Pipeline pipeline = MockPipeline.createRatisPipeline();
+ Pipeline copy = pipeline.toBuilder().setNodes(pipeline.getNodes()).build();
+
+ pipeline.reportDatanode(pipeline.getNodes().get(0));
+
+ assertEquals(pipeline, copy);
+ assertEquals(pipeline.hashCode(), copy.hashCode());
+ assertEquals(pipeline.getId().hashCode(), pipeline.hashCode());
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]