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-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
|
BREAKDOWN OF HDFS-2006 SUBTASKS AND RELATED JIRAS
|
||||||
|
|
||||||
HDFS-6299. Protobuf for XAttr and client-side implementation. (Yi Liu via umamahesh)
|
HDFS-6299. Protobuf for XAttr and client-side implementation. (Yi Liu via umamahesh)
|
||||||
|
@ -739,7 +739,13 @@ public class FSEditLogLoader {
|
|||||||
}
|
}
|
||||||
case OP_ROLLING_UPGRADE_FINALIZE: {
|
case OP_ROLLING_UPGRADE_FINALIZE: {
|
||||||
final long finalizeTime = ((RollingUpgradeOp) op).getTime();
|
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,
|
fsNamesys.getFSImage().renameCheckpoint(NameNodeFile.IMAGE_ROLLBACK,
|
||||||
NameNodeFile.IMAGE);
|
NameNodeFile.IMAGE);
|
||||||
break;
|
break;
|
||||||
|
@ -1021,6 +1021,13 @@ public class FSImage implements Closeable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update version of all storage directories.
|
||||||
|
*/
|
||||||
|
public synchronized void updateStorageVersion() throws IOException {
|
||||||
|
storage.writeAll();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see #saveNamespace(FSNamesystem, Canceler)
|
* @see #saveNamespace(FSNamesystem, Canceler)
|
||||||
*/
|
*/
|
||||||
|
@ -7730,6 +7730,7 @@ public class FSNamesystem implements Namesystem, FSClusterStats,
|
|||||||
// roll the edit log to make sure the standby NameNode can tail
|
// roll the edit log to make sure the standby NameNode can tail
|
||||||
getFSImage().rollEditLog();
|
getFSImage().rollEditLog();
|
||||||
}
|
}
|
||||||
|
getFSImage().updateStorageVersion();
|
||||||
getFSImage().renameCheckpoint(NameNodeFile.IMAGE_ROLLBACK,
|
getFSImage().renameCheckpoint(NameNodeFile.IMAGE_ROLLBACK,
|
||||||
NameNodeFile.IMAGE);
|
NameNodeFile.IMAGE);
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -390,6 +390,10 @@ public class TestRollingUpgrade {
|
|||||||
|
|
||||||
// Once finalized, there should be no more fsimage for rollbacks.
|
// Once finalized, there should be no more fsimage for rollbacks.
|
||||||
Assert.assertFalse(fsimage.hasRollbackFSImage());
|
Assert.assertFalse(fsimage.hasRollbackFSImage());
|
||||||
|
|
||||||
|
// Should have no problem in restart and replaying edits that include
|
||||||
|
// the FINALIZE op.
|
||||||
|
dfsCluster.restartNameNode(0);
|
||||||
} finally {
|
} finally {
|
||||||
if (cluster != null) {
|
if (cluster != null) {
|
||||||
cluster.shutdown();
|
cluster.shutdown();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user