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 su...@apache.org on 2012/10/16 05:37:50 UTC
svn commit: r1398631 - in
/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs: CHANGES.txt
src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java
src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/InvalidateBlocks.java
Author: suresh
Date: Tue Oct 16 03:37:49 2012
New Revision: 1398631
URL: http://svn.apache.org/viewvc?rev=1398631&view=rev
Log:
HDFS-4052. BlockManager#invalidateWork should print log outside the lock. Contributed by Jing Zhao.
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
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/InvalidateBlocks.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=1398631&r1=1398630&r2=1398631&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Tue Oct 16 03:37:49 2012
@@ -147,6 +147,9 @@ Trunk (Unreleased)
Block Pool Used, Block Pool Used(%) and Failed Volumes.
(Brahma Reddy Battula via suresh)
+ HDFS-4052. BlockManager#invalidateWork should print log outside the lock.
+ (Jing Zhao via suresh)
+
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=1398631&r1=1398630&r2=1398631&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 Tue Oct 16 03:37:49 2012
@@ -2856,6 +2856,9 @@ assert storedBlock.findDatanode(dn) < 0
* @return number of blocks scheduled for removal during this iteration.
*/
private int invalidateWorkForOneNode(String nodeId) {
+ final List<Block> toInvalidate;
+ final DatanodeDescriptor dn;
+
namesystem.writeLock();
try {
// blocks should not be replicated or removed if safe mode is on
@@ -2865,10 +2868,23 @@ assert storedBlock.findDatanode(dn) < 0
}
// get blocks to invalidate for the nodeId
assert nodeId != null;
- return invalidateBlocks.invalidateWork(nodeId);
+ dn = datanodeManager.getDatanode(nodeId);
+ if (dn == null) {
+ invalidateBlocks.remove(nodeId);
+ return 0;
+ }
+ toInvalidate = invalidateBlocks.invalidateWork(nodeId, dn);
+ if (toInvalidate == null) {
+ return 0;
+ }
} finally {
namesystem.writeUnlock();
}
+ if (NameNode.stateChangeLog.isInfoEnabled()) {
+ NameNode.stateChangeLog.info("BLOCK* " + getClass().getSimpleName()
+ + ": ask " + dn + " to delete " + toInvalidate);
+ }
+ return toInvalidate.size();
}
boolean blockHasEnoughRacks(Block b) {
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/InvalidateBlocks.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/InvalidateBlocks.java?rev=1398631&r1=1398630&r2=1398631&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/InvalidateBlocks.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/InvalidateBlocks.java Tue Oct 16 03:37:49 2012
@@ -134,26 +134,7 @@ class InvalidateBlocks {
return new ArrayList<String>(node2blocks.keySet());
}
- /** Invalidate work for the storage. */
- int invalidateWork(final String storageId) {
- final DatanodeDescriptor dn = datanodeManager.getDatanode(storageId);
- if (dn == null) {
- remove(storageId);
- return 0;
- }
- final List<Block> toInvalidate = invalidateWork(storageId, dn);
- if (toInvalidate == null) {
- return 0;
- }
-
- if (NameNode.stateChangeLog.isInfoEnabled()) {
- NameNode.stateChangeLog.info("BLOCK* " + getClass().getSimpleName()
- + ": ask " + dn + " to delete " + toInvalidate);
- }
- return toInvalidate.size();
- }
-
- private synchronized List<Block> invalidateWork(
+ synchronized List<Block> invalidateWork(
final String storageId, final DatanodeDescriptor dn) {
final LightWeightHashSet<Block> set = node2blocks.get(storageId);
if (set == null) {