HDFS-12836. startTxId could be greater than endTxId when tailing in-progress edit log. Contributed by Chao Sun.
This commit is contained in:
parent
53bbef3802
commit
0faf506245
|
@ -498,6 +498,12 @@ public class QuorumJournalManager implements JournalManager {
|
||||||
// than committedTxnId. This ensures the consistency.
|
// than committedTxnId. This ensures the consistency.
|
||||||
if (onlyDurableTxns && inProgressOk) {
|
if (onlyDurableTxns && inProgressOk) {
|
||||||
endTxId = Math.min(endTxId, committedTxnId);
|
endTxId = Math.min(endTxId, committedTxnId);
|
||||||
|
if (endTxId < remoteLog.getStartTxId()) {
|
||||||
|
LOG.warn("Found endTxId (" + endTxId + ") that is less than " +
|
||||||
|
"the startTxId (" + remoteLog.getStartTxId() +
|
||||||
|
") - setting it to startTxId.");
|
||||||
|
endTxId = remoteLog.getStartTxId();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EditLogInputStream elis = EditLogFileInputStream.fromUrl(
|
EditLogInputStream elis = EditLogFileInputStream.fromUrl(
|
||||||
|
|
|
@ -309,6 +309,25 @@ public class TestStandbyInProgressTail {
|
||||||
assertNotNull(NameNodeAdapter.getFileInfo(nn1, "/test3", true));
|
assertNotNull(NameNodeAdapter.getFileInfo(nn1, "/test3", true));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNonUniformConfig() throws Exception {
|
||||||
|
// Test case where some NNs (in this case the active NN) in the cluster
|
||||||
|
// do not have in-progress tailing enabled.
|
||||||
|
Configuration newConf = cluster.getNameNode(0).getConf();
|
||||||
|
newConf.setBoolean(
|
||||||
|
DFSConfigKeys.DFS_HA_TAILEDITS_INPROGRESS_KEY,
|
||||||
|
false);
|
||||||
|
cluster.restartNameNode(0);
|
||||||
|
cluster.transitionToActive(0);
|
||||||
|
|
||||||
|
cluster.getNameNode(0).getRpcServer().mkdirs("/test",
|
||||||
|
FsPermission.createImmutable((short) 0755), true);
|
||||||
|
cluster.getNameNode(0).getRpcServer().rollEdits();
|
||||||
|
|
||||||
|
cluster.getNameNode(1).getNamesystem().getEditLogTailer().doTailEdits();
|
||||||
|
assertNotNull(NameNodeAdapter.getFileInfo(nn1, "/test", true));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check that no edits files are present in the given storage dirs.
|
* Check that no edits files are present in the given storage dirs.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue