Author: wang Date: Thu Jul 3 20:10:54 2014 New Revision: 1607735 URL: http://svn.apache.org/r1607735 Log: HDFS-6511. BlockManager#computeInvalidateWork() could do nothing. Contributed by Juan Yu.
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1607735&r1=1607734&r2=1607735&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Thu Jul 3 20:10:54 2014 @@ -264,6 +264,8 @@ Release 2.6.0 - UNRELEASED HDFS-6613. Improve logging in caching classes. (wang) + HDFS-6511. BlockManager#computeInvalidateWork() could do nothing. (Juan Yu via wang) + OPTIMIZATIONS BUG FIXES Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java?rev=1607735&r1=1607734&r2=1607735&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java Thu Jul 3 20:10:54 2014 @@ -1226,8 +1226,14 @@ public class BlockManager { nodesToProcess = Math.min(nodes.size(), nodesToProcess); int blockCnt = 0; - for(int nodeCnt = 0; nodeCnt < nodesToProcess; nodeCnt++ ) { - blockCnt += invalidateWorkForOneNode(nodes.get(nodeCnt)); + for (DatanodeInfo dnInfo : nodes) { + int blocks = invalidateWorkForOneNode(dnInfo); + if (blocks > 0) { + blockCnt += blocks; + if (--nodesToProcess == 0) { + break; + } + } } return blockCnt; }