This is an automated email from the ASF dual-hosted git repository.
tasanuma pushed a commit to branch branch-3.3
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/branch-3.3 by this push:
new ceec19e61a5 HDFS-16776 Erasure Coding: The length of targets should be
checked when DN gets a reconstruction task (#4901)
ceec19e61a5 is described below
commit ceec19e61a5eea6af749881429da1fa470d0dfc6
Author: Kidd5368 <[email protected]>
AuthorDate: Fri Sep 23 11:27:56 2022 +0800
HDFS-16776 Erasure Coding: The length of targets should be checked when DN
gets a reconstruction task (#4901)
(cherry picked from commit 9a29075f915173e24c77cf8aea2908da0aa328e3)
---
.../hadoop/hdfs/server/datanode/erasurecode/StripedReconstructor.java | 4 ++++
.../apache/hadoop/hdfs/server/datanode/erasurecode/StripedWriter.java | 4 +++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedReconstructor.java
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedReconstructor.java
index 06346c6b324..7f41dac591b 100644
---
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedReconstructor.java
+++
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedReconstructor.java
@@ -277,6 +277,10 @@ abstract class StripedReconstructor {
return decoder;
}
+ int getNumLiveBlocks(){
+ return liveBitSet.cardinality();
+ }
+
void cleanup() {
if (decoder != null) {
decoder.release();
diff --git
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedWriter.java
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedWriter.java
index 683b63fa149..4b7e1abdb13 100644
---
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedWriter.java
+++
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/StripedWriter.java
@@ -82,8 +82,10 @@ class StripedWriter {
assert targetStorageIds != null;
writers = new StripedBlockWriter[targets.length];
-
targetIndices = new short[targets.length];
+ Preconditions.checkArgument(
+ targetIndices.length <= dataBlkNum + parityBlkNum -
reconstructor.getNumLiveBlocks(),
+ "Reconstruction work gets too much targets.");
Preconditions.checkArgument(targetIndices.length <= parityBlkNum,
"Too much missed striped blocks.");
initTargetIndices();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]