|
@@ -53,6 +53,7 @@ import org.apache.lucene.util.IOUtils;
|
|
|
import org.apache.lucene.util.TestUtil;
|
|
|
import org.elasticsearch.ElasticsearchException;
|
|
|
import org.elasticsearch.Version;
|
|
|
+import org.elasticsearch.action.index.IndexRequest;
|
|
|
import org.elasticsearch.action.support.TransportActions;
|
|
|
import org.elasticsearch.cluster.metadata.IndexMetaData;
|
|
|
import org.elasticsearch.common.Nullable;
|
|
@@ -206,7 +207,8 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
return new EngineConfig(openMode, config.getShardId(), config.getThreadPool(), config.getIndexSettings(), config.getWarmer(),
|
|
|
config.getStore(), config.getDeletionPolicy(), config.getMergePolicy(), config.getAnalyzer(), config.getSimilarity(),
|
|
|
new CodecService(null, logger), config.getEventListener(), config.getTranslogRecoveryPerformer(), config.getQueryCache(),
|
|
|
- config.getQueryCachingPolicy(), config.getTranslogConfig(), config.getFlushMergesAfter(), config.getRefreshListeners());
|
|
|
+ config.getQueryCachingPolicy(), config.getTranslogConfig(), config.getFlushMergesAfter(), config.getRefreshListeners(),
|
|
|
+ config.getMaxUnsafeAutoIdTimestamp());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -276,7 +278,7 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
protected InternalEngine createEngine(IndexSettings indexSettings, Store store, Path translogPath, MergePolicy mergePolicy) throws IOException {
|
|
|
- EngineConfig config = config(indexSettings, store, translogPath, mergePolicy);
|
|
|
+ EngineConfig config = config(indexSettings, store, translogPath, mergePolicy, IndexRequest.UNSET_AUTO_GENERATED_TIMESTAMP);
|
|
|
InternalEngine internalEngine = new InternalEngine(config);
|
|
|
if (config.getOpenMode() == EngineConfig.OpenMode.OPEN_INDEX_AND_TRANSLOG) {
|
|
|
internalEngine.recoverFromTranslog();
|
|
@@ -284,7 +286,7 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
return internalEngine;
|
|
|
}
|
|
|
|
|
|
- public EngineConfig config(IndexSettings indexSettings, Store store, Path translogPath, MergePolicy mergePolicy) {
|
|
|
+ public EngineConfig config(IndexSettings indexSettings, Store store, Path translogPath, MergePolicy mergePolicy, long maxUnsafeAutoIdTimestamp) {
|
|
|
IndexWriterConfig iwc = newIndexWriterConfig();
|
|
|
TranslogConfig translogConfig = new TranslogConfig(shardId, translogPath, indexSettings, BigArrays.NON_RECYCLING_INSTANCE);
|
|
|
final EngineConfig.OpenMode openMode;
|
|
@@ -306,7 +308,7 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
EngineConfig config = new EngineConfig(openMode, shardId, threadPool, indexSettings, null, store, createSnapshotDeletionPolicy(),
|
|
|
mergePolicy, iwc.getAnalyzer(), iwc.getSimilarity(), new CodecService(null, logger), listener,
|
|
|
new TranslogHandler(shardId.getIndexName(), logger), IndexSearcher.getDefaultQueryCache(),
|
|
|
- IndexSearcher.getDefaultQueryCachingPolicy(), translogConfig, TimeValue.timeValueMinutes(5), null);
|
|
|
+ IndexSearcher.getDefaultQueryCachingPolicy(), translogConfig, TimeValue.timeValueMinutes(5), null, maxUnsafeAutoIdTimestamp);
|
|
|
|
|
|
return config;
|
|
|
}
|
|
@@ -903,7 +905,7 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
public void testSyncedFlush() throws IOException {
|
|
|
try (Store store = createStore();
|
|
|
Engine engine = new InternalEngine(config(defaultSettings, store, createTempDir(),
|
|
|
- new LogByteSizeMergePolicy()))) {
|
|
|
+ new LogByteSizeMergePolicy(), IndexRequest.UNSET_AUTO_GENERATED_TIMESTAMP))) {
|
|
|
final String syncId = randomUnicodeOfCodepointLengthBetween(10, 20);
|
|
|
ParsedDocument doc = testParsedDocument("1", "1", "test", null, -1, -1, testDocumentWithTextField(), B_1, null);
|
|
|
engine.index(new Engine.Index(newUid("1"), doc));
|
|
@@ -930,7 +932,7 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
for (int i = 0; i < iters; i++) {
|
|
|
try (Store store = createStore();
|
|
|
InternalEngine engine = new InternalEngine(config(defaultSettings, store, createTempDir(),
|
|
|
- new LogDocMergePolicy()))) {
|
|
|
+ new LogDocMergePolicy(), IndexRequest.UNSET_AUTO_GENERATED_TIMESTAMP))) {
|
|
|
final String syncId = randomUnicodeOfCodepointLengthBetween(10, 20);
|
|
|
ParsedDocument doc = testParsedDocument("1", "1", "test", null, -1, -1, testDocumentWithTextField(), B_1, null);
|
|
|
Engine.Index doc1 = new Engine.Index(newUid("1"), doc);
|
|
@@ -1158,7 +1160,7 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
public void testForceMerge() throws IOException {
|
|
|
try (Store store = createStore();
|
|
|
Engine engine = new InternalEngine(config(defaultSettings, store, createTempDir(),
|
|
|
- new LogByteSizeMergePolicy()))) { // use log MP here we test some behavior in ESMP
|
|
|
+ new LogByteSizeMergePolicy(), IndexRequest.UNSET_AUTO_GENERATED_TIMESTAMP))) { // use log MP here we test some behavior in ESMP
|
|
|
int numDocs = randomIntBetween(10, 100);
|
|
|
for (int i = 0; i < numDocs; i++) {
|
|
|
ParsedDocument doc = testParsedDocument(Integer.toString(i), Integer.toString(i), "test", null, -1, -1, testDocument(), B_1, null);
|
|
@@ -1601,7 +1603,7 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
|
|
|
public void testEnableGcDeletes() throws Exception {
|
|
|
try (Store store = createStore();
|
|
|
- Engine engine = new InternalEngine(config(defaultSettings, store, createTempDir(), newMergePolicy()))) {
|
|
|
+ Engine engine = new InternalEngine(config(defaultSettings, store, createTempDir(), newMergePolicy(), IndexRequest.UNSET_AUTO_GENERATED_TIMESTAMP))) {
|
|
|
engine.config().setEnableGcDeletes(false);
|
|
|
|
|
|
// Add document
|
|
@@ -1737,7 +1739,7 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
// expected
|
|
|
}
|
|
|
// now it should be OK.
|
|
|
- EngineConfig config = copy(config(defaultSettings, store, primaryTranslogDir, newMergePolicy()), EngineConfig.OpenMode.OPEN_INDEX_CREATE_TRANSLOG);
|
|
|
+ EngineConfig config = copy(config(defaultSettings, store, primaryTranslogDir, newMergePolicy(), IndexRequest.UNSET_AUTO_GENERATED_TIMESTAMP), EngineConfig.OpenMode.OPEN_INDEX_CREATE_TRANSLOG);
|
|
|
engine = new InternalEngine(config);
|
|
|
}
|
|
|
|
|
@@ -2057,7 +2059,7 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
config.getIndexSettings(), null, store, createSnapshotDeletionPolicy(), newMergePolicy(), config.getAnalyzer(),
|
|
|
config.getSimilarity(), new CodecService(null, logger), config.getEventListener(), config.getTranslogRecoveryPerformer(),
|
|
|
IndexSearcher.getDefaultQueryCache(), IndexSearcher.getDefaultQueryCachingPolicy(), translogConfig,
|
|
|
- TimeValue.timeValueMinutes(5), config.getRefreshListeners());
|
|
|
+ TimeValue.timeValueMinutes(5), config.getRefreshListeners(), IndexRequest.UNSET_AUTO_GENERATED_TIMESTAMP);
|
|
|
|
|
|
try {
|
|
|
InternalEngine internalEngine = new InternalEngine(brokenConfig);
|
|
@@ -2112,7 +2114,7 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
|
|
|
public void testCurrentTranslogIDisCommitted() throws IOException {
|
|
|
try (Store store = createStore()) {
|
|
|
- EngineConfig config = config(defaultSettings, store, createTempDir(), newMergePolicy());
|
|
|
+ EngineConfig config = config(defaultSettings, store, createTempDir(), newMergePolicy(), IndexRequest.UNSET_AUTO_GENERATED_TIMESTAMP);
|
|
|
|
|
|
// create
|
|
|
{
|
|
@@ -2374,6 +2376,22 @@ public class InternalEngineTests extends ESTestCase {
|
|
|
assertTrue(engine.indexWriterHasDeletions());
|
|
|
}
|
|
|
|
|
|
+ public void testEngineMaxTimestampIsInitialized() throws IOException {
|
|
|
+ try (Store store = createStore();
|
|
|
+ Engine engine = new InternalEngine(config(defaultSettings, store, createTempDir(), NoMergePolicy.INSTANCE,
|
|
|
+ IndexRequest.UNSET_AUTO_GENERATED_TIMESTAMP))) {
|
|
|
+ assertEquals(IndexRequest.UNSET_AUTO_GENERATED_TIMESTAMP, engine.segmentsStats(false).getMaxUnsafeAutoIdTimestamp());
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ long maxTimestamp = Math.abs(randomLong());
|
|
|
+ try (Store store = createStore();
|
|
|
+ Engine engine = new InternalEngine(config(defaultSettings, store, createTempDir(), NoMergePolicy.INSTANCE,
|
|
|
+ maxTimestamp))) {
|
|
|
+ assertEquals(maxTimestamp, engine.segmentsStats(false).getMaxUnsafeAutoIdTimestamp());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void testAppendConcurrently() throws InterruptedException, IOException {
|
|
|
Thread[] thread = new Thread[randomIntBetween(3, 5)];
|
|
|
int numDocs = randomIntBetween(1000, 10000);
|