diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index bdb30324aab..fee8cdd3a39 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -70,6 +70,9 @@ Release 2.7.1 - UNRELEASED HDFS-8226. Non-HA rollback compatibility broken (J.Andreina via vinayakumarb) + HDFS-7894. Rolling upgrade readiness is not updated in jmx until query + command is issued. (Brahma Reddy Battula via kihwal) + Release 2.7.0 - 2015-04-20 INCOMPATIBLE CHANGES 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 de504c4b1d9..a2648d244b4 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 @@ -7612,11 +7612,30 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, @Override // NameNodeMXBean public RollingUpgradeInfo.Bean getRollingUpgradeStatus() { + if (!isRollingUpgrade()) { + return null; + } RollingUpgradeInfo upgradeInfo = getRollingUpgradeInfo(); - if (upgradeInfo != null) { + if (upgradeInfo.createdRollbackImages()) { return new RollingUpgradeInfo.Bean(upgradeInfo); } - return null; + readLock(); + try { + // check again after acquiring the read lock. + upgradeInfo = getRollingUpgradeInfo(); + if (upgradeInfo == null) { + return null; + } + if (!upgradeInfo.createdRollbackImages()) { + boolean hasRollbackImage = this.getFSImage().hasRollbackFSImage(); + upgradeInfo.setCreatedRollbackImages(hasRollbackImage); + } + } catch (IOException ioe) { + LOG.warn("Encountered exception setting Rollback Image", ioe); + } finally { + readUnlock(); + } + return new RollingUpgradeInfo.Bean(upgradeInfo); } /** Is rolling upgrade in progress? */