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);
         }


Reply via email to