From b4e01bfe7f6cfd5fe3a7af66d0b60853570c1e5d Mon Sep 17 00:00:00 2001 From: Ashish Date: Wed, 18 Jan 2023 12:52:36 +0530 Subject: [PATCH] Add builder for EngineConfig (#5618) (#5914) * Add builder for EngineConfig Signed-off-by: Sachin Kale --- .../indices/IndexingMemoryControllerIT.java | 47 ++- .../opensearch/index/engine/EngineConfig.java | 354 ++++++++++-------- .../index/engine/EngineConfigFactory.java | 53 ++- .../index/engine/EngineConfigTests.java | 60 +-- .../index/engine/InternalEngineTests.java | 143 ++++--- .../index/shard/IndexShardTests.java | 47 ++- .../index/shard/RefreshListenersTests.java | 45 ++- .../IndexingMemoryControllerTests.java | 47 ++- .../index/engine/EngineTestCase.java | 235 ++++++------ 9 files changed, 499 insertions(+), 532 deletions(-) diff --git a/server/src/internalClusterTest/java/org/opensearch/indices/IndexingMemoryControllerIT.java b/server/src/internalClusterTest/java/org/opensearch/indices/IndexingMemoryControllerIT.java index 0d3c685ab0327..72de689562e7a 100644 --- a/server/src/internalClusterTest/java/org/opensearch/indices/IndexingMemoryControllerIT.java +++ b/server/src/internalClusterTest/java/org/opensearch/indices/IndexingMemoryControllerIT.java @@ -81,30 +81,29 @@ EngineConfig engineConfigWithLargerIndexingMemory(EngineConfig config) { .put("indices.memory.index_buffer_size", "10mb") .build(); IndexSettings indexSettings = new IndexSettings(config.getIndexSettings().getIndexMetadata(), settings); - return new EngineConfig( - config.getShardId(), - config.getThreadPool(), - indexSettings, - config.getWarmer(), - config.getStore(), - config.getMergePolicy(), - config.getAnalyzer(), - config.getSimilarity(), - new CodecService(null, LogManager.getLogger(IndexingMemoryControllerIT.class)), - config.getEventListener(), - config.getQueryCache(), - config.getQueryCachingPolicy(), - config.getTranslogConfig(), - config.getFlushMergesAfter(), - config.getExternalRefreshListener(), - config.getInternalRefreshListener(), - config.getIndexSort(), - config.getCircuitBreakerService(), - config.getGlobalCheckpointSupplier(), - config.retentionLeasesSupplier(), - config.getPrimaryTermSupplier(), - config.getTombstoneDocSupplier() - ); + return new EngineConfig.Builder().shardId(config.getShardId()) + .threadPool(config.getThreadPool()) + .indexSettings(indexSettings) + .warmer(config.getWarmer()) + .store(config.getStore()) + .mergePolicy(config.getMergePolicy()) + .analyzer(config.getAnalyzer()) + .similarity(config.getSimilarity()) + .codecService(new CodecService(null, LogManager.getLogger(IndexingMemoryControllerIT.class))) + .eventListener(config.getEventListener()) + .queryCache(config.getQueryCache()) + .queryCachingPolicy(config.getQueryCachingPolicy()) + .translogConfig(config.getTranslogConfig()) + .flushMergesAfter(config.getFlushMergesAfter()) + .externalRefreshListener(config.getExternalRefreshListener()) + .internalRefreshListener(config.getInternalRefreshListener()) + .indexSort(config.getIndexSort()) + .circuitBreakerService(config.getCircuitBreakerService()) + .globalCheckpointSupplier(config.getGlobalCheckpointSupplier()) + .retentionLeasesSupplier(config.retentionLeasesSupplier()) + .primaryTermSupplier(config.getPrimaryTermSupplier()) + .tombstoneDocSupplier(config.getTombstoneDocSupplier()) + .build(); } @Override diff --git a/server/src/main/java/org/opensearch/index/engine/EngineConfig.java b/server/src/main/java/org/opensearch/index/engine/EngineConfig.java index ba30103f70269..1e741725749cc 100644 --- a/server/src/main/java/org/opensearch/index/engine/EngineConfig.java +++ b/server/src/main/java/org/opensearch/index/engine/EngineConfig.java @@ -154,158 +154,24 @@ public Supplier retentionLeasesSupplier() { private final TranslogFactory translogFactory; - public EngineConfig( - ShardId shardId, - ThreadPool threadPool, - IndexSettings indexSettings, - Engine.Warmer warmer, - Store store, - MergePolicy mergePolicy, - Analyzer analyzer, - Similarity similarity, - CodecService codecService, - Engine.EventListener eventListener, - QueryCache queryCache, - QueryCachingPolicy queryCachingPolicy, - TranslogConfig translogConfig, - TimeValue flushMergesAfter, - List externalRefreshListener, - List internalRefreshListener, - Sort indexSort, - CircuitBreakerService circuitBreakerService, - LongSupplier globalCheckpointSupplier, - Supplier retentionLeasesSupplier, - LongSupplier primaryTermSupplier, - TombstoneDocSupplier tombstoneDocSupplier - ) { - this( - shardId, - threadPool, - indexSettings, - warmer, - store, - mergePolicy, - analyzer, - similarity, - codecService, - eventListener, - queryCache, - queryCachingPolicy, - translogConfig, - null, - flushMergesAfter, - externalRefreshListener, - internalRefreshListener, - indexSort, - circuitBreakerService, - globalCheckpointSupplier, - retentionLeasesSupplier, - primaryTermSupplier, - tombstoneDocSupplier - ); - } - - /** - * Creates a new {@link org.opensearch.index.engine.EngineConfig} - */ - EngineConfig( - ShardId shardId, - ThreadPool threadPool, - IndexSettings indexSettings, - Engine.Warmer warmer, - Store store, - MergePolicy mergePolicy, - Analyzer analyzer, - Similarity similarity, - CodecService codecService, - Engine.EventListener eventListener, - QueryCache queryCache, - QueryCachingPolicy queryCachingPolicy, - TranslogConfig translogConfig, - TranslogDeletionPolicyFactory translogDeletionPolicyFactory, - TimeValue flushMergesAfter, - List externalRefreshListener, - List internalRefreshListener, - Sort indexSort, - CircuitBreakerService circuitBreakerService, - LongSupplier globalCheckpointSupplier, - Supplier retentionLeasesSupplier, - LongSupplier primaryTermSupplier, - TombstoneDocSupplier tombstoneDocSupplier - ) { - this( - shardId, - threadPool, - indexSettings, - warmer, - store, - mergePolicy, - analyzer, - similarity, - codecService, - eventListener, - queryCache, - queryCachingPolicy, - translogConfig, - translogDeletionPolicyFactory, - flushMergesAfter, - externalRefreshListener, - internalRefreshListener, - indexSort, - circuitBreakerService, - globalCheckpointSupplier, - retentionLeasesSupplier, - primaryTermSupplier, - tombstoneDocSupplier, - false, - new InternalTranslogFactory() - ); - } - /** * Creates a new {@link org.opensearch.index.engine.EngineConfig} */ - EngineConfig( - ShardId shardId, - ThreadPool threadPool, - IndexSettings indexSettings, - Engine.Warmer warmer, - Store store, - MergePolicy mergePolicy, - Analyzer analyzer, - Similarity similarity, - CodecService codecService, - Engine.EventListener eventListener, - QueryCache queryCache, - QueryCachingPolicy queryCachingPolicy, - TranslogConfig translogConfig, - TranslogDeletionPolicyFactory translogDeletionPolicyFactory, - TimeValue flushMergesAfter, - List externalRefreshListener, - List internalRefreshListener, - Sort indexSort, - CircuitBreakerService circuitBreakerService, - LongSupplier globalCheckpointSupplier, - Supplier retentionLeasesSupplier, - LongSupplier primaryTermSupplier, - TombstoneDocSupplier tombstoneDocSupplier, - boolean isReadOnlyReplica, - TranslogFactory translogFactory - ) { - if (isReadOnlyReplica && indexSettings.isSegRepEnabled() == false) { + private EngineConfig(Builder builder) { + if (builder.isReadOnlyReplica && builder.indexSettings.isSegRepEnabled() == false) { throw new IllegalArgumentException("Shard can only be wired as a read only replica with Segment Replication enabled"); } - this.shardId = shardId; - this.indexSettings = indexSettings; - this.threadPool = threadPool; - this.warmer = warmer == null ? (a) -> {} : warmer; - this.store = store; - this.mergePolicy = mergePolicy; - this.analyzer = analyzer; - this.similarity = similarity; - this.codecService = codecService; - this.eventListener = eventListener; - codecName = indexSettings.getValue(INDEX_CODEC_SETTING); + this.shardId = builder.shardId; + this.indexSettings = builder.indexSettings; + this.threadPool = builder.threadPool; + this.warmer = builder.warmer == null ? (a) -> {} : builder.warmer; + this.store = builder.store; + this.mergePolicy = builder.mergePolicy; + this.analyzer = builder.analyzer; + this.similarity = builder.similarity; + this.codecService = builder.codecService; + this.eventListener = builder.eventListener; + codecName = builder.indexSettings.getValue(INDEX_CODEC_SETTING); // We need to make the indexing buffer for this shard at least as large // as the amount of memory that is available for all engines on the // local node so that decisions to flush segments to disk are made by @@ -318,23 +184,23 @@ public EngineConfig( if (maxBufferSize != null) { indexingBufferSize = MemorySizeValue.parseBytesSizeValueOrHeapRatio(maxBufferSize, escapeHatchProperty); } else { - indexingBufferSize = IndexingMemoryController.INDEX_BUFFER_SIZE_SETTING.get(indexSettings.getNodeSettings()); + indexingBufferSize = IndexingMemoryController.INDEX_BUFFER_SIZE_SETTING.get(builder.indexSettings.getNodeSettings()); } - this.queryCache = queryCache; - this.queryCachingPolicy = queryCachingPolicy; - this.translogConfig = translogConfig; - this.translogDeletionPolicyFactory = translogDeletionPolicyFactory; - this.flushMergesAfter = flushMergesAfter; - this.externalRefreshListener = externalRefreshListener; - this.internalRefreshListener = internalRefreshListener; - this.indexSort = indexSort; - this.circuitBreakerService = circuitBreakerService; - this.globalCheckpointSupplier = globalCheckpointSupplier; - this.retentionLeasesSupplier = Objects.requireNonNull(retentionLeasesSupplier); - this.primaryTermSupplier = primaryTermSupplier; - this.tombstoneDocSupplier = tombstoneDocSupplier; - this.isReadOnlyReplica = isReadOnlyReplica; - this.translogFactory = translogFactory; + this.queryCache = builder.queryCache; + this.queryCachingPolicy = builder.queryCachingPolicy; + this.translogConfig = builder.translogConfig; + this.translogDeletionPolicyFactory = builder.translogDeletionPolicyFactory; + this.flushMergesAfter = builder.flushMergesAfter; + this.externalRefreshListener = builder.externalRefreshListener; + this.internalRefreshListener = builder.internalRefreshListener; + this.indexSort = builder.indexSort; + this.circuitBreakerService = builder.circuitBreakerService; + this.globalCheckpointSupplier = builder.globalCheckpointSupplier; + this.retentionLeasesSupplier = Objects.requireNonNull(builder.retentionLeasesSupplier); + this.primaryTermSupplier = builder.primaryTermSupplier; + this.tombstoneDocSupplier = builder.tombstoneDocSupplier; + this.isReadOnlyReplica = builder.isReadOnlyReplica; + this.translogFactory = builder.translogFactory; } /** @@ -573,4 +439,166 @@ public TombstoneDocSupplier getTombstoneDocSupplier() { public TranslogDeletionPolicyFactory getCustomTranslogDeletionPolicyFactory() { return translogDeletionPolicyFactory; } + + /** + * Builder for EngineConfig class + * + * @opensearch.internal + */ + public static class Builder { + private ShardId shardId; + private ThreadPool threadPool; + private IndexSettings indexSettings; + private Engine.Warmer warmer; + private Store store; + private MergePolicy mergePolicy; + private Analyzer analyzer; + private Similarity similarity; + private CodecService codecService; + private Engine.EventListener eventListener; + private QueryCache queryCache; + private QueryCachingPolicy queryCachingPolicy; + private TranslogConfig translogConfig; + private TimeValue flushMergesAfter; + private List externalRefreshListener; + private List internalRefreshListener; + private Sort indexSort; + private CircuitBreakerService circuitBreakerService; + private LongSupplier globalCheckpointSupplier; + private Supplier retentionLeasesSupplier; + private LongSupplier primaryTermSupplier; + private TombstoneDocSupplier tombstoneDocSupplier; + private TranslogDeletionPolicyFactory translogDeletionPolicyFactory; + private boolean isReadOnlyReplica; + private TranslogFactory translogFactory = new InternalTranslogFactory(); + + public Builder shardId(ShardId shardId) { + this.shardId = shardId; + return this; + } + + public Builder threadPool(ThreadPool threadPool) { + this.threadPool = threadPool; + return this; + } + + public Builder indexSettings(IndexSettings indexSettings) { + this.indexSettings = indexSettings; + return this; + } + + public Builder warmer(Engine.Warmer warmer) { + this.warmer = warmer; + return this; + } + + public Builder store(Store store) { + this.store = store; + return this; + } + + public Builder mergePolicy(MergePolicy mergePolicy) { + this.mergePolicy = mergePolicy; + return this; + } + + public Builder analyzer(Analyzer analyzer) { + this.analyzer = analyzer; + return this; + } + + public Builder similarity(Similarity similarity) { + this.similarity = similarity; + return this; + } + + public Builder codecService(CodecService codecService) { + this.codecService = codecService; + return this; + } + + public Builder eventListener(Engine.EventListener eventListener) { + this.eventListener = eventListener; + return this; + } + + public Builder queryCache(QueryCache queryCache) { + this.queryCache = queryCache; + return this; + } + + public Builder queryCachingPolicy(QueryCachingPolicy queryCachingPolicy) { + this.queryCachingPolicy = queryCachingPolicy; + return this; + } + + public Builder translogConfig(TranslogConfig translogConfig) { + this.translogConfig = translogConfig; + return this; + } + + public Builder flushMergesAfter(TimeValue flushMergesAfter) { + this.flushMergesAfter = flushMergesAfter; + return this; + } + + public Builder externalRefreshListener(List externalRefreshListener) { + this.externalRefreshListener = externalRefreshListener; + return this; + } + + public Builder internalRefreshListener(List internalRefreshListener) { + this.internalRefreshListener = internalRefreshListener; + return this; + } + + public Builder indexSort(Sort indexSort) { + this.indexSort = indexSort; + return this; + } + + public Builder circuitBreakerService(CircuitBreakerService circuitBreakerService) { + this.circuitBreakerService = circuitBreakerService; + return this; + } + + public Builder globalCheckpointSupplier(LongSupplier globalCheckpointSupplier) { + this.globalCheckpointSupplier = globalCheckpointSupplier; + return this; + } + + public Builder retentionLeasesSupplier(Supplier retentionLeasesSupplier) { + this.retentionLeasesSupplier = retentionLeasesSupplier; + return this; + } + + public Builder primaryTermSupplier(LongSupplier primaryTermSupplier) { + this.primaryTermSupplier = primaryTermSupplier; + return this; + } + + public Builder tombstoneDocSupplier(TombstoneDocSupplier tombstoneDocSupplier) { + this.tombstoneDocSupplier = tombstoneDocSupplier; + return this; + } + + public Builder translogDeletionPolicyFactory(TranslogDeletionPolicyFactory translogDeletionPolicyFactory) { + this.translogDeletionPolicyFactory = translogDeletionPolicyFactory; + return this; + } + + public Builder readOnlyReplica(boolean isReadOnlyReplica) { + this.isReadOnlyReplica = isReadOnlyReplica; + return this; + } + + public Builder translogFactory(TranslogFactory translogFactory) { + this.translogFactory = translogFactory; + return this; + } + + public EngineConfig build() { + return new EngineConfig(this); + } + } } diff --git a/server/src/main/java/org/opensearch/index/engine/EngineConfigFactory.java b/server/src/main/java/org/opensearch/index/engine/EngineConfigFactory.java index f0db086e47816..71d3e6d0f71a0 100644 --- a/server/src/main/java/org/opensearch/index/engine/EngineConfigFactory.java +++ b/server/src/main/java/org/opensearch/index/engine/EngineConfigFactory.java @@ -156,33 +156,32 @@ public EngineConfig newEngineConfig( codecServiceToUse = newCodecServiceOrDefault(indexSettings, null, null, null); } - return new EngineConfig( - shardId, - threadPool, - indexSettings, - warmer, - store, - mergePolicy, - analyzer, - similarity, - codecServiceToUse, - eventListener, - queryCache, - queryCachingPolicy, - translogConfig, - translogDeletionPolicyFactory, - flushMergesAfter, - externalRefreshListener, - internalRefreshListener, - indexSort, - circuitBreakerService, - globalCheckpointSupplier, - retentionLeasesSupplier, - primaryTermSupplier, - tombstoneDocSupplier, - isReadOnlyReplica, - translogFactory - ); + return new EngineConfig.Builder().shardId(shardId) + .threadPool(threadPool) + .indexSettings(indexSettings) + .warmer(warmer) + .store(store) + .mergePolicy(mergePolicy) + .analyzer(analyzer) + .similarity(similarity) + .codecService(codecServiceToUse) + .eventListener(eventListener) + .queryCache(queryCache) + .queryCachingPolicy(queryCachingPolicy) + .translogConfig(translogConfig) + .translogDeletionPolicyFactory(translogDeletionPolicyFactory) + .flushMergesAfter(flushMergesAfter) + .externalRefreshListener(externalRefreshListener) + .internalRefreshListener(internalRefreshListener) + .indexSort(indexSort) + .circuitBreakerService(circuitBreakerService) + .globalCheckpointSupplier(globalCheckpointSupplier) + .retentionLeasesSupplier(retentionLeasesSupplier) + .primaryTermSupplier(primaryTermSupplier) + .tombstoneDocSupplier(tombstoneDocSupplier) + .readOnlyReplica(isReadOnlyReplica) + .translogFactory(translogFactory) + .build(); } public CodecService newCodecServiceOrDefault( diff --git a/server/src/test/java/org/opensearch/index/engine/EngineConfigTests.java b/server/src/test/java/org/opensearch/index/engine/EngineConfigTests.java index 1754d6082b86d..9197b959a54f1 100644 --- a/server/src/test/java/org/opensearch/index/engine/EngineConfigTests.java +++ b/server/src/test/java/org/opensearch/index/engine/EngineConfigTests.java @@ -13,7 +13,6 @@ import org.opensearch.common.settings.Settings; import org.opensearch.index.IndexSettings; import org.opensearch.index.seqno.RetentionLeases; -import org.opensearch.index.translog.InternalTranslogFactory; import org.opensearch.indices.replication.common.ReplicationType; import org.opensearch.test.IndexSettingsModule; import org.opensearch.test.OpenSearchTestCase; @@ -34,31 +33,9 @@ public void setUp() throws Exception { } public void testEngineConfig_DefaultValueForReadOnlyEngine() { - EngineConfig config = new EngineConfig( - null, - null, - defaultIndexSettings, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - () -> RetentionLeases.EMPTY, - null, - null - ); + EngineConfig config = new EngineConfig.Builder().indexSettings(defaultIndexSettings) + .retentionLeasesSupplier(() -> RetentionLeases.EMPTY) + .build(); assertFalse(config.isReadOnlyReplica()); } @@ -79,32 +56,9 @@ public void testEngineConfig_ReadOnlyEngineWithSegRepEnabled() { } private EngineConfig createReadOnlyEngine(IndexSettings indexSettings) { - return new EngineConfig( - null, - null, - indexSettings, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - null, - () -> RetentionLeases.EMPTY, - null, - null, - true, - new InternalTranslogFactory() - ); + return new EngineConfig.Builder().indexSettings(indexSettings) + .retentionLeasesSupplier(() -> RetentionLeases.EMPTY) + .readOnlyReplica(true) + .build(); } } diff --git a/server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java b/server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java index 454ef73bb520a..64f03fcce03c5 100644 --- a/server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java +++ b/server/src/test/java/org/opensearch/index/engine/InternalEngineTests.java @@ -3697,30 +3697,29 @@ public void testRecoverFromForeignTranslog() throws IOException { BigArrays.NON_RECYCLING_INSTANCE ); - EngineConfig brokenConfig = new EngineConfig( - shardId, - 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, - new NoneCircuitBreakerService(), - () -> UNASSIGNED_SEQ_NO, - () -> RetentionLeases.EMPTY, - primaryTerm::get, - tombstoneDocSupplier() - ); + EngineConfig brokenConfig = new EngineConfig.Builder().shardId(shardId) + .threadPool(threadPool) + .indexSettings(config.getIndexSettings()) + .warmer(null) + .store(store) + .mergePolicy(newMergePolicy()) + .analyzer(config.getAnalyzer()) + .similarity(config.getSimilarity()) + .codecService(new CodecService(null, logger)) + .eventListener(config.getEventListener()) + .queryCache(IndexSearcher.getDefaultQueryCache()) + .queryCachingPolicy(IndexSearcher.getDefaultQueryCachingPolicy()) + .translogConfig(translogConfig) + .flushMergesAfter(TimeValue.timeValueMinutes(5)) + .externalRefreshListener(config.getExternalRefreshListener()) + .internalRefreshListener(config.getInternalRefreshListener()) + .indexSort(null) + .circuitBreakerService(new NoneCircuitBreakerService()) + .globalCheckpointSupplier(() -> UNASSIGNED_SEQ_NO) + .retentionLeasesSupplier(() -> RetentionLeases.EMPTY) + .primaryTermSupplier(primaryTerm::get) + .tombstoneDocSupplier(tombstoneDocSupplier()) + .build(); expectThrows(EngineCreationFailureException.class, () -> new InternalEngine(brokenConfig)); engine = createEngine(store, primaryTranslogDir); // and recover again! @@ -3740,31 +3739,30 @@ public CustomTranslogDeletionPolicy(IndexSettings indexSettings, Supplier expectThrows(AlreadyClosedException.class, () -> recoverShardFromStore(shard))); diff --git a/server/src/test/java/org/opensearch/index/shard/RefreshListenersTests.java b/server/src/test/java/org/opensearch/index/shard/RefreshListenersTests.java index 62f9be84179ba..066790d223c7f 100644 --- a/server/src/test/java/org/opensearch/index/shard/RefreshListenersTests.java +++ b/server/src/test/java/org/opensearch/index/shard/RefreshListenersTests.java @@ -148,30 +148,27 @@ public void onFailedEngine(String reason, @Nullable Exception e) { primaryTerm ); store.associateIndexWithNewTranslog(translogUUID); - EngineConfig config = new EngineConfig( - shardId, - threadPool, - indexSettings, - null, - store, - newMergePolicy(), - iwc.getAnalyzer(), - iwc.getSimilarity(), - new CodecService(null, logger), - eventListener, - IndexSearcher.getDefaultQueryCache(), - IndexSearcher.getDefaultQueryCachingPolicy(), - translogConfig, - TimeValue.timeValueMinutes(5), - Collections.singletonList(listeners), - Collections.emptyList(), - null, - new NoneCircuitBreakerService(), - () -> SequenceNumbers.NO_OPS_PERFORMED, - () -> RetentionLeases.EMPTY, - () -> primaryTerm, - EngineTestCase.tombstoneDocSupplier() - ); + EngineConfig config = new EngineConfig.Builder().shardId(shardId) + .threadPool(threadPool) + .indexSettings(indexSettings) + .store(store) + .mergePolicy(newMergePolicy()) + .analyzer(iwc.getAnalyzer()) + .similarity(iwc.getSimilarity()) + .codecService(new CodecService(null, logger)) + .eventListener(eventListener) + .queryCache(IndexSearcher.getDefaultQueryCache()) + .queryCachingPolicy(IndexSearcher.getDefaultQueryCachingPolicy()) + .translogConfig(translogConfig) + .flushMergesAfter(TimeValue.timeValueMinutes(5)) + .externalRefreshListener(Collections.singletonList(listeners)) + .internalRefreshListener(Collections.emptyList()) + .circuitBreakerService(new NoneCircuitBreakerService()) + .globalCheckpointSupplier(() -> SequenceNumbers.NO_OPS_PERFORMED) + .retentionLeasesSupplier(() -> RetentionLeases.EMPTY) + .primaryTermSupplier(() -> primaryTerm) + .tombstoneDocSupplier(EngineTestCase.tombstoneDocSupplier()) + .build(); engine = new InternalEngine(config); engine.translogManager().recoverFromTranslog((s) -> 0, engine.getProcessedLocalCheckpoint(), Long.MAX_VALUE); listeners.setCurrentRefreshLocationSupplier(engine.translogManager()::getTranslogLastWriteLocation); diff --git a/server/src/test/java/org/opensearch/indices/IndexingMemoryControllerTests.java b/server/src/test/java/org/opensearch/indices/IndexingMemoryControllerTests.java index c68ad7eaba82e..be9a3b094ad7c 100644 --- a/server/src/test/java/org/opensearch/indices/IndexingMemoryControllerTests.java +++ b/server/src/test/java/org/opensearch/indices/IndexingMemoryControllerTests.java @@ -400,30 +400,29 @@ EngineConfig configWithRefreshListener(EngineConfig config, ReferenceManager.Ref final List internalRefreshListener = new ArrayList<>(config.getInternalRefreshListener()); ; internalRefreshListener.add(listener); - return new EngineConfig( - config.getShardId(), - config.getThreadPool(), - config.getIndexSettings(), - config.getWarmer(), - config.getStore(), - config.getMergePolicy(), - config.getAnalyzer(), - config.getSimilarity(), - new CodecService(null, logger), - config.getEventListener(), - config.getQueryCache(), - config.getQueryCachingPolicy(), - config.getTranslogConfig(), - config.getFlushMergesAfter(), - config.getExternalRefreshListener(), - internalRefreshListener, - config.getIndexSort(), - config.getCircuitBreakerService(), - config.getGlobalCheckpointSupplier(), - config.retentionLeasesSupplier(), - config.getPrimaryTermSupplier(), - config.getTombstoneDocSupplier() - ); + return new EngineConfig.Builder().shardId(config.getShardId()) + .threadPool(config.getThreadPool()) + .indexSettings(config.getIndexSettings()) + .warmer(config.getWarmer()) + .store(config.getStore()) + .mergePolicy(config.getMergePolicy()) + .analyzer(config.getAnalyzer()) + .similarity(config.getSimilarity()) + .codecService(new CodecService(null, logger)) + .eventListener(config.getEventListener()) + .queryCache(config.getQueryCache()) + .queryCachingPolicy(config.getQueryCachingPolicy()) + .translogConfig(config.getTranslogConfig()) + .flushMergesAfter(config.getFlushMergesAfter()) + .externalRefreshListener(config.getExternalRefreshListener()) + .internalRefreshListener(internalRefreshListener) + .indexSort(config.getIndexSort()) + .circuitBreakerService(config.getCircuitBreakerService()) + .globalCheckpointSupplier(config.getGlobalCheckpointSupplier()) + .retentionLeasesSupplier(config.retentionLeasesSupplier()) + .primaryTermSupplier(config.getPrimaryTermSupplier()) + .tombstoneDocSupplier(config.getTombstoneDocSupplier()) + .build(); } ThreadPoolStats.Stats getRefreshThreadPoolStats() { diff --git a/test/framework/src/main/java/org/opensearch/index/engine/EngineTestCase.java b/test/framework/src/main/java/org/opensearch/index/engine/EngineTestCase.java index 3dff21de33ece..7530774e09676 100644 --- a/test/framework/src/main/java/org/opensearch/index/engine/EngineTestCase.java +++ b/test/framework/src/main/java/org/opensearch/index/engine/EngineTestCase.java @@ -247,84 +247,81 @@ public void setUp() throws Exception { } public EngineConfig copy(EngineConfig config, LongSupplier globalCheckpointSupplier) { - return new EngineConfig( - config.getShardId(), - config.getThreadPool(), - config.getIndexSettings(), - config.getWarmer(), - config.getStore(), - config.getMergePolicy(), - config.getAnalyzer(), - config.getSimilarity(), - new CodecService(null, logger), - config.getEventListener(), - config.getQueryCache(), - config.getQueryCachingPolicy(), - config.getTranslogConfig(), - config.getFlushMergesAfter(), - config.getExternalRefreshListener(), - Collections.emptyList(), - config.getIndexSort(), - config.getCircuitBreakerService(), - globalCheckpointSupplier, - config.retentionLeasesSupplier(), - config.getPrimaryTermSupplier(), - tombstoneDocSupplier() - ); + return new EngineConfig.Builder().shardId(config.getShardId()) + .threadPool(config.getThreadPool()) + .indexSettings(config.getIndexSettings()) + .warmer(config.getWarmer()) + .store(config.getStore()) + .mergePolicy(config.getMergePolicy()) + .analyzer(config.getAnalyzer()) + .similarity(config.getSimilarity()) + .codecService(new CodecService(null, logger)) + .eventListener(config.getEventListener()) + .queryCache(config.getQueryCache()) + .queryCachingPolicy(config.getQueryCachingPolicy()) + .translogConfig(config.getTranslogConfig()) + .flushMergesAfter(config.getFlushMergesAfter()) + .externalRefreshListener(config.getExternalRefreshListener()) + .internalRefreshListener(emptyList()) + .indexSort(config.getIndexSort()) + .circuitBreakerService(config.getCircuitBreakerService()) + .globalCheckpointSupplier(globalCheckpointSupplier) + .retentionLeasesSupplier(config.retentionLeasesSupplier()) + .primaryTermSupplier(config.getPrimaryTermSupplier()) + .tombstoneDocSupplier(tombstoneDocSupplier()) + .build(); } public EngineConfig copy(EngineConfig config, Analyzer analyzer) { - return new EngineConfig( - config.getShardId(), - config.getThreadPool(), - config.getIndexSettings(), - config.getWarmer(), - config.getStore(), - config.getMergePolicy(), - analyzer, - config.getSimilarity(), - new CodecService(null, logger), - config.getEventListener(), - config.getQueryCache(), - config.getQueryCachingPolicy(), - config.getTranslogConfig(), - config.getFlushMergesAfter(), - config.getExternalRefreshListener(), - Collections.emptyList(), - config.getIndexSort(), - config.getCircuitBreakerService(), - config.getGlobalCheckpointSupplier(), - config.retentionLeasesSupplier(), - config.getPrimaryTermSupplier(), - config.getTombstoneDocSupplier() - ); + return new EngineConfig.Builder().shardId(config.getShardId()) + .threadPool(config.getThreadPool()) + .indexSettings(config.getIndexSettings()) + .warmer(config.getWarmer()) + .store(config.getStore()) + .mergePolicy(config.getMergePolicy()) + .analyzer(analyzer) + .similarity(config.getSimilarity()) + .codecService(new CodecService(null, logger)) + .eventListener(config.getEventListener()) + .queryCache(config.getQueryCache()) + .queryCachingPolicy(config.getQueryCachingPolicy()) + .translogConfig(config.getTranslogConfig()) + .flushMergesAfter(config.getFlushMergesAfter()) + .externalRefreshListener(config.getExternalRefreshListener()) + .internalRefreshListener(emptyList()) + .indexSort(config.getIndexSort()) + .circuitBreakerService(config.getCircuitBreakerService()) + .globalCheckpointSupplier(config.getGlobalCheckpointSupplier()) + .retentionLeasesSupplier(config.retentionLeasesSupplier()) + .primaryTermSupplier(config.getPrimaryTermSupplier()) + .tombstoneDocSupplier(config.getTombstoneDocSupplier()) + .build(); } public EngineConfig copy(EngineConfig config, MergePolicy mergePolicy) { - return new EngineConfig( - config.getShardId(), - config.getThreadPool(), - config.getIndexSettings(), - config.getWarmer(), - config.getStore(), - mergePolicy, - config.getAnalyzer(), - config.getSimilarity(), - new CodecService(null, logger), - config.getEventListener(), - config.getQueryCache(), - config.getQueryCachingPolicy(), - config.getTranslogConfig(), - config.getFlushMergesAfter(), - config.getExternalRefreshListener(), - Collections.emptyList(), - config.getIndexSort(), - config.getCircuitBreakerService(), - config.getGlobalCheckpointSupplier(), - config.retentionLeasesSupplier(), - config.getPrimaryTermSupplier(), - config.getTombstoneDocSupplier() - ); + return new EngineConfig.Builder().shardId(config.getShardId()) + .threadPool(config.getThreadPool()) + .indexSettings(config.getIndexSettings()) + .warmer(config.getWarmer()) + .store(config.getStore()) + .mergePolicy(mergePolicy) + .analyzer(config.getAnalyzer()) + .similarity(config.getSimilarity()) + .codecService(new CodecService(null, logger)) + .eventListener(config.getEventListener()) + .queryCache(config.getQueryCache()) + .queryCachingPolicy(config.getQueryCachingPolicy()) + .translogConfig(config.getTranslogConfig()) + .flushMergesAfter(config.getFlushMergesAfter()) + .externalRefreshListener(config.getExternalRefreshListener()) + .internalRefreshListener(emptyList()) + .indexSort(config.getIndexSort()) + .circuitBreakerService(config.getCircuitBreakerService()) + .globalCheckpointSupplier(config.getGlobalCheckpointSupplier()) + .retentionLeasesSupplier(config.retentionLeasesSupplier()) + .primaryTermSupplier(config.getPrimaryTermSupplier()) + .tombstoneDocSupplier(config.getTombstoneDocSupplier()) + .build(); } @Override @@ -867,30 +864,29 @@ public EngineConfig config( globalCheckpointSupplier = maybeGlobalCheckpointSupplier; retentionLeasesSupplier = maybeRetentionLeasesSupplier; } - return new EngineConfig( - shardId, - threadPool, - indexSettings, - null, - store, - mergePolicy, - iwc.getAnalyzer(), - iwc.getSimilarity(), - new CodecService(null, logger), - eventListener, - IndexSearcher.getDefaultQueryCache(), - IndexSearcher.getDefaultQueryCachingPolicy(), - translogConfig, - TimeValue.timeValueMinutes(5), - extRefreshListenerList, - intRefreshListenerList, - indexSort, - breakerService, - globalCheckpointSupplier, - retentionLeasesSupplier, - primaryTerm, - tombstoneDocSupplier() - ); + return new EngineConfig.Builder().shardId(shardId) + .threadPool(threadPool) + .indexSettings(indexSettings) + .warmer(null) + .store(store) + .mergePolicy(mergePolicy) + .analyzer(iwc.getAnalyzer()) + .similarity(iwc.getSimilarity()) + .codecService(new CodecService(null, logger)) + .eventListener(eventListener) + .queryCache(IndexSearcher.getDefaultQueryCache()) + .queryCachingPolicy(IndexSearcher.getDefaultQueryCachingPolicy()) + .translogConfig(translogConfig) + .flushMergesAfter(TimeValue.timeValueMinutes(5)) + .externalRefreshListener(extRefreshListenerList) + .internalRefreshListener(intRefreshListenerList) + .indexSort(indexSort) + .circuitBreakerService(breakerService) + .globalCheckpointSupplier(globalCheckpointSupplier) + .retentionLeasesSupplier(retentionLeasesSupplier) + .primaryTermSupplier(primaryTerm) + .tombstoneDocSupplier(tombstoneDocSupplier()) + .build(); } protected EngineConfig config( @@ -907,30 +903,29 @@ protected EngineConfig config( .build() ); TranslogConfig translogConfig = new TranslogConfig(shardId, translogPath, indexSettings, BigArrays.NON_RECYCLING_INSTANCE); - return new EngineConfig( - config.getShardId(), - config.getThreadPool(), - indexSettings, - config.getWarmer(), - store, - config.getMergePolicy(), - config.getAnalyzer(), - config.getSimilarity(), - new CodecService(null, logger), - config.getEventListener(), - config.getQueryCache(), - config.getQueryCachingPolicy(), - translogConfig, - config.getFlushMergesAfter(), - config.getExternalRefreshListener(), - config.getInternalRefreshListener(), - config.getIndexSort(), - config.getCircuitBreakerService(), - config.getGlobalCheckpointSupplier(), - config.retentionLeasesSupplier(), - config.getPrimaryTermSupplier(), - tombstoneDocSupplier - ); + return new EngineConfig.Builder().shardId(config.getShardId()) + .threadPool(config.getThreadPool()) + .indexSettings(indexSettings) + .warmer(config.getWarmer()) + .store(store) + .mergePolicy(config.getMergePolicy()) + .analyzer(config.getAnalyzer()) + .similarity(config.getSimilarity()) + .codecService(new CodecService(null, logger)) + .eventListener(config.getEventListener()) + .queryCache(config.getQueryCache()) + .queryCachingPolicy(config.getQueryCachingPolicy()) + .translogConfig(translogConfig) + .flushMergesAfter(config.getFlushMergesAfter()) + .externalRefreshListener(config.getExternalRefreshListener()) + .internalRefreshListener(config.getInternalRefreshListener()) + .indexSort(config.getIndexSort()) + .circuitBreakerService(config.getCircuitBreakerService()) + .globalCheckpointSupplier(config.getGlobalCheckpointSupplier()) + .retentionLeasesSupplier(config.retentionLeasesSupplier()) + .primaryTermSupplier(config.getPrimaryTermSupplier()) + .tombstoneDocSupplier(tombstoneDocSupplier) + .build(); } protected EngineConfig noOpConfig(IndexSettings indexSettings, Store store, Path translogPath) {