You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by sh...@apache.org on 2011/02/04 05:11:10 UTC
svn commit: r1067080 - in /hadoop/hdfs/branches/branch-0.22: CHANGES.txt
src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java
src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java
Author: shv
Date: Fri Feb 4 04:11:10 2011
New Revision: 1067080
URL: http://svn.apache.org/viewvc?rev=1067080&view=rev
Log:
HDFS-900. Merge 1067079 from trunk to branch 0.22.
Modified:
hadoop/hdfs/branches/branch-0.22/CHANGES.txt
hadoop/hdfs/branches/branch-0.22/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java
hadoop/hdfs/branches/branch-0.22/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java
Modified: hadoop/hdfs/branches/branch-0.22/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/branch-0.22/CHANGES.txt?rev=1067080&r1=1067079&r2=1067080&view=diff
==============================================================================
--- hadoop/hdfs/branches/branch-0.22/CHANGES.txt (original)
+++ hadoop/hdfs/branches/branch-0.22/CHANGES.txt Fri Feb 4 04:11:10 2011
@@ -437,6 +437,8 @@ Release 0.22.0 - Unreleased
HDFS-1591. HDFS part of HADOOP-6642. (Chris Douglas, Po Cheung via shv)
+ HDFS-900. Corrupt replicas are not processed correctly in block report (shv)
+
Release 0.21.1 - Unreleased
IMPROVEMENTS
Modified: hadoop/hdfs/branches/branch-0.22/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/branch-0.22/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java?rev=1067080&r1=1067079&r2=1067080&view=diff
==============================================================================
--- hadoop/hdfs/branches/branch-0.22/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java (original)
+++ hadoop/hdfs/branches/branch-0.22/src/java/org/apache/hadoop/hdfs/server/namenode/BlockManager.java Fri Feb 4 04:11:10 2011
@@ -399,8 +399,7 @@ public class BlockManager {
blocksMap.nodeIterator(block); it.hasNext();) {
String storageID = it.next().getStorageID();
// filter invalidate replicas
- Collection<Block> blocks = recentInvalidateSets.get(storageID);
- if(blocks==null || !blocks.contains(block)) {
+ if( ! belongsToInvalidates(storageID, block)) {
machineSet.add(storageID);
}
}
@@ -498,16 +497,21 @@ public class BlockManager {
minReplication);
}
- void removeFromInvalidates(String datanodeId, Block block) {
- Collection<Block> v = recentInvalidateSets.get(datanodeId);
+ void removeFromInvalidates(String storageID, Block block) {
+ Collection<Block> v = recentInvalidateSets.get(storageID);
if (v != null && v.remove(block)) {
pendingDeletionBlocksCount--;
if (v.isEmpty()) {
- recentInvalidateSets.remove(datanodeId);
+ recentInvalidateSets.remove(storageID);
}
}
}
+ boolean belongsToInvalidates(String storageID, Block block) {
+ Collection<Block> invalidateSet = recentInvalidateSets.get(storageID);
+ return invalidateSet != null && invalidateSet.contains(block);
+ }
+
/**
* Adds block to list of blocks which will be invalidated on specified
* datanode
Modified: hadoop/hdfs/branches/branch-0.22/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/branches/branch-0.22/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java?rev=1067080&r1=1067079&r2=1067080&view=diff
==============================================================================
--- hadoop/hdfs/branches/branch-0.22/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java (original)
+++ hadoop/hdfs/branches/branch-0.22/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java Fri Feb 4 04:11:10 2011
@@ -499,6 +499,13 @@ public class DatanodeDescriptor extends
storedBlock.getBlockUCState());
}
+ // Ignore replicas already scheduled to be removed from the DN
+ if(blockManager.belongsToInvalidates(getStorageID(), block)) {
+ assert storedBlock.findDatanode(this) < 0 : "Block " + block
+ + " in recentInvalidatesSet should not appear in DN " + this;
+ return storedBlock;
+ }
+
// Block is on the DN
boolean isCorrupt = false;
switch(rState) {