Skip to content

Commit 15a1f7a

Browse files
committed
HDFS-15779. EC: fix NPE caused by StripedWriter.clearBuffers during reconstruct block. Contributed by Hongbing Wang
1 parent 182623d commit 15a1f7a

File tree

1 file changed

+7
-3
lines changed
  • hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode

1 file changed

+7
-3
lines changed

hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedWriter.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,8 @@ boolean hasValidTargets() {
296296
*/
297297
void clearBuffers() {
298298
for (StripedBlockWriter writer : writers) {
299-
ByteBuffer targetBuffer = writer.getTargetBuffer();
299+
ByteBuffer targetBuffer =
300+
writer != null ? writer.getTargetBuffer() : null;
300301
if (targetBuffer != null) {
301302
targetBuffer.clear();
302303
}
@@ -305,15 +306,18 @@ void clearBuffers() {
305306

306307
void close() {
307308
for (StripedBlockWriter writer : writers) {
308-
ByteBuffer targetBuffer = writer.getTargetBuffer();
309+
ByteBuffer targetBuffer =
310+
writer != null ? writer.getTargetBuffer() : null;
309311
if (targetBuffer != null) {
310312
reconstructor.freeBuffer(targetBuffer);
311313
writer.freeTargetBuffer();
312314
}
313315
}
314316

315317
for (int i = 0; i < targets.length; i++) {
316-
writers[i].close();
318+
if (writers[i] != null) {
319+
writers[i].close();
320+
}
317321
}
318322
}
319323
}

0 commit comments

Comments
 (0)