HDFS-6601. Issues in finalizing rolling upgrade when there is a layout version change. Contributed by Kihwal Lee.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1606371 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
78cafe34e6
commit
94a1462bd5
@ -730,6 +730,9 @@ Release 2.5.0 - UNRELEASED
|
||||
|
||||
HDFS-6556. Refine XAttr permissions (umamahesh)
|
||||
|
||||
HDFS-6601. Issues in finalizing rolling upgrade when there is a layout
|
||||
version change (kihwal)
|
||||
|
||||
BREAKDOWN OF HDFS-2006 SUBTASKS AND RELATED JIRAS
|
||||
|
||||
HDFS-6299. Protobuf for XAttr and client-side implementation. (Yi Liu via umamahesh)
|
||||
|
@ -739,7 +739,13 @@ private long applyEditLogOp(FSEditLogOp op, FSDirectory fsDir,
|
||||
}
|
||||
case OP_ROLLING_UPGRADE_FINALIZE: {
|
||||
final long finalizeTime = ((RollingUpgradeOp) op).getTime();
|
||||
fsNamesys.finalizeRollingUpgradeInternal(finalizeTime);
|
||||
if (fsNamesys.isRollingUpgrade()) {
|
||||
// Only do it when NN is actually doing rolling upgrade.
|
||||
// We can get FINALIZE without corresponding START, if NN is restarted
|
||||
// before this op is consumed and a new checkpoint is created.
|
||||
fsNamesys.finalizeRollingUpgradeInternal(finalizeTime);
|
||||
}
|
||||
fsNamesys.getFSImage().updateStorageVersion();
|
||||
fsNamesys.getFSImage().renameCheckpoint(NameNodeFile.IMAGE_ROLLBACK,
|
||||
NameNodeFile.IMAGE);
|
||||
break;
|
||||
|
@ -1021,6 +1021,13 @@ private void waitForThreads(List<Thread> threads) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Update version of all storage directories.
|
||||
*/
|
||||
public synchronized void updateStorageVersion() throws IOException {
|
||||
storage.writeAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #saveNamespace(FSNamesystem, Canceler)
|
||||
*/
|
||||
|
@ -7730,6 +7730,7 @@ RollingUpgradeInfo finalizeRollingUpgrade() throws IOException {
|
||||
// roll the edit log to make sure the standby NameNode can tail
|
||||
getFSImage().rollEditLog();
|
||||
}
|
||||
getFSImage().updateStorageVersion();
|
||||
getFSImage().renameCheckpoint(NameNodeFile.IMAGE_ROLLBACK,
|
||||
NameNodeFile.IMAGE);
|
||||
} finally {
|
||||
|
@ -390,6 +390,10 @@ public void testFinalize() throws Exception {
|
||||
|
||||
// Once finalized, there should be no more fsimage for rollbacks.
|
||||
Assert.assertFalse(fsimage.hasRollbackFSImage());
|
||||
|
||||
// Should have no problem in restart and replaying edits that include
|
||||
// the FINALIZE op.
|
||||
dfsCluster.restartNameNode(0);
|
||||
} finally {
|
||||
if (cluster != null) {
|
||||
cluster.shutdown();
|
||||
|
Loading…
Reference in New Issue
Block a user