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]

Reply via email to