From 2432356570140ec7f55e1ab56e442c373ff05a16 Mon Sep 17 00:00:00 2001 From: Mukul Kumar Singh Date: Wed, 14 Aug 2019 20:36:43 +0530 Subject: [PATCH] HDDS-1955. TestBlockOutputStreamWithFailures#test2DatanodesFailure failing because of assertion error. Signed-off-by: Nanda kumar --- .../TestBlockOutputStreamWithFailures.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStreamWithFailures.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStreamWithFailures.java index 7a69e27382..8649837a0c 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStreamWithFailures.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStreamWithFailures.java @@ -501,14 +501,18 @@ public void test2DatanodesFailure() throws Exception { // and one flush for partial chunk key.flush(); - // Since, 2 datanodes went down, if the pipeline gets destroyed quickly, - // it will hit GroupMismatchException else, it will fail with - // RaftRetryFailureException - Assert.assertTrue((HddsClientUtils. - checkForException(blockOutputStream - .getIoException()) instanceof RaftRetryFailureException) - || HddsClientUtils.checkForException( - blockOutputStream.getIoException()) instanceof GroupMismatchException); + Throwable ioException = HddsClientUtils.checkForException( + blockOutputStream.getIoException()); + // Since, 2 datanodes went down, + // a) if the pipeline gets destroyed quickly it will hit + // GroupMismatchException. + // b) will hit close container exception if the container is closed + // but pipeline is still not destroyed. + // c) will fail with RaftRetryFailureException if the leader election + // did not finish before the request retry count finishes. + Assert.assertTrue(ioException instanceof RaftRetryFailureException + || ioException instanceof GroupMismatchException + || ioException instanceof ContainerNotOpenException); // Make sure the retryCount is reset after the exception is handled Assert.assertTrue(keyOutputStream.getRetryCount() == 0); // now close the stream, It will update the ack length after watchForCommit