|
@@ -661,7 +661,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
trimUnsafeCommits(engine.config());
|
|
|
engine = new InternalEngine(engine.config());
|
|
|
assertTrue(engine.isRecovering());
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
Engine.Searcher searcher = wrapper.wrap(engine.acquireSearcher("test"));
|
|
|
assertThat(counter.get(), equalTo(2));
|
|
|
searcher.close();
|
|
@@ -678,7 +678,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
engine = new InternalEngine(engine.config());
|
|
|
expectThrows(IllegalStateException.class, () -> engine.flush(true, true));
|
|
|
assertTrue(engine.isRecovering());
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
assertFalse(engine.isRecovering());
|
|
|
doc = testParsedDocument("2", null, testDocumentWithTextField(), SOURCE, null);
|
|
|
engine.index(indexForDoc(doc));
|
|
@@ -708,7 +708,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
}
|
|
|
trimUnsafeCommits(engine.config());
|
|
|
try (Engine recoveringEngine = new InternalEngine(engine.config())){
|
|
|
- recoveringEngine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ recoveringEngine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
try (Engine.Searcher searcher = recoveringEngine.acquireSearcher("test")) {
|
|
|
final TotalHitCountCollector collector = new TotalHitCountCollector();
|
|
|
searcher.searcher().search(new MatchAllDocsQuery(), collector);
|
|
@@ -744,7 +744,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
}
|
|
|
};
|
|
|
assertThat(getTranslog(recoveringEngine).stats().getUncommittedOperations(), equalTo(docs));
|
|
|
- recoveringEngine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ recoveringEngine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
assertTrue(committed.get());
|
|
|
} finally {
|
|
|
IOUtils.close(recoveringEngine);
|
|
@@ -778,7 +778,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
initialEngine.close();
|
|
|
trimUnsafeCommits(initialEngine.config());
|
|
|
recoveringEngine = new InternalEngine(initialEngine.config());
|
|
|
- recoveringEngine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ recoveringEngine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
try (Engine.Searcher searcher = recoveringEngine.acquireSearcher("test")) {
|
|
|
TopDocs topDocs = searcher.searcher().search(new MatchAllDocsQuery(), docs);
|
|
|
assertEquals(docs, topDocs.totalHits.value);
|
|
@@ -811,14 +811,14 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
}
|
|
|
trimUnsafeCommits(config);
|
|
|
try (InternalEngine engine = new InternalEngine(config)) {
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
assertThat(engine.getLocalCheckpoint(), equalTo(maxSeqNo));
|
|
|
assertThat(engine.getLocalCheckpointTracker().getMaxSeqNo(), equalTo(maxSeqNo));
|
|
|
}
|
|
|
trimUnsafeCommits(config);
|
|
|
try (InternalEngine engine = new InternalEngine(config)) {
|
|
|
long upToSeqNo = randomLongBetween(globalCheckpoint.get(), maxSeqNo);
|
|
|
- engine.recoverFromTranslog(upToSeqNo);
|
|
|
+ engine.recoverFromTranslog(translogHandler, upToSeqNo);
|
|
|
assertThat(engine.getLocalCheckpoint(), equalTo(upToSeqNo));
|
|
|
assertThat(engine.getLocalCheckpointTracker().getMaxSeqNo(), equalTo(upToSeqNo));
|
|
|
}
|
|
@@ -1202,7 +1202,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
}
|
|
|
trimUnsafeCommits(config);
|
|
|
engine = new InternalEngine(config);
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
assertEquals(engine.getLastCommittedSegmentInfos().getUserData().get(Engine.SYNC_COMMIT_ID), syncId);
|
|
|
}
|
|
|
|
|
@@ -1221,7 +1221,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
engine.close();
|
|
|
trimUnsafeCommits(config);
|
|
|
engine = new InternalEngine(config);
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
assertNull("Sync ID must be gone since we have a document to replay", engine.getLastCommittedSegmentInfos().getUserData().get(Engine.SYNC_COMMIT_ID));
|
|
|
}
|
|
|
|
|
@@ -2187,7 +2187,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
|
|
|
trimUnsafeCommits(initialEngine.engineConfig);
|
|
|
try (InternalEngine recoveringEngine = new InternalEngine(initialEngine.config())){
|
|
|
- recoveringEngine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ recoveringEngine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
|
|
|
assertEquals(primarySeqNo, recoveringEngine.getSeqNoStats(-1).getMaxSeqNo());
|
|
|
assertThat(
|
|
@@ -2508,7 +2508,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
try (InternalEngine engine = createEngine(config)) {
|
|
|
engine.index(firstIndexRequest);
|
|
|
globalCheckpoint.set(engine.getLocalCheckpoint());
|
|
|
- expectThrows(IllegalStateException.class, () -> engine.recoverFromTranslog(Long.MAX_VALUE));
|
|
|
+ expectThrows(IllegalStateException.class, () -> engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE));
|
|
|
Map<String, String> userData = engine.getLastCommittedSegmentInfos().getUserData();
|
|
|
assertEquals("1", userData.get(Translog.TRANSLOG_GENERATION_KEY));
|
|
|
assertEquals(engine.getTranslog().getTranslogUUID(), userData.get(Translog.TRANSLOG_UUID_KEY));
|
|
@@ -2530,7 +2530,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
assertEquals("3", userData.get(Translog.TRANSLOG_GENERATION_KEY));
|
|
|
}
|
|
|
assertEquals(engine.getTranslog().getTranslogUUID(), userData.get(Translog.TRANSLOG_UUID_KEY));
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
userData = engine.getLastCommittedSegmentInfos().getUserData();
|
|
|
assertEquals("3", userData.get(Translog.TRANSLOG_GENERATION_KEY));
|
|
|
assertEquals(engine.getTranslog().getTranslogUUID(), userData.get(Translog.TRANSLOG_UUID_KEY));
|
|
@@ -2547,7 +2547,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
Map<String, String> userData = engine.getLastCommittedSegmentInfos().getUserData();
|
|
|
assertEquals("1", userData.get(Translog.TRANSLOG_GENERATION_KEY));
|
|
|
assertEquals(engine.getTranslog().getTranslogUUID(), userData.get(Translog.TRANSLOG_UUID_KEY));
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
assertEquals(2, engine.getTranslog().currentFileGeneration());
|
|
|
assertEquals(0L, engine.getTranslog().stats().getUncommittedOperations());
|
|
|
}
|
|
@@ -2561,7 +2561,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
Map<String, String> userData = engine.getLastCommittedSegmentInfos().getUserData();
|
|
|
assertEquals("1", userData.get(Translog.TRANSLOG_GENERATION_KEY));
|
|
|
assertEquals(engine.getTranslog().getTranslogUUID(), userData.get(Translog.TRANSLOG_UUID_KEY));
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
userData = engine.getLastCommittedSegmentInfos().getUserData();
|
|
|
assertEquals("no changes - nothing to commit", "1", userData.get(Translog.TRANSLOG_GENERATION_KEY));
|
|
|
assertEquals(engine.getTranslog().getTranslogUUID(), userData.get(Translog.TRANSLOG_UUID_KEY));
|
|
@@ -2667,7 +2667,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
}
|
|
|
}
|
|
|
}) {
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
final ParsedDocument doc1 = testParsedDocument("1", null, testDocumentWithTextField(), SOURCE, null);
|
|
|
engine.index(indexForDoc(doc1));
|
|
|
globalCheckpoint.set(engine.getLocalCheckpoint());
|
|
@@ -2678,7 +2678,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
try (InternalEngine engine =
|
|
|
new InternalEngine(config(indexSettings, store, translogPath, newMergePolicy(), null, null,
|
|
|
globalCheckpointSupplier))) {
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
assertVisibleCount(engine, 1);
|
|
|
final long committedGen = Long.valueOf(
|
|
|
engine.getLastCommittedSegmentInfos().getUserData().get(Translog.TRANSLOG_GENERATION_KEY));
|
|
@@ -2739,30 +2739,28 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
assertThat(indexResult.getVersion(), equalTo(1L));
|
|
|
}
|
|
|
assertVisibleCount(engine, numDocs);
|
|
|
-
|
|
|
- TranslogHandler parser = (TranslogHandler) engine.config().getTranslogRecoveryRunner();
|
|
|
- parser.mappingUpdate = dynamicUpdate();
|
|
|
+ translogHandler = createTranslogHandler(engine.engineConfig.getIndexSettings());
|
|
|
+ translogHandler.mappingUpdate = dynamicUpdate();
|
|
|
|
|
|
engine.close();
|
|
|
trimUnsafeCommits(copy(engine.config(), inSyncGlobalCheckpointSupplier));
|
|
|
engine = new InternalEngine(copy(engine.config(), inSyncGlobalCheckpointSupplier)); // we need to reuse the engine config unless the parser.mappingModified won't work
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
|
|
|
assertVisibleCount(engine, numDocs, false);
|
|
|
- parser = (TranslogHandler) engine.config().getTranslogRecoveryRunner();
|
|
|
- assertEquals(numDocs, parser.appliedOperations());
|
|
|
- if (parser.mappingUpdate != null) {
|
|
|
- assertEquals(1, parser.getRecoveredTypes().size());
|
|
|
- assertTrue(parser.getRecoveredTypes().containsKey("test"));
|
|
|
+ assertEquals(numDocs, translogHandler.appliedOperations());
|
|
|
+ if (translogHandler.mappingUpdate != null) {
|
|
|
+ assertEquals(1, translogHandler.getRecoveredTypes().size());
|
|
|
+ assertTrue(translogHandler.getRecoveredTypes().containsKey("test"));
|
|
|
} else {
|
|
|
- assertEquals(0, parser.getRecoveredTypes().size());
|
|
|
+ assertEquals(0, translogHandler.getRecoveredTypes().size());
|
|
|
}
|
|
|
|
|
|
engine.close();
|
|
|
+ translogHandler = createTranslogHandler(engine.engineConfig.getIndexSettings());
|
|
|
engine = createEngine(store, primaryTranslogDir, inSyncGlobalCheckpointSupplier);
|
|
|
assertVisibleCount(engine, numDocs, false);
|
|
|
- parser = (TranslogHandler) engine.config().getTranslogRecoveryRunner();
|
|
|
- assertEquals(0, parser.appliedOperations());
|
|
|
+ assertEquals(0, translogHandler.appliedOperations());
|
|
|
|
|
|
final boolean flush = randomBoolean();
|
|
|
int randomId = randomIntBetween(numDocs + 1, numDocs + 10);
|
|
@@ -2786,13 +2784,13 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
}
|
|
|
|
|
|
engine.close();
|
|
|
+ translogHandler = createTranslogHandler(engine.engineConfig.getIndexSettings());
|
|
|
engine = createEngine(store, primaryTranslogDir, inSyncGlobalCheckpointSupplier);
|
|
|
try (Engine.Searcher searcher = engine.acquireSearcher("test")) {
|
|
|
TopDocs topDocs = searcher.searcher().search(new MatchAllDocsQuery(), numDocs + 1);
|
|
|
assertThat(topDocs.totalHits.value, equalTo(numDocs + 1L));
|
|
|
}
|
|
|
- parser = (TranslogHandler) engine.config().getTranslogRecoveryRunner();
|
|
|
- assertEquals(flush ? 1 : 2, parser.appliedOperations());
|
|
|
+ assertEquals(flush ? 1 : 2, translogHandler.appliedOperations());
|
|
|
engine.delete(new Engine.Delete("test", Integer.toString(randomId), newUid(doc), primaryTerm.get()));
|
|
|
if (randomBoolean()) {
|
|
|
engine.refresh("test");
|
|
@@ -2836,7 +2834,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
threadPool, config.getIndexSettings(), null, store, newMergePolicy(), config.getAnalyzer(), config.getSimilarity(),
|
|
|
new CodecService(null, logger), config.getEventListener(), IndexSearcher.getDefaultQueryCache(),
|
|
|
IndexSearcher.getDefaultQueryCachingPolicy(), translogConfig, TimeValue.timeValueMinutes(5),
|
|
|
- config.getExternalRefreshListener(), config.getInternalRefreshListener(), null, config.getTranslogRecoveryRunner(),
|
|
|
+ config.getExternalRefreshListener(), config.getInternalRefreshListener(), null,
|
|
|
new NoneCircuitBreakerService(), () -> SequenceNumbers.UNASSIGNED_SEQ_NO, primaryTerm::get, tombstoneDocSupplier());
|
|
|
try {
|
|
|
InternalEngine internalEngine = new InternalEngine(brokenConfig);
|
|
@@ -3455,7 +3453,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
}
|
|
|
try (Store store = createStore(newFSDirectory(storeDir)); Engine engine = new InternalEngine(configSupplier.apply(store))) {
|
|
|
assertEquals(IndexRequest.UNSET_AUTO_GENERATED_TIMESTAMP, engine.segmentsStats(false).getMaxUnsafeAutoIdTimestamp());
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
assertEquals(timestamp1, engine.segmentsStats(false).getMaxUnsafeAutoIdTimestamp());
|
|
|
final ParsedDocument doc = testParsedDocument("1", null, testDocumentWithTextField(),
|
|
|
new BytesArray("{}".getBytes(Charset.defaultCharset())), null);
|
|
@@ -3738,7 +3736,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
}
|
|
|
trimUnsafeCommits(initialEngine.config());
|
|
|
try (Engine recoveringEngine = new InternalEngine(initialEngine.config())) {
|
|
|
- recoveringEngine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ recoveringEngine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
recoveringEngine.fillSeqNoGaps(2);
|
|
|
assertThat(recoveringEngine.getLocalCheckpoint(), greaterThanOrEqualTo((long) (docs - 1)));
|
|
|
}
|
|
@@ -3849,7 +3847,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
throw new UnsupportedOperationException();
|
|
|
}
|
|
|
};
|
|
|
- noOpEngine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ noOpEngine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
final int gapsFilled = noOpEngine.fillSeqNoGaps(primaryTerm.get());
|
|
|
final String reason = "filling gaps";
|
|
|
noOpEngine.noOp(new Engine.NoOp(maxSeqNo + 1, primaryTerm.get(), LOCAL_TRANSLOG_RECOVERY, System.nanoTime(), reason));
|
|
@@ -4127,7 +4125,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
trimUnsafeCommits(copy(replicaEngine.config(), globalCheckpoint::get));
|
|
|
recoveringEngine = new InternalEngine(copy(replicaEngine.config(), globalCheckpoint::get));
|
|
|
assertEquals(numDocsOnReplica, getTranslog(recoveringEngine).stats().getUncommittedOperations());
|
|
|
- recoveringEngine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ recoveringEngine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
assertEquals(maxSeqIDOnReplica, recoveringEngine.getSeqNoStats(-1).getMaxSeqNo());
|
|
|
assertEquals(checkpointOnReplica, recoveringEngine.getLocalCheckpoint());
|
|
|
assertEquals((maxSeqIDOnReplica + 1) - numDocsOnReplica, recoveringEngine.fillSeqNoGaps(2));
|
|
@@ -4163,7 +4161,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
if (flushed) {
|
|
|
assertThat(recoveringEngine.getTranslogStats().getUncommittedOperations(), equalTo(0));
|
|
|
}
|
|
|
- recoveringEngine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ recoveringEngine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
assertEquals(maxSeqIDOnReplica, recoveringEngine.getSeqNoStats(-1).getMaxSeqNo());
|
|
|
assertEquals(maxSeqIDOnReplica, recoveringEngine.getLocalCheckpoint());
|
|
|
assertEquals(0, recoveringEngine.fillSeqNoGaps(3));
|
|
@@ -4356,7 +4354,7 @@ public class InternalEngineTests extends EngineTestCase {
|
|
|
super.commitIndexWriter(writer, translog, syncId);
|
|
|
}
|
|
|
}) {
|
|
|
- engine.recoverFromTranslog(Long.MAX_VALUE);
|
|
|
+ engine.recoverFromTranslog(translogHandler, Long.MAX_VALUE);
|
|
|
int numDocs = scaledRandomIntBetween(10, 100);
|
|
|
for (int docId = 0; docId < numDocs; docId++) {
|
|
|
ParseContext.Document document = testDocumentWithTextField();
|