Repository: hadoop Updated Branches: refs/heads/branch-2 ef8437a38 -> 137bde075
HDFS-8932. NPE thrown in NameNode when try to get TotalSyncCount metric before editLogStream initialization. Contributed by Surendra Singh Lilhore (cherry picked from commit 3b00eaea256d252be3361a7d9106b88756fcb9ba) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/137bde07 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/137bde07 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/137bde07 Branch: refs/heads/branch-2 Commit: 137bde0755f1dc67b3569f3f3967213fc8419d38 Parents: ef8437a Author: Xiaoyu Yao <[email protected]> Authored: Mon Aug 24 16:56:24 2015 -0700 Committer: Xiaoyu Yao <[email protected]> Committed: Mon Aug 24 16:57:02 2015 -0700 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../apache/hadoop/hdfs/server/namenode/FSEditLog.java | 12 ++++++++---- .../hadoop/hdfs/server/namenode/FSNamesystem.java | 7 ++++++- 3 files changed, 17 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/137bde07/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 7e5adbc..3100fd0 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -867,6 +867,9 @@ Release 2.8.0 - UNRELEASED HDFS-8948. Use GenericTestUtils to set log levels in TestPread and TestReplaceDatanodeOnFailure. (Mingliang Liu via wheat9) + HDFS-8932. NPE thrown in NameNode when try to get TotalSyncCount metric + before editLogStream initialization. (Surendra Singh Lilhore via xyao) + Release 2.7.2 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/137bde07/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java index 81a0954..d7294d1 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLog.java @@ -1648,10 +1648,14 @@ public class FSEditLog implements LogsPurgeable { } /** - + * Return total number of syncs happened on this edit log. - + * @return long - count - + */ + * Return total number of syncs happened on this edit log. + * @return long - count + */ public long getTotalSyncCount() { - return editLogStream.getNumSync(); + if (editLogStream != null) { + return editLogStream.getNumSync(); + } else { + return 0; + } } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/137bde07/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index 9299265..883ed08 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -7291,7 +7291,12 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, @Metric({"TotalSyncTimes", "Total time spend in sync operation on various edit logs"}) public String getTotalSyncTimes() { - return fsImage.editLog.getJournalSet().getSyncTimes(); + JournalSet journalSet = fsImage.editLog.getJournalSet(); + if (journalSet != null) { + return journalSet.getSyncTimes(); + } else { + return ""; + } } }
