Skip to content

Commit

Permalink
HDFS-8813. Erasure Coding: Client no need to decode missing parity bl…
Browse files Browse the repository at this point in the history
…ocks. Contributed by Walter Su.
  • Loading branch information
Jing9 committed Jul 23, 2015
1 parent 5956d23 commit c2c26e6
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 2 deletions.
3 changes: 3 additions & 0 deletions hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt
Expand Up @@ -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)
Expand Up @@ -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);
Expand Down
Expand Up @@ -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);
Expand Down

0 comments on commit c2c26e6

Please sign in to comment.