@Test
public void testNewerVersionOfSegmentWins2() throws Exception {

  setupEdgeCaseOneJnHasSegmentWithAcceptedRecovery();
  // Recover without JN0 present.
  cluster.getJournalNode(0).stopAndJoin(0);
  
  qjm = createSpyingQJM();
  try {
    assertEquals(100, QJMTestUtil.recoverAndReturnLastTxn(qjm));
    // After recovery, JN0 comes back to life and JN1 crashes.
    cluster.restartJournalNode(0);
    cluster.getJournalNode(1).stopAndJoin(0);
    
    // Write segment but do not finalize
    writeSegment(cluster, qjm, 101, 50, false);
  } finally {
    qjm.close();
  }
  
  // State:
  // JN0: 1-100 finalized, 101_inprogress (txns up to 150)
  // Previously, JN0 had an accepted recovery 101-101 from an earlier recovery
  // attempt.
  // JN1: 1-100 finalized
  // JN2: 1-100 finalized, 101_inprogress (txns up to 150)
  
  // We need to test that the accepted recovery 101-101 on JN0 doesn't
  // end up truncating the log back to 101.
  cluster.restartJournalNode(1);
  cluster.getJournalNode(2).stopAndJoin(0);
  qjm = createSpyingQJM();
  try {
    assertEquals(150, QJMTestUtil.recoverAndReturnLastTxn(qjm));
  } finally {
    qjm.close();
  }
}