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/23 22:02:10 UTC
svn commit: r1401423 - in
/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs: CHANGES.txt
src/test/java/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java
Author: suresh
Date: Tue Oct 23 20:02:09 2012
New Revision: 1401423
URL: http://svn.apache.org/viewvc?rev=1401423&view=rev
Log:
HDFS-2434. TestNameNodeMetrics.testCorruptBlock fails intermittently. Contributed by Jing Zhao.
Modified:
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt
hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.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=1401423&r1=1401422&r2=1401423&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 23 20:02:09 2012
@@ -482,7 +482,11 @@ Release 2.0.3-alpha - Unreleased
HDFS-4072. On file deletion remove corresponding blocks pending
replications. (Jing Zhao via suresh)
- HDFS-4022. Replication not happening for appended block. (Vinay via umamahesh)
+ HDFS-4022. Replication not happening for appended block.
+ (Vinay via umamahesh)
+
+ HDFS-2434. TestNameNodeMetrics.testCorruptBlock fails intermittently.
+ (Jing Zhao via suresh)
Release 2.0.2-alpha - 2012-09-07
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java?rev=1401423&r1=1401422&r2=1401423&view=diff
==============================================================================
--- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java (original)
+++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java Tue Oct 23 20:02:09 2012
@@ -205,6 +205,12 @@ public class TestNameNodeMetrics {
final Path file = getTestPath("testCorruptBlock");
createFile(file, 100, (short)2);
+ // Disable the heartbeats, so that no corrupted replica
+ // can be fixed
+ for (DataNode dn : cluster.getDataNodes()) {
+ DataNodeTestUtils.setHeartbeatsDisabledForTests(dn, true);
+ }
+
// Corrupt first replica of the block
LocatedBlock block = NameNodeAdapter.getBlockLocations(
cluster.getNameNode(), file.toString(), 0, 1).get(0);
@@ -215,12 +221,23 @@ public class TestNameNodeMetrics {
} finally {
cluster.getNamesystem().writeUnlock();
}
- Thread.sleep(1000); // Wait for block to be marked corrupt
+ BlockManagerTestUtil.getComputedDatanodeWork(bm);
+ BlockManagerTestUtil.updateState(bm);
MetricsRecordBuilder rb = getMetrics(NS_METRICS);
assertGauge("CorruptBlocks", 1L, rb);
assertGauge("PendingReplicationBlocks", 1L, rb);
assertGauge("ScheduledReplicationBlocks", 1L, rb);
+
fs.delete(file, true);
+ // During the file deletion, both BlockManager#corruptReplicas and
+ // BlockManager#pendingReplications will be updated, i.e., the records
+ // for the blocks of the deleted file will be removed from both
+ // corruptReplicas and pendingReplications. The corresponding
+ // metrics (CorruptBlocks and PendingReplicationBlocks) will only be updated
+ // when BlockManager#computeDatanodeWork is run where the
+ // BlockManager#udpateState is called. And in
+ // BlockManager#computeDatanodeWork the metric ScheduledReplicationBlocks
+ // will also be updated.
rb = waitForDnMetricValue(NS_METRICS, "CorruptBlocks", 0L);
assertGauge("PendingReplicationBlocks", 0L, rb);
assertGauge("ScheduledReplicationBlocks", 0L, rb);