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 ha...@apache.org on 2010/09/27 20:21:16 UTC
svn commit: r1001854 - in /hadoop/hdfs/trunk: CHANGES.txt
src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java
src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestDatanodeDescriptor.java
Author: hairong
Date: Mon Sep 27 18:21:15 2010
New Revision: 1001854
URL: http://svn.apache.org/viewvc?rev=1001854&view=rev
Log:
HDFS-1368. Add a block counter to DatanodeDescriptor. Contributed by Hairong Kuang.
Modified:
hadoop/hdfs/trunk/CHANGES.txt
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java
hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestDatanodeDescriptor.java
Modified: hadoop/hdfs/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/CHANGES.txt?rev=1001854&r1=1001853&r2=1001854&view=diff
==============================================================================
--- hadoop/hdfs/trunk/CHANGES.txt (original)
+++ hadoop/hdfs/trunk/CHANGES.txt Mon Sep 27 18:21:15 2010
@@ -154,6 +154,8 @@ Trunk (unreleased changes)
HDFS-1320. Add LOG.isDebugEnabled() guard for each LOG.debug(..).
(Erik Steffl via szetszwo)
+ HDFS-1368. Add a block counter to DatanodeDescriptor. (hairong)
+
BUG FIXES
HDFS-1039. Adding test for JspHelper.getUGI(jnp via boryas)
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java?rev=1001854&r1=1001853&r2=1001854&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/DatanodeDescriptor.java Mon Sep 27 18:21:15 2010
@@ -100,6 +100,7 @@ public class DatanodeDescriptor extends
}
private volatile BlockInfo blockList = null;
+ private int numBlocks = 0;
// isAlive == heartbeats.contains(this)
// This is an optimization, because contains takes O(n) time on Arraylist
protected boolean isAlive = false;
@@ -201,6 +202,7 @@ public class DatanodeDescriptor extends
return false;
// add to the head of the data-node list
blockList = b.listInsert(blockList, this);
+ numBlocks++;
return true;
}
@@ -210,7 +212,12 @@ public class DatanodeDescriptor extends
*/
boolean removeBlock(BlockInfo b) {
blockList = b.listRemove(blockList, this);
- return b.removeNode(this);
+ if ( b.removeNode(this) ) {
+ numBlocks--;
+ return true;
+ } else {
+ return false;
+ }
}
/**
@@ -246,7 +253,7 @@ public class DatanodeDescriptor extends
}
public int numBlocks() {
- return blockList == null ? 0 : blockList.listCount(this);
+ return numBlocks;
}
/**
Modified: hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestDatanodeDescriptor.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestDatanodeDescriptor.java?rev=1001854&r1=1001853&r2=1001854&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestDatanodeDescriptor.java (original)
+++ hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/server/namenode/TestDatanodeDescriptor.java Mon Sep 27 18:21:15 2010
@@ -48,4 +48,29 @@ public class TestDatanodeDescriptor exte
bc = dd.getInvalidateBlocks(MAX_LIMIT);
assertEquals(bc.getBlocks().length, REMAINING_BLOCKS);
}
+
+ public void testBlocksCounter() throws Exception {
+ DatanodeDescriptor dd = new DatanodeDescriptor();
+ assertEquals(0, dd.numBlocks());
+ BlockInfo blk = new BlockInfo(new Block(1L), 1);
+ BlockInfo blk1 = new BlockInfo(new Block(2L), 2);
+ // add first block
+ assertTrue(dd.addBlock(blk));
+ assertEquals(1, dd.numBlocks());
+ // remove a non-existent block
+ assertFalse(dd.removeBlock(blk1));
+ assertEquals(1, dd.numBlocks());
+ // add an existent block
+ assertFalse(dd.addBlock(blk));
+ assertEquals(1, dd.numBlocks());
+ // add second block
+ assertTrue(dd.addBlock(blk1));
+ assertEquals(2, dd.numBlocks());
+ // remove first block
+ assertTrue(dd.removeBlock(blk));
+ assertEquals(1, dd.numBlocks());
+ // remove second block
+ assertTrue(dd.removeBlock(blk1));
+ assertEquals(0, dd.numBlocks());
+ }
}