Skip to content

Commit

Permalink
Fix random gradle check failure issue 3584.
Browse files Browse the repository at this point in the history
This changes NRTReplicationEngineTests to assert against the exact version of
SegmentInfos passed from the primary to replicas.  Under certain conditions a primary
can perform a merge while the replica is updating, making its latest segmentInfos differ
from what was passed to the replica.  It also removes the assertion against engine.segments(),
because that is always computed from the `lastCommittedSegmentInfos`, which will differ after a merge.

Signed-off-by: Marc Handalian <[email protected]>
  • Loading branch information
mch2 committed Jun 17, 2022
1 parent b5f137b commit 1c889bf
Showing 1 changed file with 11 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,9 @@ public void testUpdateSegments() throws Exception {

engine.refresh("test");

nrtEngine.updateSegments(engine.getLatestSegmentInfos(), engine.getProcessedLocalCheckpoint());
assertMatchingSegmentsAndCheckpoints(nrtEngine);
final SegmentInfos latestPrimaryInfos = engine.getLatestSegmentInfos();
nrtEngine.updateSegments(latestPrimaryInfos, engine.getProcessedLocalCheckpoint());
assertMatchingSegmentsAndCheckpoints(nrtEngine, latestPrimaryInfos);

// assert a doc from the operations exists.
final ParsedDocument parsedDoc = createParsedDoc(operations.stream().findFirst().get().id(), null);
Expand Down Expand Up @@ -139,8 +140,9 @@ public void testUpdateSegments() throws Exception {
);
}

nrtEngine.updateSegments(engine.getLastCommittedSegmentInfos(), engine.getProcessedLocalCheckpoint());
assertMatchingSegmentsAndCheckpoints(nrtEngine);
final SegmentInfos primaryInfos = engine.getLastCommittedSegmentInfos();
nrtEngine.updateSegments(primaryInfos, engine.getProcessedLocalCheckpoint());
assertMatchingSegmentsAndCheckpoints(nrtEngine, primaryInfos);

assertEquals(
nrtEngine.getTranslog().getGeneration().translogFileGeneration,
Expand Down Expand Up @@ -196,14 +198,14 @@ public void testTrimTranslogOps() throws Exception {
}
}

private void assertMatchingSegmentsAndCheckpoints(NRTReplicationEngine nrtEngine) throws IOException {
private void assertMatchingSegmentsAndCheckpoints(NRTReplicationEngine nrtEngine, SegmentInfos expectedSegmentInfos)
throws IOException {
assertEquals(engine.getPersistedLocalCheckpoint(), nrtEngine.getPersistedLocalCheckpoint());
assertEquals(engine.getProcessedLocalCheckpoint(), nrtEngine.getProcessedLocalCheckpoint());
assertEquals(engine.getLocalCheckpointTracker().getMaxSeqNo(), nrtEngine.getLocalCheckpointTracker().getMaxSeqNo());
assertEquals(engine.getLatestSegmentInfos().files(true), nrtEngine.getLatestSegmentInfos().files(true));
assertEquals(engine.getLatestSegmentInfos().getUserData(), nrtEngine.getLatestSegmentInfos().getUserData());
assertEquals(engine.getLatestSegmentInfos().getVersion(), nrtEngine.getLatestSegmentInfos().getVersion());
assertEquals(engine.segments(true), nrtEngine.segments(true));
assertEquals(expectedSegmentInfos.files(true), nrtEngine.getLatestSegmentInfos().files(true));
assertEquals(expectedSegmentInfos.getUserData(), nrtEngine.getLatestSegmentInfos().getUserData());
assertEquals(expectedSegmentInfos.getVersion(), nrtEngine.getLatestSegmentInfos().getVersion());
}

private void assertSearcherHits(Engine engine, int hits) {
Expand Down

0 comments on commit 1c889bf

Please sign in to comment.