Author: rangadi
Date: Wed Jan 7 16:51:54 2009
New Revision: 732572
URL: http://svn.apache.org/viewvc?rev=732572&view=rev
Log:
HADOOP-4971. A long (unexpected) delay at datanodes could make
subsequent\nblock reports from many datanode at the same time. (Raghu Angadi)
Modified:
hadoop/core/trunk/CHANGES.txt
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
Modified: hadoop/core/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=732572&r1=732571&r2=732572&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Wed Jan 7 16:51:54 2009
@@ -1660,6 +1660,10 @@
HADOOP-4961. Fix ConcurrentModificationException in lease recovery
of empty files. (shv)
+ HADOOP-4971. A long (unexpected) delay at datanodes could make subsequent
+ block reports from many datanode at the same time. (Raghu Angadi)
+
+
Release 0.18.2 - 2008-11-03
BUG FIXES
Modified:
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
URL:
http://svn.apache.org/viewvc/hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java?rev=732572&r1=732571&r2=732572&view=diff
==============================================================================
---
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
(original)
+++
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
Wed Jan 7 16:51:54 2009
@@ -759,7 +759,14 @@
lastBlockReport = startTime -
R.nextInt((int)(blockReportInterval));
resetBlockReportTime = false;
} else {
- lastBlockReport = startTime;
+ /* say the last block report was at 8:20:14. The current report
+ * should have started around 9:20:14 (default 1 hour interval).
+ * If current time is :
+ * 1) normal like 9:20:18, next report should be at 10:20:14
+ * 2) unexpected like 11:35:43, next report should be at 12:20:14
+ */
+ lastBlockReport += (now() - lastBlockReport) /
+ blockReportInterval * blockReportInterval;
}
processCommand(cmd);
}