Return-Path: Delivered-To: apmail-hadoop-common-commits-archive@www.apache.org Received: (qmail 40525 invoked from network); 29 Mar 2011 22:12:29 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 29 Mar 2011 22:12:29 -0000 Received: (qmail 30070 invoked by uid 500); 29 Mar 2011 22:12:29 -0000 Delivered-To: apmail-hadoop-common-commits-archive@hadoop.apache.org Received: (qmail 30047 invoked by uid 500); 29 Mar 2011 22:12:29 -0000 Mailing-List: contact common-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: common-dev@hadoop.apache.org Delivered-To: mailing list common-commits@hadoop.apache.org Received: (qmail 30040 invoked by uid 99); 29 Mar 2011 22:12:29 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 29 Mar 2011 22:12:29 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 29 Mar 2011 22:12:26 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id A146623889B9; Tue, 29 Mar 2011 22:12:05 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1086784 - in /hadoop/common/branches/branch-0.20-security: CHANGES.txt src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Date: Tue, 29 Mar 2011 22:12:05 -0000 To: common-commits@hadoop.apache.org From: suresh@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110329221205.A146623889B9@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: suresh Date: Tue Mar 29 22:12:05 2011 New Revision: 1086784 URL: http://svn.apache.org/viewvc?rev=1086784&view=rev Log: HDFS-1767. Namenode ignores non-initial block report from datanodes when in safemode during startup. Contributed by Matt Foley. Modified: hadoop/common/branches/branch-0.20-security/CHANGES.txt hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Modified: hadoop/common/branches/branch-0.20-security/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security/CHANGES.txt?rev=1086784&r1=1086783&r2=1086784&view=diff ============================================================================== --- hadoop/common/branches/branch-0.20-security/CHANGES.txt (original) +++ hadoop/common/branches/branch-0.20-security/CHANGES.txt Tue Mar 29 22:12:05 2011 @@ -24,6 +24,9 @@ Release 0.20.204.0 - unreleased HDFS-1541. Not marking datanodes dead when namenode in safemode. (hairong) + HDFS-1767. Namenode ignores non-initial block report from datanodes + when in safemode during startup. (Matt Foley via suresh) + Release 0.20.203.0 - unreleased HADOOP-7190. Add metrics v1 back for backwards compatibility. (omalley) Modified: hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=1086784&r1=1086783&r2=1086784&view=diff ============================================================================== --- hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original) +++ hadoop/common/branches/branch-0.20-security/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Tue Mar 29 22:12:05 2011 @@ -3157,6 +3157,15 @@ public class FSNamesystem implements FSC throw new DisallowedDatanodeException(node); } + // To minimize startup time, we discard any second (or later) block reports + // that we receive while still in startup phase. + if (isInStartupSafeMode() && node.numBlocks() > 0) { + NameNode.stateChangeLog.info("BLOCK* NameSystem.processReport: " + + "discarded non-initial block report from " + nodeID.getName() + + " because namenode still in startup phase"); + return; + } + // // Modify the (block-->datanode) map, according to the difference // between the old and new block report. @@ -4636,6 +4645,15 @@ public class FSNamesystem implements FSC } /** + * Check whether the name node is in startup mode. + */ + synchronized boolean isInStartupSafeMode() { + if (safeMode == null) + return false; + return safeMode.isOn() && !safeMode.isManual(); + } + + /** * Increment number of blocks that reached minimal replication. * @param replication current replication */