Ver Fonte

HDFS-9485. Make BlockManager#removeFromExcessReplicateMap accept BlockInfo instead of Block. Contributed by Mingliang Liu.

(cherry picked from commit 830eb252aaa4fec7ef2ec38cb66f669e8e1ecaa5)
(cherry picked from commit 7e416aa70d76c39dcbc582d1b5bc4b36f557454e)
Jing Zhao há 9 anos atrás
pai
commit
084ad2b420

+ 3 - 0
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt

@@ -823,6 +823,9 @@ Release 2.8.0 - UNRELEASED
     HDFS-8512. WebHDFS : GETFILESTATUS should return LocatedBlock with storage
     type info. (xyao)
 
+    HDFS-9485. Make BlockManager#removeFromExcessReplicateMap accept BlockInfo
+    instead of Block. (Mingliang Liu via jing9)
+
   OPTIMIZATIONS
 
     HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than

+ 2 - 2
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java

@@ -3569,7 +3569,7 @@ public class BlockManager implements BlockStatsMXBean {
     return corruptReplicas.numCorruptReplicas(block);
   }
 
-  public void removeBlockFromMap(Block block) {
+  public void removeBlockFromMap(BlockInfo block) {
     removeFromExcessReplicateMap(block);
     blocksMap.removeBlock(block);
     // If block is removed from blocksMap remove it from corruptReplicasMap
@@ -3579,7 +3579,7 @@ public class BlockManager implements BlockStatsMXBean {
   /**
    * If a block is removed from blocksMap, remove it from excessReplicateMap.
    */
-  private void removeFromExcessReplicateMap(Block block) {
+  private void removeFromExcessReplicateMap(BlockInfo block) {
     for (DatanodeStorageInfo info : blocksMap.getStorages(block)) {
       String uuid = info.getDatanodeDescriptor().getDatanodeUuid();
       LightWeightHashSet<Block> excessReplicas =

+ 1 - 1
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirWriteFileOp.java

@@ -79,7 +79,7 @@ class FSDirWriteFileOp {
     if (uc == null) {
       return false;
     }
-    fsd.getBlockManager().removeBlockFromMap(block);
+    fsd.getBlockManager().removeBlockFromMap(uc);
 
     if(NameNode.stateChangeLog.isDebugEnabled()) {
       NameNode.stateChangeLog.debug("DIR* FSDirectory.removeBlock: "