diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index da39fa5c1d0..dcaa108341c 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -221,6 +221,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 diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/StartupProgress.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/StartupProgress.java index f242bc57119..33d1e220424 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/StartupProgress.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/StartupProgress.java @@ -149,8 +149,8 @@ public Status getStatus(Phase phase) { * @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() { diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/TestStartupProgress.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/TestStartupProgress.java index 6172be68b74..db778a3dafb 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/TestStartupProgress.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/startupprogress/TestStartupProgress.java @@ -179,6 +179,14 @@ public void testFrozenAfterStartupCompletes() { 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 void testFrozenAfterStartupCompletes() { 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)