diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/StripedFileTestUtil.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/StripedFileTestUtil.java index 08bf20a3cc5..13ca39026d1 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/StripedFileTestUtil.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/StripedFileTestUtil.java @@ -363,11 +363,12 @@ public class StripedFileTestUtil { List> blockGroupList = new ArrayList<>(); LocatedBlocks lbs = dfs.getClient().getLocatedBlocks(srcPath.toString(), 0L, Long.MAX_VALUE); - int expectedNumGroup = 0; + if (length > 0) { - expectedNumGroup = (length - 1) / blkGroupSize + 1; + int expectedNumGroup = (length - 1) / blkGroupSize + 1; + + assertEquals(expectedNumGroup, lbs.getLocatedBlocks().size()); } - assertEquals(expectedNumGroup, lbs.getLocatedBlocks().size()); final ErasureCodingPolicy ecPolicy = dfs.getErasureCodingPolicy(srcPath); final int cellSize = ecPolicy.getCellSize(); diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestLeaseRecoveryStriped.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestLeaseRecoveryStriped.java index 36ac8b3f96e..d74f1938ade 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestLeaseRecoveryStriped.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestLeaseRecoveryStriped.java @@ -85,6 +85,7 @@ public class TestLeaseRecoveryStriped { private Configuration conf; private final Path dir = new Path("/" + this.getClass().getSimpleName()); final Path p = new Path(dir, "testfile"); + private final int testFileLength = (stripesPerBlock - 1) * stripeSize; @Before public void setup() throws IOException { @@ -191,17 +192,20 @@ public class TestLeaseRecoveryStriped { private void runTest(int[] blockLengths, long safeLength) throws Exception { writePartialBlocks(blockLengths); + + int checkDataLength = Math.min(testFileLength, (int)safeLength); + recoverLease(); List oldGS = new ArrayList<>(); oldGS.add(1001L); - StripedFileTestUtil.checkData(dfs, p, (int)safeLength, + StripedFileTestUtil.checkData(dfs, p, checkDataLength, new ArrayList(), oldGS, blockGroupSize); // After recovery, storages are reported by primary DN. we should verify // storages reported by blockReport. cluster.restartNameNode(true); cluster.waitFirstBRCompleted(0, 10000); - StripedFileTestUtil.checkData(dfs, p, (int)safeLength, + StripedFileTestUtil.checkData(dfs, p, checkDataLength, new ArrayList(), oldGS, blockGroupSize); } @@ -219,12 +223,11 @@ public class TestLeaseRecoveryStriped { final FSDataOutputStream out = dfs.create(p); final DFSStripedOutputStream stripedOut = (DFSStripedOutputStream) out .getWrappedStream(); - int length = (stripesPerBlock - 1) * stripeSize; int[] posToKill = getPosToKill(blockLengths); int checkingPos = nextCheckingPos(posToKill, 0); Set stoppedStreamerIndexes = new HashSet<>(); try { - for (int pos = 0; pos < length; pos++) { + for (int pos = 0; pos < testFileLength; pos++) { out.write(StripedFileTestUtil.getByte(pos)); if (pos == checkingPos) { for (int index : getIndexToStop(posToKill, pos)) {