|
@@ -8417,11 +8417,30 @@ public class FSNamesystem implements Namesystem, FSClusterStats,
|
|
|
|
|
|
@Override // NameNodeMXBean
|
|
@Override // NameNodeMXBean
|
|
public RollingUpgradeInfo.Bean getRollingUpgradeStatus() {
|
|
public RollingUpgradeInfo.Bean getRollingUpgradeStatus() {
|
|
|
|
+ if (!isRollingUpgrade()) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
RollingUpgradeInfo upgradeInfo = getRollingUpgradeInfo();
|
|
RollingUpgradeInfo upgradeInfo = getRollingUpgradeInfo();
|
|
- if (upgradeInfo != null) {
|
|
|
|
|
|
+ if (upgradeInfo.createdRollbackImages()) {
|
|
return new RollingUpgradeInfo.Bean(upgradeInfo);
|
|
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? */
|
|
/** Is rolling upgrade in progress? */
|