HDFS-8813. Erasure Coding: Client no need to decode missing parity blocks. Contributed by Walter Su.
This commit is contained in:
parent
5956d23b64
commit
c2c26e6ea7
@ -370,3 +370,6 @@
|
||||
|
||||
HDFS-8781. Erasure Coding: Correctly handle BlockManager#InvalidateBlocks for
|
||||
striped block. (Yi Liu via jing9)
|
||||
|
||||
HDFS-8813. Erasure Coding: Client no need to decode missing parity blocks.
|
||||
(Walter Su via jing9)
|
||||
|
@ -867,8 +867,13 @@ void decode() {
|
||||
for (int i = 0; i < alignedStripe.chunks.length; i++) {
|
||||
if (alignedStripe.chunks[i] != null &&
|
||||
alignedStripe.chunks[i].state == StripingChunk.MISSING) {
|
||||
decodeIndices[pos++] = StripedBlockUtil.convertIndex4Decode(i,
|
||||
int decodeIndex = StripedBlockUtil.convertIndex4Decode(i,
|
||||
dataBlkNum, parityBlkNum);
|
||||
if (i < dataBlkNum) {
|
||||
decodeIndices[pos++] = decodeIndex;
|
||||
} else {
|
||||
decodeInputs[decodeIndex] = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
decodeIndices = Arrays.copyOf(decodeIndices, pos);
|
||||
|
@ -326,7 +326,7 @@ public static void decodeAndFillBuffer(final byte[][] decodeInputs,
|
||||
// Step 1: prepare indices and output buffers for missing data units
|
||||
int[] decodeIndices = new int[parityBlkNum];
|
||||
int pos = 0;
|
||||
for (int i = 0; i < alignedStripe.chunks.length; i++) {
|
||||
for (int i = 0; i < dataBlkNum; i++) {
|
||||
if (alignedStripe.chunks[i] != null &&
|
||||
alignedStripe.chunks[i].state == StripingChunk.MISSING){
|
||||
decodeIndices[pos++] = convertIndex4Decode(i, dataBlkNum, parityBlkNum);
|
||||
|
Loading…
Reference in New Issue
Block a user