HDFS-12884. BlockUnderConstructionFeature.truncateBlock should be of type 
BlockInfo. Contributed by chencan.

(cherry picked from commit 8d898ab25f1c2032a07c9bbd96ba3d0c4eb5be87)

Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/37403e17
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/37403e17
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/37403e17

Branch: refs/heads/branch-2.7
Commit: 37403e1755aca4f7a7a603a59345c0f4775689d9
Parents: fec04c4
Author: Konstantin V Shvachko <s...@apache.org>
Authored: Wed Mar 21 16:46:03 2018 -0700
Committer: Konstantin V Shvachko <s...@apache.org>
Committed: Wed Mar 21 18:27:59 2018 -0700

----------------------------------------------------------------------
 .../blockmanagement/BlockInfoContiguousUnderConstruction.java  | 6 +++---
 .../org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java   | 5 +++--
 .../java/org/apache/hadoop/hdfs/server/namenode/INode.java     | 6 ++----
 .../hadoop/hdfs/server/namenode/snapshot/FileDiffList.java     | 3 +--
 4 files changed, 9 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/37403e17/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoContiguousUnderConstruction.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoContiguousUnderConstruction.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoContiguousUnderConstruction.java
index 1342c84..409295a 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoContiguousUnderConstruction.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoContiguousUnderConstruction.java
@@ -57,7 +57,7 @@ public class BlockInfoContiguousUnderConstruction extends 
BlockInfoContiguous {
   /**
    * The block source to use in the event of copy-on-write truncate.
    */
-  private Block truncateBlock;
+  private BlockInfoContiguous truncateBlock;
 
   /**
    * ReplicaUnderConstruction contains information about replicas while
@@ -233,11 +233,11 @@ public class BlockInfoContiguousUnderConstruction extends 
BlockInfoContiguous {
   }
 
   /** Get recover block */
-  public Block getTruncateBlock() {
+  public BlockInfoContiguous getTruncateBlock() {
     return truncateBlock;
   }
 
-  public void setTruncateBlock(Block recoveryBlock) {
+  public void setTruncateBlock(BlockInfoContiguous recoveryBlock) {
     this.truncateBlock = recoveryBlock;
   }
 

http://git-wip-us.apache.org/repos/asf/hadoop/blob/37403e17/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
index bedf7e8..b458900 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
@@ -2192,7 +2192,8 @@ public class FSNamesystem implements Namesystem, 
FSNamesystemMBean,
       oldBlock = file.getLastBlock();
       assert !oldBlock.isComplete() : "oldBlock should be under construction";
       truncatedBlockUC = (BlockInfoContiguousUnderConstruction) oldBlock;
-      truncatedBlockUC.setTruncateBlock(new Block(oldBlock));
+      truncatedBlockUC.setTruncateBlock(new BlockInfoContiguous(oldBlock,
+          file.getBlockReplication()));
       truncatedBlockUC.getTruncateBlock().setNumBytes(
           oldBlock.getNumBytes() - lastBlockDelta);
       truncatedBlockUC.getTruncateBlock().setGenerationStamp(
@@ -4069,7 +4070,7 @@ public class FSNamesystem implements Namesystem, 
FSNamesystemMBean,
     case UNDER_RECOVERY:
       final BlockInfoContiguousUnderConstruction uc = 
(BlockInfoContiguousUnderConstruction)lastBlock;
       // determine if last block was intended to be truncated
-      Block recoveryBlock = uc.getTruncateBlock();
+      BlockInfoContiguous recoveryBlock = uc.getTruncateBlock();
       boolean truncateRecovery = recoveryBlock != null;
       boolean copyOnTruncate = truncateRecovery &&
           recoveryBlock.getBlockId() != uc.getBlockId();

http://git-wip-us.apache.org/repos/asf/hadoop/blob/37403e17/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java
index b23b989..d4659ce 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INode.java
@@ -879,14 +879,12 @@ public abstract class INode implements INodeAttributes, 
Diff.Element<byte[]> {
       if(!(toDelete instanceof BlockInfoContiguousUnderConstruction)) {
         return;
       }
-      Block truncateBlock =
+      BlockInfoContiguous truncateBlock =
           ((BlockInfoContiguousUnderConstruction)toDelete).getTruncateBlock();
       if(truncateBlock == null || truncateBlock.equals(toDelete)) {
         return;
       }
-      assert truncateBlock instanceof BlockInfoContiguous :
-        "should be BlockInfoContiguous";
-      addDeleteBlock((BlockInfoContiguous) truncateBlock);
+      addDeleteBlock(truncateBlock);
     }
 
     public void removeDeleteBlock(Block block) {

http://git-wip-us.apache.org/repos/asf/hadoop/blob/37403e17/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/FileDiffList.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/FileDiffList.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/FileDiffList.java
index 5c9e121..6e735d3 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/FileDiffList.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/snapshot/FileDiffList.java
@@ -20,7 +20,6 @@ package org.apache.hadoop.hdfs.server.namenode.snapshot;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.hadoop.hdfs.protocol.Block;
 import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfoContiguous;
 import 
org.apache.hadoop.hdfs.server.blockmanagement.BlockInfoContiguousUnderConstruction;
 import org.apache.hadoop.hdfs.server.blockmanagement.BlockStoragePolicySuite;
@@ -130,7 +129,7 @@ public class FileDiffList extends
     }
     // Check if last block is part of truncate recovery
     BlockInfoContiguous lastBlock = file.getLastBlock();
-    Block dontRemoveBlock = null;
+    BlockInfoContiguous dontRemoveBlock = null;
     if(lastBlock != null && lastBlock.getBlockUCState().equals(
         HdfsServerConstants.BlockUCState.UNDER_RECOVERY)) {
       dontRemoveBlock = ((BlockInfoContiguousUnderConstruction) lastBlock)


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to