diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/Journal.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/Journal.java index 17c09fee84e..f684f30c8f9 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/Journal.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/qjournal/server/Journal.java @@ -138,12 +138,14 @@ public class Journal implements Closeable { private final FileJournalManager fjm; - private final JournaledEditsCache cache; + private JournaledEditsCache cache; private final JournalMetrics metrics; private long lastJournalTimestamp = 0; + private Configuration conf = null; + // This variable tracks, have we tried to start journalsyncer // with nameServiceId. This will help not to start the journalsyncer // on each rpc call, if it has failed to start @@ -157,6 +159,7 @@ public class Journal implements Closeable { Journal(Configuration conf, File logDir, String journalId, StartupOption startOpt, StorageErrorReporter errorReporter) throws IOException { + this.conf = conf; storage = new JNStorage(conf, logDir, startOpt, errorReporter); this.journalId = journalId; @@ -164,13 +167,8 @@ public class Journal implements Closeable { this.fjm = storage.getJournalManager(); - if (conf.getBoolean(DFSConfigKeys.DFS_HA_TAILEDITS_INPROGRESS_KEY, - DFSConfigKeys.DFS_HA_TAILEDITS_INPROGRESS_DEFAULT)) { - this.cache = new JournaledEditsCache(conf); - } else { - this.cache = null; - } - + this.cache = createCache(); + this.metrics = JournalMetrics.create(this); EditLogFile latest = scanStorageForLatestEdits(); @@ -179,6 +177,15 @@ public class Journal implements Closeable { } } + private JournaledEditsCache createCache() { + if (conf.getBoolean(DFSConfigKeys.DFS_HA_TAILEDITS_INPROGRESS_KEY, + DFSConfigKeys.DFS_HA_TAILEDITS_INPROGRESS_DEFAULT)) { + return new JournaledEditsCache(conf); + } else { + return null; + } + } + public void setTriedJournalSyncerStartedwithnsId(boolean started) { this.triedJournalSyncerStartedwithnsId = started; } @@ -248,6 +255,7 @@ public class Journal implements Closeable { LOG.info("Formatting journal id : " + journalId + " with namespace info: " + nsInfo + " and force: " + force); storage.format(nsInfo, force); + this.cache = createCache(); refreshCachedData(); }