HDFS-5980. Rollback does not need to load edits. Contributed by jing9

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/HDFS-5535@1570078 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Tsz-wo Sze 2014-02-20 03:57:59 +00:00
parent 50a0bedead
commit 2088584864
3 changed files with 10 additions and 13 deletions

View File

@ -59,3 +59,4 @@ HDFS-5535 subtasks:
HDFS-5976. Create unit tests for downgrade and finalize rolling upgrade.
(Haohui Mai via Arpit Agarwal)
HDFS-5980. Rollback does not need to load edits. (jing9 via szetszwo)

View File

@ -624,16 +624,15 @@ public class FSImage implements Closeable {
prog.endPhase(Phase.LOADING_FSIMAGE);
long txnsAdvanced = 0;
loadEdits(editStreams, target, startOpt, recovery);
if (rollingRollback) {
// Trigger the rollback for rolling upgrade.
// Here lastAppliedTxId == (markerTxId - 1), and we should decrease 1 from
// lastAppliedTxId for the start-segment transaction.
rollingRollback(lastAppliedTxId--, imageFiles.get(0).getCheckpointTxId());
needToSave = false;
} else {
if (!rollingRollback) {
loadEdits(editStreams, target, startOpt, recovery);
needToSave |= needsResaveBasedOnStaleCheckpoint(imageFile.getFile(),
txnsAdvanced);
} else {
// Trigger the rollback for rolling upgrade. Here lastAppliedTxId equals
// to the last txid in rollback fsimage.
rollingRollback(lastAppliedTxId + 1, imageFiles.get(0).getCheckpointTxId());
needToSave = false;
}
editLog.setNextTxId(lastAppliedTxId + 1);
return needToSave;
@ -768,11 +767,8 @@ public class FSImage implements Closeable {
// have been successfully applied before the error.
lastAppliedTxId = loader.getLastAppliedTxId();
}
boolean rollingRollback = StartupOption
.isRollingUpgradeRollback(startOpt);
// If we are in recovery mode, we may have skipped over some txids.
if (editIn.getLastTxId() != HdfsConstants.INVALID_TXID
&& !rollingRollback) {
if (editIn.getLastTxId() != HdfsConstants.INVALID_TXID) {
lastAppliedTxId = editIn.getLastTxId();
}
}

View File

@ -268,7 +268,7 @@ public class TestRollingUpgrade {
}
// Restart should succeed!
// cluster.restartNameNode();
cluster.restartNameNode();
cluster.restartNameNode("-rollingUpgrade", "rollback");
{