Author: cnauroth Date: Tue Nov 5 06:04:07 2013 New Revision: 1538872 URL: http://svn.apache.org/r1538872 Log: HDFS-5456. NameNode startup progress creates new steps if caller attempts to create a counter for a step that doesn't already exist. Contributed by Chris Nauroth.
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/StartupProgress.java hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/TestStartupProgress.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=1538872&r1=1538871&r2=1538872&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Tue Nov 5 06:04:07 2013 @@ -579,6 +579,9 @@ Release 2.2.1 - UNRELEASED HDFS-5035. getFileLinkStatus and rename do not correctly check permissions of symlinks. (Andrew Wang via Colin Patrick McCabe) + HDFS-5456. NameNode startup progress creates new steps if caller attempts to + create a counter for a step that doesn't already exist. (cnauroth) + Release 2.2.0 - 2013-10-13 INCOMPATIBLE CHANGES Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/StartupProgress.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/StartupProgress.java?rev=1538872&r1=1538871&r2=1538872&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/StartupProgress.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/StartupProgress.java Tue Nov 5 06:04:07 2013 @@ -149,8 +149,8 @@ public class StartupProgress { * @return Counter associated with phase and step */ public Counter getCounter(Phase phase, Step step) { - final StepTracking tracking = lazyInitStep(phase, step); if (!isComplete()) { + final StepTracking tracking = lazyInitStep(phase, step); return new Counter() { @Override public void increment() { Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/TestStartupProgress.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/TestStartupProgress.java?rev=1538872&r1=1538871&r2=1538872&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/TestStartupProgress.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/TestStartupProgress.java Tue Nov 5 06:04:07 2013 @@ -179,6 +179,14 @@ public class TestStartupProgress { startupProgress.endStep(LOADING_FSIMAGE, step); startupProgress.endPhase(LOADING_FSIMAGE); + // Also attempt a whole new step that wasn't used last time. + startupProgress.beginPhase(LOADING_EDITS); + Step newStep = new Step("file1"); + startupProgress.beginStep(LOADING_EDITS, newStep); + incrementCounter(startupProgress, LOADING_EDITS, newStep, 100L); + startupProgress.endStep(LOADING_EDITS, newStep); + startupProgress.endPhase(LOADING_EDITS); + StartupProgressView after = startupProgress.createView(); // Expect that data was frozen after completion of entire startup process, so @@ -200,6 +208,7 @@ public class TestStartupProgress { after.getTotal(LOADING_FSIMAGE)); assertEquals(before.getTotal(LOADING_FSIMAGE, step), after.getTotal(LOADING_FSIMAGE, step)); + assertFalse(after.getSteps(LOADING_EDITS).iterator().hasNext()); } @Test(timeout=10000)