diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/EditLogTailer.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/EditLogTailer.java index 536986152d9..d27947b9952 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/EditLogTailer.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/EditLogTailer.java @@ -467,10 +467,12 @@ public class EditLogTailer { try { // There's no point in triggering a log roll if the Standby hasn't // read any more transactions since the last time a roll was - // triggered. + // triggered. + boolean triggeredLogRoll = false; if (tooLongSinceLastLoad() && lastRollTriggerTxId < lastLoadedTxnId) { triggerActiveLogRoll(); + triggeredLogRoll = true; } /** * Check again in case someone calls {@link EditLogTailer#stop} while @@ -496,7 +498,9 @@ public class EditLogTailer { Time.monotonicNow() - startTime); } //Update NameDirSize Metric - namesystem.getFSImage().getStorage().updateNameDirSize(); + if (triggeredLogRoll) { + namesystem.getFSImage().getStorage().updateNameDirSize(); + } } catch (EditLogInputException elie) { LOG.warn("Error while reading edits from disk. Will try again.", elie); } catch (InterruptedException ie) { diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java index f6da894dc19..7157cff0e7a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestNameNodeMXBean.java @@ -671,6 +671,7 @@ public class TestNameNodeMXBean { public void testNNDirectorySize() throws Exception{ Configuration conf = new Configuration(); conf.setInt(DFSConfigKeys.DFS_HA_TAILEDITS_PERIOD_KEY, 1); + conf.setInt(DFSConfigKeys.DFS_HA_LOGROLL_PERIOD_KEY, 0); MiniDFSCluster cluster = null; for (int i = 0; i < 5; i++) { try{ @@ -700,8 +701,6 @@ public class TestNameNodeMXBean { FSNamesystem nn0 = cluster.getNamesystem(0); FSNamesystem nn1 = cluster.getNamesystem(1); - checkNNDirSize(cluster.getNameDirs(0), nn0.getNameDirSize()); - checkNNDirSize(cluster.getNameDirs(1), nn1.getNameDirSize()); cluster.transitionToActive(0); fs = cluster.getFileSystem(0); DFSTestUtil.createFile(fs, new Path("/file"), 0, (short) 1, 0L);