From 491c95625617a68cae2970a1a29b8a54c47251a6 Mon Sep 17 00:00:00 2001 From: runzhiwang Date: Tue, 1 Sep 2020 09:44:59 +0800 Subject: [PATCH 1/2] HDDS-4176. Fix failed UT: test2WayCommitForTimeoutException --- .../apache/hadoop/ozone/container/ContainerTestHelper.java | 5 +++++ .../apache/hadoop/ozone/client/rpc/TestWatchForCommit.java | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java index 45fe38b937a..b8ebaecf282 100644 --- a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java +++ b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ContainerTestHelper.java @@ -583,6 +583,11 @@ public static String getFixedLengthString(String string, int length) { private static RaftServerImpl getRaftServerImpl(HddsDatanodeService dn, Pipeline pipeline) throws Exception { + if (!pipeline.getNodes().contains(dn.getDatanodeDetails())) { + throw new IllegalArgumentException("Pipeline:" + pipeline.getId() + + " not exist in datanode:" + dn.getDatanodeDetails().getUuid()); + } + XceiverServerSpi server = dn.getDatanodeStateMachine(). getContainer().getWriteChannel(); RaftServerProxy proxy = diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestWatchForCommit.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestWatchForCommit.java index df08713ddd8..893ffe1668d 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestWatchForCommit.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestWatchForCommit.java @@ -21,6 +21,7 @@ import org.apache.hadoop.hdds.client.ReplicationType; import org.apache.hadoop.hdds.conf.DatanodeRatisServerConfig; import org.apache.hadoop.hdds.conf.OzoneConfiguration; +import org.apache.hadoop.hdds.protocol.DatanodeDetails; import org.apache.hadoop.hdds.protocol.proto.HddsProtos; import org.apache.hadoop.hdds.ratis.conf.RatisClientConfig; import org.apache.hadoop.hdds.scm.*; @@ -297,9 +298,11 @@ public void test2WayCommitForTimeoutException() throws Exception { xceiverClient.getPipeline())); reply.getResponse().get(); Assert.assertEquals(3, ratisClient.getCommitInfoMap().size()); + List datanodeDetails = pipeline.getNodes(); for (HddsDatanodeService dn : cluster.getHddsDatanodes()) { // shutdown the ratis follower - if (ContainerTestHelper.isRatisFollower(dn, pipeline)) { + if (datanodeDetails.contains(dn.getDatanodeDetails()) + && ContainerTestHelper.isRatisFollower(dn, pipeline)) { cluster.shutdownHddsDatanode(dn.getDatanodeDetails()); break; } From 391ef3d8741aee6e83dc8c4a29563510c495ff7e Mon Sep 17 00:00:00 2001 From: runzhiwang Date: Wed, 2 Sep 2020 07:46:04 +0800 Subject: [PATCH 2/2] fix code review --- .../apache/hadoop/ozone/client/rpc/TestWatchForCommit.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestWatchForCommit.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestWatchForCommit.java index 893ffe1668d..c918b9b80da 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestWatchForCommit.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestWatchForCommit.java @@ -298,10 +298,10 @@ public void test2WayCommitForTimeoutException() throws Exception { xceiverClient.getPipeline())); reply.getResponse().get(); Assert.assertEquals(3, ratisClient.getCommitInfoMap().size()); - List datanodeDetails = pipeline.getNodes(); + List nodesInPipeline = pipeline.getNodes(); for (HddsDatanodeService dn : cluster.getHddsDatanodes()) { // shutdown the ratis follower - if (datanodeDetails.contains(dn.getDatanodeDetails()) + if (nodesInPipeline.contains(dn.getDatanodeDetails()) && ContainerTestHelper.isRatisFollower(dn, pipeline)) { cluster.shutdownHddsDatanode(dn.getDatanodeDetails()); break;