Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -323,9 +323,13 @@ public void reconstructECBlockGroup(BlockLocationInfo blockLocationInfo,
}
// TODO: can be submitted in parallel
for (int i = 0; i < bufs.length; i++) {
CompletableFuture<ContainerProtos.ContainerCommandResponseProto>
future = targetBlockStreams[i].write(bufs[i]);
checkFailures(targetBlockStreams[i], future);
if (bufs[i].remaining() != 0) {
// If the buffer is empty, we don't need to write it as it will cause
// an empty chunk to be added to the end of the block.
CompletableFuture<ContainerProtos.ContainerCommandResponseProto>
future = targetBlockStreams[i].write(bufs[i]);
checkFailures(targetBlockStreams[i], future);
}
bufs[i].clear();
}
length -= readLen;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,9 @@ public class TestContainerCommandsEC {
private static final int EC_CHUNK_SIZE = 1024 * 1024;
private static final int STRIPE_DATA_SIZE = EC_DATA * EC_CHUNK_SIZE;
private static final int NUM_DN = EC_DATA + EC_PARITY + 3;
private static byte[][] inputChunks = new byte[EC_DATA][EC_CHUNK_SIZE];
// Data slots are EC_DATA + 1 so we can generate enough data to have a full stripe
// plus one extra chunk.
private static byte[][] inputChunks = new byte[EC_DATA + 1][EC_CHUNK_SIZE];

// Each key size will be in range [min, max), min inclusive, max exclusive
private static final int[][] KEY_SIZE_RANGES =
Expand Down Expand Up @@ -621,13 +623,13 @@ void testECReconstructionCoordinatorWithPartialStripe(List<Integer> missingIndex
testECReconstructionCoordinator(missingIndexes, 1);
}

@Test
void testECReconstructParityWithPartialStripe()
throws Exception {
testECReconstructionCoordinator(ImmutableList.of(4, 5), 1);
@ParameterizedTest
@MethodSource("recoverableMissingIndexes")
void testECReconstructionCoordinatorWithFullAndPartialStripe(List<Integer> missingIndexes)
throws Exception {
testECReconstructionCoordinator(missingIndexes, 4);
}


static Stream<List<Integer>> recoverableMissingIndexes() {
return Stream
.concat(IntStream.rangeClosed(1, 5).mapToObj(ImmutableList::of), Stream
Expand Down