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 5b90ce385e3..4eeb7a1dc85 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 @@ -435,9 +435,11 @@ private void doWork() { // 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. + boolean triggeredLogRoll = false; if (tooLongSinceLastLoad() && lastRollTriggerTxId < lastLoadedTxnId) { triggerActiveLogRoll(); + triggeredLogRoll = true; } /** * Check again in case someone calls {@link EditLogTailer#stop} while @@ -458,7 +460,9 @@ private void doWork() { namesystem.cpUnlock(); } //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 b93cc642b17..724ec765064 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 @@ -648,6 +648,7 @@ public void testQueueLength() throws Exception { 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{ @@ -677,8 +678,6 @@ public void testNNDirectorySize() throws Exception{ 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);