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 43fa4ad6afe..d74556271b5 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 @@ -139,12 +139,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 @@ -158,6 +160,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; @@ -165,13 +168,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(); @@ -180,6 +178,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; } @@ -249,6 +256,7 @@ public class Journal implements Closeable { LOG.info("Formatting journal id : " + journalId + " with namespace info: " + nsInfo); storage.format(nsInfo); + this.cache = createCache(); refreshCachedData(); }