From 6418f89feb55970c04474e3cced6ff1031725e39 Mon Sep 17 00:00:00 2001 From: Nik Everett Date: Fri, 7 Oct 2016 13:51:08 -0400 Subject: [PATCH] Remove NodeServicesProvider Instead provide services where they are needed. The class worked well as a temporary measure to easy removal of guice from the index level but now we can remove it entirely. -1 @Inject annotation --- .../resources/checkstyle_suppressions.xml | 1 - .../metadata/MetaDataCreateIndexService.java | 9 +- .../metadata/MetaDataIndexAliasesService.java | 9 +- .../metadata/MetaDataIndexStateService.java | 7 +- .../MetaDataIndexTemplateService.java | 13 +-- .../metadata/MetaDataMappingService.java | 11 +-- .../MetaDataUpdateSettingsService.java | 9 +- .../org/elasticsearch/gateway/Gateway.java | 8 +- .../elasticsearch/gateway/GatewayService.java | 6 +- .../org/elasticsearch/index/IndexModule.java | 22 +++-- .../org/elasticsearch/index/IndexService.java | 53 +++++++--- .../index/NodeServicesProvider.java | 84 ---------------- .../elasticsearch/indices/IndicesModule.java | 5 - .../elasticsearch/indices/IndicesService.java | 36 ++++--- .../cluster/IndicesClusterStateService.java | 19 ++-- .../java/org/elasticsearch/node/Node.java | 5 +- .../MetaDataIndexTemplateServiceTests.java | 8 +- .../MetaDataCreateIndexServiceTests.java | 13 --- .../MetaDataIndexAliasesServiceTests.java | 2 +- .../gateway/GatewayServiceTests.java | 2 +- .../elasticsearch/index/IndexModuleTests.java | 98 ++++++++----------- ...dicesLifecycleListenerSingleNodeTests.java | 4 +- ...actIndicesClusterStateServiceTestCase.java | 6 +- .../indices/cluster/ClusterStateChanges.java | 12 +-- ...ClusterStateServiceRandomUpdatesTests.java | 2 +- 25 files changed, 170 insertions(+), 274 deletions(-) delete mode 100644 core/src/main/java/org/elasticsearch/index/NodeServicesProvider.java diff --git a/buildSrc/src/main/resources/checkstyle_suppressions.xml b/buildSrc/src/main/resources/checkstyle_suppressions.xml index a995c201c4739..27f192de0b085 100644 --- a/buildSrc/src/main/resources/checkstyle_suppressions.xml +++ b/buildSrc/src/main/resources/checkstyle_suppressions.xml @@ -742,7 +742,6 @@ - diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java index 373c62ab114aa..e7c032a120b94 100644 --- a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java +++ b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java @@ -21,6 +21,7 @@ import com.carrotsearch.hppc.cursors.ObjectCursor; import com.carrotsearch.hppc.cursors.ObjectObjectCursor; + import org.apache.logging.log4j.message.ParameterizedMessage; import org.apache.logging.log4j.util.Supplier; import org.apache.lucene.util.CollectionUtil; @@ -63,7 +64,6 @@ import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexNotFoundException; import org.elasticsearch.index.IndexService; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.index.mapper.DocumentMapper; import org.elasticsearch.index.mapper.MapperParsingException; import org.elasticsearch.index.mapper.MapperService; @@ -109,7 +109,6 @@ public class MetaDataCreateIndexService extends AbstractComponent { private final AllocationService allocationService; private final AliasValidator aliasValidator; private final Environment env; - private final NodeServicesProvider nodeServicesProvider; private final IndexScopedSettings indexScopedSettings; private final ActiveShardsObserver activeShardsObserver; @@ -117,15 +116,13 @@ public class MetaDataCreateIndexService extends AbstractComponent { public MetaDataCreateIndexService(Settings settings, ClusterService clusterService, IndicesService indicesService, AllocationService allocationService, AliasValidator aliasValidator, Environment env, - NodeServicesProvider nodeServicesProvider, IndexScopedSettings indexScopedSettings, - ThreadPool threadPool) { + IndexScopedSettings indexScopedSettings, ThreadPool threadPool) { super(settings); this.clusterService = clusterService; this.indicesService = indicesService; this.allocationService = allocationService; this.aliasValidator = aliasValidator; this.env = env; - this.nodeServicesProvider = nodeServicesProvider; this.indexScopedSettings = indexScopedSettings; this.activeShardsObserver = new ActiveShardsObserver(settings, clusterService, threadPool); } @@ -344,7 +341,7 @@ public ClusterState execute(ClusterState currentState) throws Exception { (tmpImd.getNumberOfReplicas() + 1) + "]"); } // create the index here (on the master) to validate it can be created, as well as adding the mapping - final IndexService indexService = indicesService.createIndex(nodeServicesProvider, tmpImd, Collections.emptyList()); + final IndexService indexService = indicesService.createIndex(tmpImd, Collections.emptyList()); createdIndex = indexService.index(); // now add the mappings MapperService mapperService = indexService.mapperService(); diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexAliasesService.java b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexAliasesService.java index c21454a09a0f0..5b0c5a840616a 100644 --- a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexAliasesService.java +++ b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexAliasesService.java @@ -20,6 +20,7 @@ package org.elasticsearch.cluster.metadata; import com.carrotsearch.hppc.cursors.ObjectCursor; + import org.elasticsearch.ElasticsearchException; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.admin.indices.alias.IndicesAliasesClusterStateUpdateRequest; @@ -36,7 +37,6 @@ import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexNotFoundException; import org.elasticsearch.index.IndexService; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.indices.IndicesService; @@ -62,18 +62,15 @@ public class MetaDataIndexAliasesService extends AbstractComponent { private final AliasValidator aliasValidator; - private final NodeServicesProvider nodeServicesProvider; - private final MetaDataDeleteIndexService deleteIndexService; @Inject public MetaDataIndexAliasesService(Settings settings, ClusterService clusterService, IndicesService indicesService, - AliasValidator aliasValidator, NodeServicesProvider nodeServicesProvider, MetaDataDeleteIndexService deleteIndexService) { + AliasValidator aliasValidator, MetaDataDeleteIndexService deleteIndexService) { super(settings); this.clusterService = clusterService; this.indicesService = indicesService; this.aliasValidator = aliasValidator; - this.nodeServicesProvider = nodeServicesProvider; this.deleteIndexService = deleteIndexService; } @@ -139,7 +136,7 @@ ClusterState innerExecute(ClusterState currentState, Iterable actio if (indexService == null) { // temporarily create the index and add mappings so we can parse the filter try { - indexService = indicesService.createIndex(nodeServicesProvider, index, emptyList()); + indexService = indicesService.createIndex(index, emptyList()); } catch (IOException e) { throw new ElasticsearchException("Failed to create temporary index for parsing the alias", e); } diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexStateService.java b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexStateService.java index fd7c34dbe6c22..689eff0da61f4 100644 --- a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexStateService.java +++ b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexStateService.java @@ -37,7 +37,6 @@ import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.Index; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.indices.IndicesService; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.snapshots.RestoreService; @@ -61,15 +60,13 @@ public class MetaDataIndexStateService extends AbstractComponent { private final AllocationService allocationService; private final MetaDataIndexUpgradeService metaDataIndexUpgradeService; - private final NodeServicesProvider nodeServiceProvider; private final IndicesService indicesService; @Inject public MetaDataIndexStateService(Settings settings, ClusterService clusterService, AllocationService allocationService, MetaDataIndexUpgradeService metaDataIndexUpgradeService, - NodeServicesProvider nodeServicesProvider, IndicesService indicesService) { + IndicesService indicesService) { super(settings); - this.nodeServiceProvider = nodeServicesProvider; this.indicesService = indicesService; this.clusterService = clusterService; this.allocationService = allocationService; @@ -170,7 +167,7 @@ public ClusterState execute(ClusterState currentState) { // We need to check that this index can be upgraded to the current version indexMetaData = metaDataIndexUpgradeService.upgradeIndexMetaData(indexMetaData); try { - indicesService.verifyIndexMetadata(nodeServiceProvider, indexMetaData, indexMetaData); + indicesService.verifyIndexMetadata(indexMetaData, indexMetaData); } catch (Exception e) { throw new ElasticsearchException("Failed to verify index " + indexMetaData.getIndex(), e); } diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexTemplateService.java b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexTemplateService.java index 4ffcf33097fdf..746598826f9ec 100644 --- a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexTemplateService.java +++ b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataIndexTemplateService.java @@ -19,6 +19,7 @@ package org.elasticsearch.cluster.metadata; import com.carrotsearch.hppc.cursors.ObjectCursor; + import org.elasticsearch.Version; import org.elasticsearch.action.admin.indices.alias.Alias; import org.elasticsearch.action.support.master.MasterNodeRequest; @@ -37,7 +38,6 @@ import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexService; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.index.mapper.MapperParsingException; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.indices.IndexTemplateAlreadyExistsException; @@ -63,21 +63,18 @@ public class MetaDataIndexTemplateService extends AbstractComponent { private final AliasValidator aliasValidator; private final IndicesService indicesService; private final MetaDataCreateIndexService metaDataCreateIndexService; - private final NodeServicesProvider nodeServicesProvider; private final IndexScopedSettings indexScopedSettings; @Inject public MetaDataIndexTemplateService(Settings settings, ClusterService clusterService, MetaDataCreateIndexService metaDataCreateIndexService, AliasValidator aliasValidator, IndicesService indicesService, - NodeServicesProvider nodeServicesProvider, IndexScopedSettings indexScopedSettings) { super(settings); this.clusterService = clusterService; this.aliasValidator = aliasValidator; this.indicesService = indicesService; this.metaDataCreateIndexService = metaDataCreateIndexService; - this.nodeServicesProvider = nodeServicesProvider; this.indexScopedSettings = indexScopedSettings; } @@ -167,7 +164,7 @@ public ClusterState execute(ClusterState currentState) throws Exception { throw new IndexTemplateAlreadyExistsException(request.name); } - validateAndAddTemplate(request, templateBuilder, indicesService, nodeServicesProvider); + validateAndAddTemplate(request, templateBuilder, indicesService); for (Alias alias : request.aliases) { AliasMetaData aliasMetaData = AliasMetaData.builder(alias.name()).filter(alias.filter()) @@ -191,8 +188,8 @@ public void clusterStateProcessed(String source, ClusterState oldState, ClusterS }); } - private static void validateAndAddTemplate(final PutRequest request, IndexTemplateMetaData.Builder templateBuilder, IndicesService indicesService, - NodeServicesProvider nodeServicesProvider) throws Exception { + private static void validateAndAddTemplate(final PutRequest request, IndexTemplateMetaData.Builder templateBuilder, + IndicesService indicesService) throws Exception { Index createdIndex = null; final String temporaryIndexName = UUIDs.randomBase64UUID(); try { @@ -207,7 +204,7 @@ private static void validateAndAddTemplate(final PutRequest request, IndexTempla .build(); final IndexMetaData tmpIndexMetadata = IndexMetaData.builder(temporaryIndexName).settings(dummySettings).build(); - IndexService dummyIndexService = indicesService.createIndex(nodeServicesProvider, tmpIndexMetadata, Collections.emptyList()); + IndexService dummyIndexService = indicesService.createIndex(tmpIndexMetadata, Collections.emptyList()); createdIndex = dummyIndexService.index(); templateBuilder.order(request.order); diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataMappingService.java b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataMappingService.java index 8ce58637b1550..1a4aa51c879f3 100644 --- a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataMappingService.java +++ b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataMappingService.java @@ -20,6 +20,7 @@ package org.elasticsearch.cluster.metadata; import com.carrotsearch.hppc.cursors.ObjectCursor; + import org.apache.logging.log4j.message.ParameterizedMessage; import org.apache.logging.log4j.util.Supplier; import org.elasticsearch.action.ActionListener; @@ -41,7 +42,6 @@ import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexService; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.index.mapper.DocumentMapper; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.indices.IndicesService; @@ -65,15 +65,13 @@ public class MetaDataMappingService extends AbstractComponent { final ClusterStateTaskExecutor refreshExecutor = new RefreshTaskExecutor(); final ClusterStateTaskExecutor putMappingExecutor = new PutMappingExecutor(); - private final NodeServicesProvider nodeServicesProvider; @Inject - public MetaDataMappingService(Settings settings, ClusterService clusterService, IndicesService indicesService, NodeServicesProvider nodeServicesProvider) { + public MetaDataMappingService(Settings settings, ClusterService clusterService, IndicesService indicesService) { super(settings); this.clusterService = clusterService; this.indicesService = indicesService; - this.nodeServicesProvider = nodeServicesProvider; } static class RefreshTask { @@ -146,7 +144,7 @@ ClusterState executeRefresh(final ClusterState currentState, final List metaData : indexMetaData.getMappings().values()) { // don't apply the default mapping, it has been applied when the mapping was created @@ -229,8 +227,7 @@ public BatchResult execute(ClusterState cur // if the index does not exists we create it once, add all types to the mapper service and // close it later once we are done with mapping update indicesToClose.add(indexMetaData.getIndex()); - IndexService indexService = indicesService.createIndex(nodeServicesProvider, indexMetaData, - Collections.emptyList()); + IndexService indexService = indicesService.createIndex(indexMetaData, Collections.emptyList()); // add mappings for all types, we need them for cross-type validation for (ObjectCursor mapping : indexMetaData.getMappings().values()) { indexService.mapperService().merge(mapping.value.type(), mapping.value.source(), diff --git a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataUpdateSettingsService.java b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataUpdateSettingsService.java index bd8b09e8e1756..2b93732810698 100644 --- a/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataUpdateSettingsService.java +++ b/core/src/main/java/org/elasticsearch/cluster/metadata/MetaDataUpdateSettingsService.java @@ -43,7 +43,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.index.Index; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.indices.IndicesService; import java.io.IOException; @@ -66,18 +65,16 @@ public class MetaDataUpdateSettingsService extends AbstractComponent implements private final IndexScopedSettings indexScopedSettings; private final IndicesService indicesService; - private final NodeServicesProvider nodeServiceProvider; @Inject public MetaDataUpdateSettingsService(Settings settings, ClusterService clusterService, AllocationService allocationService, - IndexScopedSettings indexScopedSettings, IndicesService indicesService, NodeServicesProvider nodeServicesProvider) { + IndexScopedSettings indexScopedSettings, IndicesService indicesService) { super(settings); this.clusterService = clusterService; this.clusterService.add(this); this.allocationService = allocationService; this.indexScopedSettings = indexScopedSettings; this.indicesService = indicesService; - this.nodeServiceProvider = nodeServicesProvider; } @Override @@ -278,12 +275,12 @@ public ClusterState execute(ClusterState currentState) { for (Index index : openIndices) { final IndexMetaData currentMetaData = currentState.getMetaData().getIndexSafe(index); final IndexMetaData updatedMetaData = updatedState.metaData().getIndexSafe(index); - indicesService.verifyIndexMetadata(nodeServiceProvider, currentMetaData, updatedMetaData); + indicesService.verifyIndexMetadata(currentMetaData, updatedMetaData); } for (Index index : closeIndices) { final IndexMetaData currentMetaData = currentState.getMetaData().getIndexSafe(index); final IndexMetaData updatedMetaData = updatedState.metaData().getIndexSafe(index); - indicesService.verifyIndexMetadata(nodeServiceProvider, currentMetaData, updatedMetaData); + indicesService.verifyIndexMetadata(currentMetaData, updatedMetaData); } } catch (IOException ex) { throw ExceptionsHelper.convertToElastic(ex); diff --git a/core/src/main/java/org/elasticsearch/gateway/Gateway.java b/core/src/main/java/org/elasticsearch/gateway/Gateway.java index 3030632a769c4..c0ac2bb56e020 100644 --- a/core/src/main/java/org/elasticsearch/gateway/Gateway.java +++ b/core/src/main/java/org/elasticsearch/gateway/Gateway.java @@ -21,6 +21,7 @@ import com.carrotsearch.hppc.ObjectFloatHashMap; import com.carrotsearch.hppc.cursors.ObjectCursor; + import org.apache.logging.log4j.message.ParameterizedMessage; import org.elasticsearch.action.FailedNodeException; import org.elasticsearch.cluster.ClusterChangedEvent; @@ -34,7 +35,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.discovery.Discovery; import org.elasticsearch.index.Index; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.indices.IndicesService; import java.util.Arrays; @@ -50,13 +50,11 @@ public class Gateway extends AbstractComponent implements ClusterStateListener { private final Supplier minimumMasterNodesProvider; private final IndicesService indicesService; - private final NodeServicesProvider nodeServicesProvider; public Gateway(Settings settings, ClusterService clusterService, GatewayMetaState metaState, TransportNodesListGatewayMetaState listGatewayMetaState, Discovery discovery, - NodeServicesProvider nodeServicesProvider, IndicesService indicesService) { + IndicesService indicesService) { super(settings); - this.nodeServicesProvider = nodeServicesProvider; this.indicesService = indicesService; this.clusterService = clusterService; this.metaState = metaState; @@ -133,7 +131,7 @@ public void performStateRecovery(final GatewayStateRecoveredListener listener) t try { if (electedIndexMetaData.getState() == IndexMetaData.State.OPEN) { // verify that we can actually create this index - if not we recover it as closed with lots of warn logs - indicesService.verifyIndexMetadata(nodeServicesProvider, electedIndexMetaData, electedIndexMetaData); + indicesService.verifyIndexMetadata(electedIndexMetaData, electedIndexMetaData); } } catch (Exception e) { final Index electedIndex = electedIndexMetaData.getIndex(); diff --git a/core/src/main/java/org/elasticsearch/gateway/GatewayService.java b/core/src/main/java/org/elasticsearch/gateway/GatewayService.java index 856574748db5a..5c45e4de90cdf 100644 --- a/core/src/main/java/org/elasticsearch/gateway/GatewayService.java +++ b/core/src/main/java/org/elasticsearch/gateway/GatewayService.java @@ -20,6 +20,7 @@ package org.elasticsearch.gateway; import com.carrotsearch.hppc.cursors.ObjectCursor; + import org.apache.logging.log4j.message.ParameterizedMessage; import org.apache.logging.log4j.util.Supplier; import org.elasticsearch.cluster.ClusterChangedEvent; @@ -43,7 +44,6 @@ import org.elasticsearch.common.unit.TimeValue; import org.elasticsearch.common.util.concurrent.AbstractRunnable; import org.elasticsearch.discovery.Discovery; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.indices.IndicesService; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.threadpool.ThreadPool; @@ -98,10 +98,10 @@ public class GatewayService extends AbstractLifecycleComponent implements Cluste public GatewayService(Settings settings, AllocationService allocationService, ClusterService clusterService, ThreadPool threadPool, GatewayMetaState metaState, TransportNodesListGatewayMetaState listGatewayMetaState, Discovery discovery, - NodeServicesProvider nodeServicesProvider, IndicesService indicesService) { + IndicesService indicesService) { super(settings); this.gateway = new Gateway(settings, clusterService, metaState, listGatewayMetaState, discovery, - nodeServicesProvider, indicesService); + indicesService); this.allocationService = allocationService; this.clusterService = clusterService; this.threadPool = threadPool; diff --git a/core/src/main/java/org/elasticsearch/index/IndexModule.java b/core/src/main/java/org/elasticsearch/index/IndexModule.java index f6227ca3276fc..eb0acf4185ee8 100644 --- a/core/src/main/java/org/elasticsearch/index/IndexModule.java +++ b/core/src/main/java/org/elasticsearch/index/IndexModule.java @@ -20,15 +20,18 @@ package org.elasticsearch.index; import org.apache.lucene.util.SetOnce; +import org.elasticsearch.client.Client; +import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.Strings; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Setting.Property; import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.util.BigArrays; import org.elasticsearch.env.NodeEnvironment; import org.elasticsearch.index.analysis.AnalysisRegistry; -import org.elasticsearch.index.cache.query.QueryCache; -import org.elasticsearch.index.cache.query.IndexQueryCache; import org.elasticsearch.index.cache.query.DisabledQueryCache; +import org.elasticsearch.index.cache.query.IndexQueryCache; +import org.elasticsearch.index.cache.query.QueryCache; import org.elasticsearch.index.engine.EngineFactory; import org.elasticsearch.index.shard.IndexEventListener; import org.elasticsearch.index.shard.IndexSearcherWrapper; @@ -40,8 +43,12 @@ import org.elasticsearch.index.store.IndexStore; import org.elasticsearch.index.store.IndexStoreConfig; import org.elasticsearch.indices.IndicesQueryCache; +import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache; import org.elasticsearch.indices.mapper.MapperRegistry; +import org.elasticsearch.indices.query.IndicesQueriesRegistry; +import org.elasticsearch.script.ScriptService; +import org.elasticsearch.threadpool.ThreadPool; import java.io.IOException; import java.util.ArrayList; @@ -310,8 +317,10 @@ public interface IndexSearcherWrapperFactory { } public IndexService newIndexService(NodeEnvironment environment, IndexService.ShardStoreDeleter shardStoreDeleter, - NodeServicesProvider servicesProvider, IndicesQueryCache indicesQueryCache, - MapperRegistry mapperRegistry, IndicesFieldDataCache indicesFieldDataCache) throws IOException { + CircuitBreakerService circuitBreakerService, BigArrays bigArrays, ThreadPool threadPool, ScriptService scriptService, + IndicesQueriesRegistry indicesQueriesRegistry, ClusterService clusterService, Client client, + IndicesQueryCache indicesQueryCache, MapperRegistry mapperRegistry, IndicesFieldDataCache indicesFieldDataCache) + throws IOException { final IndexEventListener eventListener = freeze(); IndexSearcherWrapperFactory searcherWrapperFactory = indexSearcherWrapper.get() == null ? (shard) -> null : indexSearcherWrapper.get(); @@ -345,8 +354,9 @@ public IndexService newIndexService(NodeEnvironment environment, IndexService.Sh queryCache = new DisabledQueryCache(indexSettings); } return new IndexService(indexSettings, environment, new SimilarityService(indexSettings, similarities), shardStoreDeleter, - analysisRegistry, engineFactory.get(), servicesProvider, queryCache, store, eventListener, searcherWrapperFactory, - mapperRegistry, indicesFieldDataCache, searchOperationListeners, indexOperationListeners); + analysisRegistry, engineFactory.get(), circuitBreakerService, bigArrays, threadPool, scriptService, indicesQueriesRegistry, + clusterService, client, queryCache, store, eventListener, searcherWrapperFactory, mapperRegistry, indicesFieldDataCache, + searchOperationListeners, indexOperationListeners); } /** diff --git a/core/src/main/java/org/elasticsearch/index/IndexService.java b/core/src/main/java/org/elasticsearch/index/IndexService.java index 3dfd93988e676..8101397a45cda 100644 --- a/core/src/main/java/org/elasticsearch/index/IndexService.java +++ b/core/src/main/java/org/elasticsearch/index/IndexService.java @@ -28,9 +28,11 @@ import org.apache.lucene.store.AlreadyClosedException; import org.apache.lucene.util.Accountable; import org.apache.lucene.util.IOUtils; +import org.elasticsearch.client.Client; import org.elasticsearch.cluster.metadata.AliasMetaData; import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.routing.ShardRouting; +import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.Nullable; import org.elasticsearch.common.collect.ImmutableOpenMap; import org.elasticsearch.common.settings.Settings; @@ -70,9 +72,12 @@ import org.elasticsearch.index.translog.Translog; import org.elasticsearch.indices.AliasFilterParsingException; import org.elasticsearch.indices.InvalidAliasNameException; +import org.elasticsearch.indices.breaker.CircuitBreakerService; import org.elasticsearch.indices.cluster.IndicesClusterStateService; import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache; import org.elasticsearch.indices.mapper.MapperRegistry; +import org.elasticsearch.indices.query.IndicesQueriesRegistry; +import org.elasticsearch.script.ScriptService; import org.elasticsearch.threadpool.ThreadPool; import java.io.Closeable; @@ -103,7 +108,6 @@ public class IndexService extends AbstractIndexComponent implements IndicesClust private final BitsetFilterCache bitsetFilterCache; private final NodeEnvironment nodeEnv; private final ShardStoreDeleter shardStoreDeleter; - private final NodeServicesProvider nodeServicesProvider; private final IndexStore indexStore; private final IndexSearcherWrapper searcherWrapper; private final IndexCache indexCache; @@ -121,13 +125,23 @@ public class IndexService extends AbstractIndexComponent implements IndicesClust private volatile AsyncTranslogFSync fsyncTask; private final ThreadPool threadPool; private final BigArrays bigArrays; + private final ScriptService scriptService; + private final IndicesQueriesRegistry queryRegistry; + private final ClusterService clusterService; + private final Client client; public IndexService(IndexSettings indexSettings, NodeEnvironment nodeEnv, SimilarityService similarityService, ShardStoreDeleter shardStoreDeleter, AnalysisRegistry registry, @Nullable EngineFactory engineFactory, - NodeServicesProvider nodeServicesProvider, + CircuitBreakerService circuitBreakerService, + BigArrays bigArrays, + ThreadPool threadPool, + ScriptService scriptService, + IndicesQueriesRegistry queryRegistry, + ClusterService clusterService, + Client client, QueryCache queryCache, IndexStore indexStore, IndexEventListener eventListener, @@ -142,14 +156,16 @@ public IndexService(IndexSettings indexSettings, NodeEnvironment nodeEnv, this.similarityService = similarityService; this.mapperService = new MapperService(indexSettings, indexAnalyzers, similarityService, mapperRegistry, IndexService.this::newQueryShardContext); - this.indexFieldData = new IndexFieldDataService(indexSettings, indicesFieldDataCache, - nodeServicesProvider.getCircuitBreakerService(), mapperService); + this.indexFieldData = new IndexFieldDataService(indexSettings, indicesFieldDataCache, circuitBreakerService, mapperService); this.shardStoreDeleter = shardStoreDeleter; - this.bigArrays = nodeServicesProvider.getBigArrays(); - this.threadPool = nodeServicesProvider.getThreadPool(); + this.bigArrays = bigArrays; + this.threadPool = threadPool; + this.scriptService = scriptService; + this.queryRegistry = queryRegistry; + this.clusterService = clusterService; + this.client = client; this.eventListener = eventListener; this.nodeEnv = nodeEnv; - this.nodeServicesProvider = nodeServicesProvider; this.indexStore = indexStore; indexFieldData.setListener(new FieldDataCacheListener(this)); this.bitsetFilterCache = new BitsetFilterCache(indexSettings, new BitsetCacheListener(this)); @@ -436,10 +452,6 @@ private void onShardClose(ShardLock lock, boolean ownsShard) { } } - public NodeServicesProvider getIndexServices() { - return nodeServicesProvider; - } - @Override public IndexSettings getIndexSettings() { return indexSettings; @@ -452,9 +464,9 @@ public IndexSettings getIndexSettings() { public QueryShardContext newQueryShardContext(int shardId, IndexReader indexReader, LongSupplier nowInMillis) { return new QueryShardContext( shardId, indexSettings, indexCache.bitsetFilterCache(), indexFieldData, mapperService(), - similarityService(), nodeServicesProvider.getScriptService(), nodeServicesProvider.getIndicesQueriesRegistry(), - nodeServicesProvider.getClient(), indexReader, - nodeServicesProvider.getClusterService().state(), + similarityService(), scriptService, queryRegistry, + client, indexReader, + clusterService.state(), nowInMillis); } @@ -467,14 +479,27 @@ public QueryShardContext newQueryShardContext() { return newQueryShardContext(0, null, threadPool::estimatedTimeInMillis); } + /** + * The {@link ThreadPool} to use for this index. + */ public ThreadPool getThreadPool() { return threadPool; } + /** + * The {@link BigArrays} to use for this index. + */ public BigArrays getBigArrays() { return bigArrays; } + /** + * The {@link ScriptService} to use for this index. + */ + public ScriptService getScriptService() { + return scriptService; + } + List getIndexOperationListeners() { // pkg private for testing return indexingOperationListeners; } diff --git a/core/src/main/java/org/elasticsearch/index/NodeServicesProvider.java b/core/src/main/java/org/elasticsearch/index/NodeServicesProvider.java deleted file mode 100644 index 866c938c0f5c1..0000000000000 --- a/core/src/main/java/org/elasticsearch/index/NodeServicesProvider.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.elasticsearch.index; - -import org.elasticsearch.client.Client; -import org.elasticsearch.cluster.service.ClusterService; -import org.elasticsearch.common.inject.Inject; -import org.elasticsearch.common.util.BigArrays; -import org.elasticsearch.indices.breaker.CircuitBreakerService; -import org.elasticsearch.indices.query.IndicesQueriesRegistry; -import org.elasticsearch.script.ScriptService; -import org.elasticsearch.threadpool.ThreadPool; - -/** - * Simple provider class that holds the Index and Node level services used by - * a shard. - * This is just a temporary solution until we cleaned up index creation and removed injectors on that level as well. - */ -public final class NodeServicesProvider { - - private final ThreadPool threadPool; - private final BigArrays bigArrays; - private final Client client; - private final IndicesQueriesRegistry indicesQueriesRegistry; - private final ScriptService scriptService; - private final CircuitBreakerService circuitBreakerService; - private final ClusterService clusterService; - - @Inject - public NodeServicesProvider(ThreadPool threadPool, BigArrays bigArrays, Client client, ScriptService scriptService, - IndicesQueriesRegistry indicesQueriesRegistry, CircuitBreakerService circuitBreakerService, - ClusterService clusterService) { - this.threadPool = threadPool; - this.bigArrays = bigArrays; - this.client = client; - this.indicesQueriesRegistry = indicesQueriesRegistry; - this.scriptService = scriptService; - this.circuitBreakerService = circuitBreakerService; - this.clusterService = clusterService; - } - - public ThreadPool getThreadPool() { - return threadPool; - } - - public BigArrays getBigArrays() { return bigArrays; } - - public Client getClient() { - return client; - } - - public IndicesQueriesRegistry getIndicesQueriesRegistry() { - return indicesQueriesRegistry; - } - - public ScriptService getScriptService() { - return scriptService; - } - - public CircuitBreakerService getCircuitBreakerService() { - return circuitBreakerService; - } - - public ClusterService getClusterService() { - return clusterService; - } -} diff --git a/core/src/main/java/org/elasticsearch/indices/IndicesModule.java b/core/src/main/java/org/elasticsearch/indices/IndicesModule.java index 77a45c7b08a7b..d24d0c9bd2cf2 100644 --- a/core/src/main/java/org/elasticsearch/indices/IndicesModule.java +++ b/core/src/main/java/org/elasticsearch/indices/IndicesModule.java @@ -25,7 +25,6 @@ import org.elasticsearch.common.geo.ShapesAvailability; import org.elasticsearch.common.inject.AbstractModule; import org.elasticsearch.common.io.stream.NamedWriteableRegistry.Entry; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.index.mapper.AllFieldMapper; import org.elasticsearch.index.mapper.BinaryFieldMapper; import org.elasticsearch.index.mapper.BooleanFieldMapper; @@ -58,9 +57,6 @@ import org.elasticsearch.indices.cluster.IndicesClusterStateService; import org.elasticsearch.indices.flush.SyncedFlushService; import org.elasticsearch.indices.mapper.MapperRegistry; -import org.elasticsearch.indices.recovery.PeerRecoverySourceService; -import org.elasticsearch.indices.recovery.PeerRecoveryTargetService; -import org.elasticsearch.indices.recovery.RecoverySettings; import org.elasticsearch.indices.store.IndicesStore; import org.elasticsearch.indices.store.TransportNodesListShardStoreMetaData; import org.elasticsearch.indices.ttl.IndicesTTLService; @@ -170,7 +166,6 @@ protected void configure() { bind(SyncedFlushService.class).asEagerSingleton(); bind(TransportNodesListShardStoreMetaData.class).asEagerSingleton(); bind(IndicesTTLService.class).asEagerSingleton(); - bind(NodeServicesProvider.class).asEagerSingleton(); } /** diff --git a/core/src/main/java/org/elasticsearch/indices/IndicesService.java b/core/src/main/java/org/elasticsearch/indices/IndicesService.java index 4894737360147..202d303ce8b5a 100644 --- a/core/src/main/java/org/elasticsearch/indices/IndicesService.java +++ b/core/src/main/java/org/elasticsearch/indices/IndicesService.java @@ -20,6 +20,7 @@ package org.elasticsearch.indices; import com.carrotsearch.hppc.cursors.ObjectCursor; + import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.message.ParameterizedMessage; import org.apache.logging.log4j.util.Supplier; @@ -35,6 +36,7 @@ import org.elasticsearch.action.admin.indices.stats.ShardStats; import org.elasticsearch.action.fieldstats.FieldStats; import org.elasticsearch.action.search.SearchType; +import org.elasticsearch.client.Client; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; @@ -59,6 +61,7 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.unit.ByteSizeValue; import org.elasticsearch.common.unit.TimeValue; +import org.elasticsearch.common.util.BigArrays; import org.elasticsearch.common.util.Callback; import org.elasticsearch.common.util.concurrent.EsExecutors; import org.elasticsearch.common.util.iterable.Iterables; @@ -72,7 +75,6 @@ import org.elasticsearch.index.IndexNotFoundException; import org.elasticsearch.index.IndexService; import org.elasticsearch.index.IndexSettings; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.index.analysis.AnalysisRegistry; import org.elasticsearch.index.cache.request.ShardRequestCache; import org.elasticsearch.index.engine.Engine; @@ -103,6 +105,7 @@ import org.elasticsearch.indices.recovery.RecoveryState; import org.elasticsearch.plugins.PluginsService; import org.elasticsearch.repositories.RepositoriesService; +import org.elasticsearch.script.ScriptService; import org.elasticsearch.search.internal.SearchContext; import org.elasticsearch.search.internal.ShardSearchRequest; import org.elasticsearch.search.query.QueryPhase; @@ -113,7 +116,6 @@ import java.io.IOException; import java.nio.file.Files; import java.util.ArrayList; -import java.util.Collections; import java.util.EnumSet; import java.util.HashMap; import java.util.Iterator; @@ -129,6 +131,7 @@ import java.util.function.Predicate; import java.util.stream.Collectors; +import static java.util.Collections.emptyList; import static java.util.Collections.emptyMap; import static java.util.Collections.unmodifiableMap; import static org.elasticsearch.common.collect.MapBuilder.newMapBuilder; @@ -151,6 +154,10 @@ public class IndicesService extends AbstractLifecycleComponent private final CacheCleaner cacheCleaner; private final ThreadPool threadPool; private final CircuitBreakerService circuitBreakerService; + private final BigArrays bigArrays; + private final ScriptService scriptService; + private final ClusterService clusterService; + private final Client client; private volatile Map indices = emptyMap(); private final Map> pendingDeletes = new HashMap<>(); private final AtomicInteger numUncompletedDeletes = new AtomicInteger(); @@ -175,6 +182,7 @@ public IndicesService(Settings settings, PluginsService pluginsService, NodeEnvi IndicesQueriesRegistry indicesQueriesRegistry, IndexNameExpressionResolver indexNameExpressionResolver, MapperRegistry mapperRegistry, NamedWriteableRegistry namedWriteableRegistry, ThreadPool threadPool, IndexScopedSettings indexScopedSettings, CircuitBreakerService circuitBreakerService, + BigArrays bigArrays, ScriptService scriptService, ClusterService clusterService, Client client, MetaStateService metaStateService) { super(settings); this.threadPool = threadPool; @@ -196,6 +204,10 @@ public IndicesService(Settings settings, PluginsService pluginsService, NodeEnvi () -> Iterables.flatten(this).iterator()); this.indexScopeSetting = indexScopedSettings; this.circuitBreakerService = circuitBreakerService; + this.bigArrays = bigArrays; + this.scriptService = scriptService; + this.clusterService = clusterService; + this.client = client; this.indicesFieldDataCache = new IndicesFieldDataCache(settings, new IndexFieldDataCache.Listener() { @Override public void onRemoval(ShardId shardId, String fieldName, boolean wasEvicted, long sizeInBytes) { @@ -353,7 +365,7 @@ public IndexService indexServiceSafe(Index index) { * @throws IndexAlreadyExistsException if the index already exists. */ @Override - public synchronized IndexService createIndex(final NodeServicesProvider nodeServicesProvider, IndexMetaData indexMetaData, List builtInListeners) throws IOException { + public synchronized IndexService createIndex(IndexMetaData indexMetaData, List builtInListeners) throws IOException { ensureChangesAllowed(); if (indexMetaData.getIndexUUID().equals(IndexMetaData.INDEX_UUID_NA_VALUE)) { throw new IllegalArgumentException("index must have a real UUID found value: [" + indexMetaData.getIndexUUID() + "]"); @@ -371,7 +383,7 @@ public void onStoreClosed(ShardId shardId) { }; finalListeners.add(onStoreClose); finalListeners.add(oldShardsStats); - final IndexService indexService = createIndexService("create index", nodeServicesProvider, indexMetaData, indicesQueryCache, indicesFieldDataCache, finalListeners, indexingMemoryController); + final IndexService indexService = createIndexService("create index", indexMetaData, indicesQueryCache, indicesFieldDataCache, finalListeners, indexingMemoryController); boolean success = false; try { indexService.getIndexEventListener().afterIndexCreated(indexService); @@ -388,9 +400,8 @@ public void onStoreClosed(ShardId shardId) { /** * This creates a new IndexService without registering it */ - private synchronized IndexService createIndexService(final String reason, final NodeServicesProvider nodeServicesProvider, IndexMetaData indexMetaData, IndicesQueryCache indicesQueryCache, IndicesFieldDataCache indicesFieldDataCache, List builtInListeners, IndexingOperationListener... indexingOperationListeners) throws IOException { + private synchronized IndexService createIndexService(final String reason, IndexMetaData indexMetaData, IndicesQueryCache indicesQueryCache, IndicesFieldDataCache indicesFieldDataCache, List builtInListeners, IndexingOperationListener... indexingOperationListeners) throws IOException { final Index index = indexMetaData.getIndex(); - final ClusterService clusterService = nodeServicesProvider.getClusterService(); final Predicate indexNameMatcher = (indexExpression) -> indexNameExpressionResolver.matchesIndex(index.getName(), indexExpression, clusterService.state()); final IndexSettings idxSettings = new IndexSettings(indexMetaData, this.settings, indexNameMatcher, indexScopeSetting); logger.debug("creating Index [{}], shards [{}]/[{}{}] - reason [{}]", @@ -407,7 +418,8 @@ private synchronized IndexService createIndexService(final String reason, final for (IndexEventListener listener : builtInListeners) { indexModule.addIndexEventListener(listener); } - return indexModule.newIndexService(nodeEnv, this, nodeServicesProvider, indicesQueryCache, mapperRegistry, indicesFieldDataCache); + return indexModule.newIndexService(nodeEnv, this, circuitBreakerService, bigArrays, threadPool, scriptService, + indicesQueriesRegistry, clusterService, client, indicesQueryCache, mapperRegistry, indicesFieldDataCache); } /** @@ -416,7 +428,7 @@ private synchronized IndexService createIndexService(final String reason, final * This method will throw an exception if the creation or the update fails. * The created {@link IndexService} will not be registered and will be closed immediately. */ - public synchronized void verifyIndexMetadata(final NodeServicesProvider nodeServicesProvider, IndexMetaData metaData, IndexMetaData metaDataUpdate) throws IOException { + public synchronized void verifyIndexMetadata(IndexMetaData metaData, IndexMetaData metaDataUpdate) throws IOException { final List closeables = new ArrayList<>(); try { IndicesFieldDataCache indicesFieldDataCache = new IndicesFieldDataCache(settings, new IndexFieldDataCache.Listener() {}); @@ -424,8 +436,8 @@ public synchronized void verifyIndexMetadata(final NodeServicesProvider nodeServ IndicesQueryCache indicesQueryCache = new IndicesQueryCache(settings); closeables.add(indicesQueryCache); // this will also fail if some plugin fails etc. which is nice since we can verify that early - final IndexService service = createIndexService("metadata verification", nodeServicesProvider, - metaData, indicesQueryCache, indicesFieldDataCache, Collections.emptyList()); + final IndexService service = createIndexService("metadata verification", metaData, indicesQueryCache, indicesFieldDataCache, + emptyList()); closeables.add(() -> service.close("metadata verification", false)); for (ObjectCursor typeMapping : metaData.getMappings().values()) { // don't apply the default mapping, it has been applied when the mapping was created @@ -443,7 +455,7 @@ public synchronized void verifyIndexMetadata(final NodeServicesProvider nodeServ @Override public IndexShard createShard(ShardRouting shardRouting, RecoveryState recoveryState, PeerRecoveryTargetService recoveryTargetService, PeerRecoveryTargetService.RecoveryListener recoveryListener, RepositoriesService repositoriesService, - NodeServicesProvider nodeServicesProvider, Callback onShardFailure) throws IOException { + Callback onShardFailure) throws IOException { ensureChangesAllowed(); IndexService indexService = indexService(shardRouting.index()); IndexShard indexShard = indexService.createShard(shardRouting); @@ -453,7 +465,7 @@ public IndexShard createShard(ShardRouting shardRouting, RecoveryState recoveryS assert recoveryState.getRecoverySource().getType() == RecoverySource.Type.LOCAL_SHARDS: "mapping update consumer only required by local shards recovery"; try { - nodeServicesProvider.getClient().admin().indices().preparePutMapping() + client.admin().indices().preparePutMapping() .setConcreteIndex(shardRouting.index()) // concrete index - no name clash, it uses uuid .setType(type) .setSource(mapping.source().string()) diff --git a/core/src/main/java/org/elasticsearch/indices/cluster/IndicesClusterStateService.java b/core/src/main/java/org/elasticsearch/indices/cluster/IndicesClusterStateService.java index 96f0a98b991ed..bbbcfc96d571b 100644 --- a/core/src/main/java/org/elasticsearch/indices/cluster/IndicesClusterStateService.java +++ b/core/src/main/java/org/elasticsearch/indices/cluster/IndicesClusterStateService.java @@ -53,7 +53,6 @@ import org.elasticsearch.index.IndexService; import org.elasticsearch.index.IndexSettings; import org.elasticsearch.index.IndexShardAlreadyExistsException; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.index.shard.IndexEventListener; import org.elasticsearch.index.shard.IndexShard; import org.elasticsearch.index.shard.IndexShardRelocatedException; @@ -92,7 +91,6 @@ public class IndicesClusterStateService extends AbstractLifecycleComponent imple private final PeerRecoveryTargetService recoveryTargetService; private final ShardStateAction shardStateAction; private final NodeMappingRefreshAction nodeMappingRefreshAction; - private final NodeServicesProvider nodeServicesProvider; private static final ShardStateAction.Listener SHARD_STATE_ACTION_LISTENER = new ShardStateAction.Listener() { }; @@ -115,11 +113,10 @@ public IndicesClusterStateService(Settings settings, IndicesService indicesServi NodeMappingRefreshAction nodeMappingRefreshAction, RepositoriesService repositoriesService, RestoreService restoreService, SearchService searchService, SyncedFlushService syncedFlushService, - PeerRecoverySourceService peerRecoverySourceService, NodeServicesProvider nodeServicesProvider) { + PeerRecoverySourceService peerRecoverySourceService) { this(settings, (AllocatedIndices>) indicesService, clusterService, threadPool, recoveryTargetService, shardStateAction, - nodeMappingRefreshAction, repositoriesService, restoreService, searchService, syncedFlushService, peerRecoverySourceService, - nodeServicesProvider); + nodeMappingRefreshAction, repositoriesService, restoreService, searchService, syncedFlushService, peerRecoverySourceService); } // for tests @@ -131,7 +128,7 @@ public IndicesClusterStateService(Settings settings, IndicesService indicesServi NodeMappingRefreshAction nodeMappingRefreshAction, RepositoriesService repositoriesService, RestoreService restoreService, SearchService searchService, SyncedFlushService syncedFlushService, - PeerRecoverySourceService peerRecoverySourceService, NodeServicesProvider nodeServicesProvider) { + PeerRecoverySourceService peerRecoverySourceService) { super(settings); this.buildInIndexListener = Arrays.asList(peerRecoverySourceService, recoveryTargetService, searchService, syncedFlushService); this.indicesService = indicesService; @@ -143,7 +140,6 @@ public IndicesClusterStateService(Settings settings, IndicesService indicesServi this.restoreService = restoreService; this.repositoriesService = repositoriesService; this.sendRefreshMapping = this.settings.getAsBoolean("indices.cluster.send_refresh_mapping", true); - this.nodeServicesProvider = nodeServicesProvider; } @Override @@ -433,7 +429,7 @@ private void createIndices(final ClusterState state) { AllocatedIndex indexService = null; try { - indexService = indicesService.createIndex(nodeServicesProvider, indexMetaData, buildInIndexListener); + indexService = indicesService.createIndex(indexMetaData, buildInIndexListener); if (indexService.updateMapping(indexMetaData) && sendRefreshMapping) { nodeMappingRefreshAction.nodeMappingRefresh(state.nodes().getMasterNode(), new NodeMappingRefreshAction.NodeMappingRefreshRequest(indexMetaData.getIndex().getName(), @@ -532,7 +528,7 @@ private void createShard(DiscoveryNodes nodes, RoutingTable routingTable, ShardR logger.debug("{} creating shard", shardRouting.shardId()); RecoveryState recoveryState = new RecoveryState(shardRouting, nodes.getLocalNode(), sourceNode); indicesService.createShard(shardRouting, recoveryState, recoveryTargetService, new RecoveryListener(shardRouting), - repositoriesService, nodeServicesProvider, failedShardHandler); + repositoriesService, failedShardHandler); } catch (IndexShardAlreadyExistsException e) { // ignore this, the method call can happen several times logger.debug("Trying to create shard that already exists", e); @@ -767,8 +763,7 @@ public interface AllocatedIndices> * the per-index listeners * @throws IndexAlreadyExistsException if the index already exists. */ - U createIndex(NodeServicesProvider nodeServicesProvider, IndexMetaData indexMetaData, - List builtInIndexListener) throws IOException; + U createIndex(IndexMetaData indexMetaData, List builtInIndexListener) throws IOException; /** * Verify that the contents on disk for the given index is deleted; if not, delete the contents. @@ -815,7 +810,7 @@ U createIndex(NodeServicesProvider nodeServicesProvider, IndexMetaData indexMeta */ T createShard(ShardRouting shardRouting, RecoveryState recoveryState, PeerRecoveryTargetService recoveryTargetService, PeerRecoveryTargetService.RecoveryListener recoveryListener, RepositoriesService repositoriesService, - NodeServicesProvider nodeServicesProvider, Callback onShardFailure) throws IOException; + Callback onShardFailure) throws IOException; /** * Returns shard for the specified id if it exists otherwise returns null. diff --git a/core/src/main/java/org/elasticsearch/node/Node.java b/core/src/main/java/org/elasticsearch/node/Node.java index fff807b53fe16..34eece0e7c9d7 100644 --- a/core/src/main/java/org/elasticsearch/node/Node.java +++ b/core/src/main/java/org/elasticsearch/node/Node.java @@ -360,12 +360,13 @@ protected Node(final Environment environment, Collection .flatMap(Function.identity()).collect(Collectors.toList()); final NamedWriteableRegistry namedWriteableRegistry = new NamedWriteableRegistry(namedWriteables); final MetaStateService metaStateService = new MetaStateService(settings, nodeEnvironment); + client = new NodeClient(settings, threadPool); final IndicesService indicesService = new IndicesService(settings, pluginsService, nodeEnvironment, settingsModule.getClusterSettings(), analysisModule.getAnalysisRegistry(), searchModule.getQueryParserRegistry(), clusterModule.getIndexNameExpressionResolver(), indicesModule.getMapperRegistry(), namedWriteableRegistry, - threadPool, settingsModule.getIndexScopedSettings(), circuitBreakerService, metaStateService); + threadPool, settingsModule.getIndexScopedSettings(), circuitBreakerService, bigArrays, scriptModule.getScriptService(), + clusterService, client, metaStateService); - client = new NodeClient(settings, threadPool); Collection pluginComponents = pluginsService.filterPlugins(Plugin.class).stream() .flatMap(p -> p.createComponents(client, clusterService, threadPool, resourceWatcherService, scriptModule.getScriptService(), searchModule.getSearchRequestParsers()).stream()) diff --git a/core/src/test/java/org/elasticsearch/action/admin/indices/template/put/MetaDataIndexTemplateServiceTests.java b/core/src/test/java/org/elasticsearch/action/admin/indices/template/put/MetaDataIndexTemplateServiceTests.java index 3c89a6ab7442c..f41fc698fc15a 100644 --- a/core/src/test/java/org/elasticsearch/action/admin/indices/template/put/MetaDataIndexTemplateServiceTests.java +++ b/core/src/test/java/org/elasticsearch/action/admin/indices/template/put/MetaDataIndexTemplateServiceTests.java @@ -29,7 +29,6 @@ import org.elasticsearch.common.settings.IndexScopedSettings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.xcontent.XContentFactory; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.index.mapper.MapperParsingException; import org.elasticsearch.indices.IndicesService; import org.elasticsearch.indices.InvalidIndexTemplateException; @@ -165,10 +164,9 @@ private static List putTemplate(PutRequest request) { null, null, null, - null, null, null, null); MetaDataIndexTemplateService service = new MetaDataIndexTemplateService(Settings.EMPTY, null, createIndexService, - new AliasValidator(Settings.EMPTY), null, null, + new AliasValidator(Settings.EMPTY), null, new IndexScopedSettings(Settings.EMPTY, IndexScopedSettings.BUILT_IN_INDEX_SETTINGS)); final List throwables = new ArrayList<>(); @@ -189,7 +187,6 @@ public void onFailure(Exception e) { private List putTemplateDetail(PutRequest request) throws Exception { IndicesService indicesService = getInstanceFromNode(IndicesService.class); ClusterService clusterService = getInstanceFromNode(ClusterService.class); - NodeServicesProvider nodeServicesProvider = getInstanceFromNode(NodeServicesProvider.class); MetaDataCreateIndexService createIndexService = new MetaDataCreateIndexService( Settings.EMPTY, clusterService, @@ -197,11 +194,10 @@ private List putTemplateDetail(PutRequest request) throws Exception { null, null, null, - nodeServicesProvider, null, null); MetaDataIndexTemplateService service = new MetaDataIndexTemplateService( - Settings.EMPTY, clusterService, createIndexService, new AliasValidator(Settings.EMPTY), indicesService, nodeServicesProvider, + Settings.EMPTY, clusterService, createIndexService, new AliasValidator(Settings.EMPTY), indicesService, new IndexScopedSettings(Settings.EMPTY, IndexScopedSettings.BUILT_IN_INDEX_SETTINGS)); final List throwables = new ArrayList<>(); diff --git a/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexServiceTests.java b/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexServiceTests.java index 286520748265b..2b8d86ac132df 100644 --- a/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexServiceTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexServiceTests.java @@ -206,17 +206,4 @@ private void validateIndexName(String indexName, String errorMessage) { .getDefault(Settings.EMPTY)).build())); assertThat(e.getMessage(), endsWith(errorMessage)); } - - private MetaDataCreateIndexService getCreateIndexService() { - return new MetaDataCreateIndexService( - Settings.EMPTY, - null, - null, - null, - null, - null, - null, - null, - null); - } } diff --git a/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataIndexAliasesServiceTests.java b/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataIndexAliasesServiceTests.java index 03f62830ba720..a11c74d657b7f 100644 --- a/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataIndexAliasesServiceTests.java +++ b/core/src/test/java/org/elasticsearch/cluster/metadata/MetaDataIndexAliasesServiceTests.java @@ -41,7 +41,7 @@ public class MetaDataIndexAliasesServiceTests extends ESTestCase { private final AliasValidator aliasValidator = new AliasValidator(Settings.EMPTY); private final MetaDataDeleteIndexService deleteIndexService = mock(MetaDataDeleteIndexService.class); private final MetaDataIndexAliasesService service = new MetaDataIndexAliasesService(Settings.EMPTY, null, null, aliasValidator, - null, deleteIndexService); + deleteIndexService); public MetaDataIndexAliasesServiceTests() { // Mock any deletes so we don't need to worry about how MetaDataDeleteIndexService does its job diff --git a/core/src/test/java/org/elasticsearch/gateway/GatewayServiceTests.java b/core/src/test/java/org/elasticsearch/gateway/GatewayServiceTests.java index d2085ab9147e0..2bec3d5eded89 100644 --- a/core/src/test/java/org/elasticsearch/gateway/GatewayServiceTests.java +++ b/core/src/test/java/org/elasticsearch/gateway/GatewayServiceTests.java @@ -36,7 +36,7 @@ private GatewayService createService(Settings.Builder settings) { new ClusterSettings(Settings.EMPTY, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS), null); return new GatewayService(settings.build(), - null, clusterService, null, null, null, new NoopDiscovery(), null, null); + null, clusterService, null, null, null, new NoopDiscovery(), null); } public void testDefaultRecoverAfterTime() throws IOException { diff --git a/core/src/test/java/org/elasticsearch/index/IndexModuleTests.java b/core/src/test/java/org/elasticsearch/index/IndexModuleTests.java index e2d9770e1c2fb..5e9d1ffaf9ec4 100644 --- a/core/src/test/java/org/elasticsearch/index/IndexModuleTests.java +++ b/core/src/test/java/org/elasticsearch/index/IndexModuleTests.java @@ -30,12 +30,11 @@ import org.apache.lucene.search.Weight; import org.apache.lucene.search.similarities.BM25Similarity; import org.apache.lucene.search.similarities.Similarity; +import org.apache.lucene.util.IOUtils; import org.apache.lucene.util.SetOnce.AlreadySetException; import org.elasticsearch.Version; -import org.elasticsearch.client.Client; import org.elasticsearch.cluster.metadata.IndexMetaData; import org.elasticsearch.cluster.service.ClusterService; -import org.elasticsearch.common.io.stream.NamedWriteableRegistry; import org.elasticsearch.common.settings.Setting; import org.elasticsearch.common.settings.Setting.Property; import org.elasticsearch.common.settings.Settings; @@ -68,7 +67,6 @@ import org.elasticsearch.indices.query.IndicesQueriesRegistry; import org.elasticsearch.script.ScriptContextRegistry; import org.elasticsearch.script.ScriptEngineRegistry; -import org.elasticsearch.script.ScriptEngineService; import org.elasticsearch.script.ScriptService; import org.elasticsearch.script.ScriptSettings; import org.elasticsearch.search.internal.SearchContext; @@ -82,12 +80,11 @@ import org.elasticsearch.watcher.ResourceWatcherService; import java.io.IOException; -import java.util.Arrays; import java.util.Collections; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.function.Consumer; +import static java.util.Collections.emptyList; import static java.util.Collections.emptyMap; public class IndexModuleTests extends ESTestCase { @@ -96,7 +93,6 @@ public class IndexModuleTests extends ESTestCase { private IndexSettings indexSettings; private Environment environment; private NodeEnvironment nodeEnvironment; - private NodeServicesProvider nodeServicesProvider; private IndicesQueryCache indicesQueryCache; private IndexService.ShardStoreDeleter deleter = new IndexService.ShardStoreDeleter() { @@ -110,30 +106,32 @@ public void addPendingDelete(ShardId shardId, IndexSettings indexSettings) { private final IndexFieldDataCache.Listener listener = new IndexFieldDataCache.Listener() {}; private MapperRegistry mapperRegistry; - - static NodeServicesProvider newNodeServiceProvider(Settings settings, Environment environment, Client client, ScriptEngineService... scriptEngineServices) throws IOException { - // TODO this can be used in other place too - lets first refactor the IndicesQueriesRegistry - ThreadPool threadPool = new TestThreadPool("test"); - CircuitBreakerService circuitBreakerService = new NoneCircuitBreakerService(); - BigArrays bigArrays = new BigArrays(settings, circuitBreakerService); - ScriptEngineRegistry scriptEngineRegistry = new ScriptEngineRegistry(Arrays.asList(scriptEngineServices)); - ScriptContextRegistry scriptContextRegistry = new ScriptContextRegistry(Collections.emptyList()); - ScriptSettings scriptSettings = new ScriptSettings(scriptEngineRegistry, scriptContextRegistry); - ScriptService scriptService = new ScriptService(settings, environment, new ResourceWatcherService(settings, threadPool), scriptEngineRegistry, scriptContextRegistry, scriptSettings); - IndicesQueriesRegistry indicesQueriesRegistry = new IndicesQueriesRegistry(); - ClusterService clusterService = ClusterServiceUtils.createClusterService(threadPool); - return new NodeServicesProvider(threadPool, bigArrays, client, scriptService, indicesQueriesRegistry, circuitBreakerService, clusterService); - } + private ThreadPool threadPool; + private CircuitBreakerService circuitBreakerService; + private BigArrays bigArrays; + private ScriptService scriptService; + private IndicesQueriesRegistry indicesQueriesRegistry; + private ClusterService clusterService; @Override public void setUp() throws Exception { super.setUp(); - settings = Settings.builder().put(IndexMetaData.SETTING_VERSION_CREATED, Version.CURRENT).put(Environment.PATH_HOME_SETTING.getKey(), createTempDir().toString()).build(); + settings = Settings.builder().put(IndexMetaData.SETTING_VERSION_CREATED, Version.CURRENT) + .put(Environment.PATH_HOME_SETTING.getKey(), createTempDir().toString()).build(); indicesQueryCache = new IndicesQueryCache(settings); indexSettings = IndexSettingsModule.newIndexSettings("foo", settings); index = indexSettings.getIndex(); environment = new Environment(settings); - nodeServicesProvider = newNodeServiceProvider(settings, environment, null); + threadPool = new TestThreadPool("test"); + circuitBreakerService = new NoneCircuitBreakerService(); + bigArrays = new BigArrays(settings, circuitBreakerService); + ScriptEngineRegistry scriptEngineRegistry = new ScriptEngineRegistry(emptyList()); + ScriptContextRegistry scriptContextRegistry = new ScriptContextRegistry(Collections.emptyList()); + ScriptSettings scriptSettings = new ScriptSettings(scriptEngineRegistry, scriptContextRegistry); + scriptService = new ScriptService(settings, environment, new ResourceWatcherService(settings, threadPool), scriptEngineRegistry, + scriptContextRegistry, scriptSettings); + indicesQueriesRegistry = new IndicesQueriesRegistry(); + clusterService = ClusterServiceUtils.createClusterService(threadPool); nodeEnvironment = new NodeEnvironment(settings, environment); mapperRegistry = new IndicesModule(Collections.emptyList()).getMapperRegistry(); } @@ -141,10 +139,14 @@ public void setUp() throws Exception { @Override public void tearDown() throws Exception { super.tearDown(); - nodeEnvironment.close(); - indicesQueryCache.close(); - nodeServicesProvider.getClusterService().close(); - ThreadPool.terminate(nodeServicesProvider.getThreadPool(), 10, TimeUnit.SECONDS); + IOUtils.close(nodeEnvironment, indicesQueryCache, clusterService); + ThreadPool.terminate(threadPool, 10, TimeUnit.SECONDS); + } + + private IndexService newIndexService(IndexModule module) throws IOException { + return module.newIndexService(nodeEnvironment, deleter, circuitBreakerService, bigArrays, threadPool, scriptService, + indicesQueriesRegistry, clusterService, null, indicesQueryCache, mapperRegistry, + new IndicesFieldDataCache(settings, listener)); } public void testWrapperIsBound() throws IOException { @@ -152,7 +154,7 @@ public void testWrapperIsBound() throws IOException { new AnalysisRegistry(environment, emptyMap(), emptyMap(), emptyMap(), emptyMap())); module.setSearcherWrapper((s) -> new Wrapper()); module.engineFactory.set(new MockEngineFactory(AssertingDirectoryReader.class)); - IndexService indexService = module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, new IndicesFieldDataCache(settings, listener)); + IndexService indexService = newIndexService(module); assertTrue(indexService.getSearcherWrapper() instanceof Wrapper); assertSame(indexService.getEngineFactory(), module.engineFactory.get()); indexService.close("simon says", false); @@ -176,7 +178,7 @@ public void testRegisterIndexStore() throws IOException { } catch (IllegalArgumentException ex) { // fine } - IndexService indexService = module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, new IndicesFieldDataCache(settings, listener)); + IndexService indexService = newIndexService(module); assertTrue(indexService.getIndexStore() instanceof FooStore); indexService.close("simon says", false); @@ -194,8 +196,7 @@ public void beforeIndexDeleted(IndexService indexService) { IndexModule module = new IndexModule(indexSettings, null, new AnalysisRegistry(environment, emptyMap(), emptyMap(), emptyMap(), emptyMap())); module.addIndexEventListener(eventListener); - IndexService indexService = module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, - new IndicesFieldDataCache(settings, this.listener)); + IndexService indexService = newIndexService(module); IndexSettings x = indexService.getIndexSettings(); assertEquals(x.getSettings().getAsMap(), indexSettings.getSettings().getAsMap()); assertEquals(x.getIndex(), index); @@ -220,8 +221,7 @@ public void testListener() throws IOException { } - IndexService indexService = module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, - new IndicesFieldDataCache(settings, listener)); + IndexService indexService = newIndexService(module); assertSame(booleanSetting, indexService.getIndexSettings().getScopedSettings().get(booleanSetting.getKey())); indexService.close("simon says", false); @@ -244,8 +244,7 @@ public Engine.Index preIndex(Engine.Index operation) { expectThrows(IllegalArgumentException.class, () -> module.addIndexOperationListener(null)); - IndexService indexService = module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, - new IndicesFieldDataCache(settings, this.listener)); + IndexService indexService = newIndexService(module); assertEquals(2, indexService.getIndexOperationListeners().size()); assertEquals(IndexingSlowLog.class, indexService.getIndexOperationListeners().get(0).getClass()); assertSame(listener, indexService.getIndexOperationListeners().get(1)); @@ -275,8 +274,7 @@ public void onNewContext(SearchContext context) { expectThrows(IllegalArgumentException.class, () -> module.addSearchOperationListener(null)); - IndexService indexService = module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, - new IndicesFieldDataCache(settings, this.listener)); + IndexService indexService = newIndexService(module); assertEquals(2, indexService.getSearchOperationListener().size()); assertEquals(SearchSlowLog.class, indexService.getSearchOperationListener().get(0).getClass()); assertSame(listener, indexService.getSearchOperationListener().get(1)); @@ -309,8 +307,7 @@ public Similarity get() { } }); - IndexService indexService = module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, - new IndicesFieldDataCache(settings, listener)); + IndexService indexService = newIndexService(module); SimilarityService similarityService = indexService.similarityService(); assertNotNull(similarityService.getSimilarity("my_similarity")); assertTrue(similarityService.getSimilarity("my_similarity").get() instanceof TestSimilarity); @@ -341,12 +338,8 @@ public void testSetupUnknownSimilarity() throws IOException { .build(); IndexModule module = new IndexModule(IndexSettingsModule.newIndexSettings("foo", indexSettings), null, new AnalysisRegistry(environment, emptyMap(), emptyMap(), emptyMap(), emptyMap())); - try { - module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, - new IndicesFieldDataCache(settings, listener)); - } catch (IllegalArgumentException ex) { - assertEquals("Unknown Similarity type [test_similarity] for [my_similarity]", ex.getMessage()); - } + Exception ex = expectThrows(IllegalArgumentException.class, () -> newIndexService(module)); + assertEquals("Unknown Similarity type [test_similarity] for [my_similarity]", ex.getMessage()); } public void testSetupWithoutType() throws IOException { @@ -357,12 +350,8 @@ public void testSetupWithoutType() throws IOException { .build(); IndexModule module = new IndexModule(IndexSettingsModule.newIndexSettings("foo", indexSettings), null, new AnalysisRegistry(environment, emptyMap(), emptyMap(), emptyMap(), emptyMap())); - try { - module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, - new IndicesFieldDataCache(settings, listener)); - } catch (IllegalArgumentException ex) { - assertEquals("Similarity [my_similarity] must have an associated type", ex.getMessage()); - } + Exception ex = expectThrows(IllegalArgumentException.class, () -> newIndexService(module)); + assertEquals("Similarity [my_similarity] must have an associated type", ex.getMessage()); } public void testForceCustomQueryCache() throws IOException { @@ -373,8 +362,7 @@ public void testForceCustomQueryCache() throws IOException { new AnalysisRegistry(environment, emptyMap(), emptyMap(), emptyMap(), emptyMap())); module.forceQueryCacheProvider((a, b) -> new CustomQueryCache()); expectThrows(AlreadySetException.class, () -> module.forceQueryCacheProvider((a, b) -> new CustomQueryCache())); - IndexService indexService = module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, - new IndicesFieldDataCache(settings, listener)); + IndexService indexService = newIndexService(module); assertTrue(indexService.cache().query() instanceof CustomQueryCache); indexService.close("simon says", false); } @@ -385,8 +373,7 @@ public void testDefaultQueryCacheImplIsSelected() throws IOException { .put(IndexMetaData.SETTING_VERSION_CREATED, Version.CURRENT).build(); IndexModule module = new IndexModule(IndexSettingsModule.newIndexSettings("foo", indexSettings), null, new AnalysisRegistry(environment, emptyMap(), emptyMap(), emptyMap(), emptyMap())); - IndexService indexService = module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, - new IndicesFieldDataCache(settings, listener)); + IndexService indexService = newIndexService(module); assertTrue(indexService.cache().query() instanceof IndexQueryCache); indexService.close("simon says", false); } @@ -399,8 +386,7 @@ public void testDisableQueryCacheHasPrecedenceOverForceQueryCache() throws IOExc IndexModule module = new IndexModule(IndexSettingsModule.newIndexSettings("foo", indexSettings), null, new AnalysisRegistry(environment, emptyMap(), emptyMap(), emptyMap(), emptyMap())); module.forceQueryCacheProvider((a, b) -> new CustomQueryCache()); - IndexService indexService = module.newIndexService(nodeEnvironment, deleter, nodeServicesProvider, indicesQueryCache, mapperRegistry, - new IndicesFieldDataCache(settings, listener)); + IndexService indexService = newIndexService(module); assertTrue(indexService.cache().query() instanceof DisabledQueryCache); indexService.close("simon says", false); } diff --git a/core/src/test/java/org/elasticsearch/indices/IndicesLifecycleListenerSingleNodeTests.java b/core/src/test/java/org/elasticsearch/indices/IndicesLifecycleListenerSingleNodeTests.java index c6ab63a5eedf6..ab4670fa603c5 100644 --- a/core/src/test/java/org/elasticsearch/indices/IndicesLifecycleListenerSingleNodeTests.java +++ b/core/src/test/java/org/elasticsearch/indices/IndicesLifecycleListenerSingleNodeTests.java @@ -28,7 +28,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexService; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.index.shard.IndexEventListener; import org.elasticsearch.index.shard.IndexShard; import org.elasticsearch.index.shard.ShardId; @@ -94,8 +93,7 @@ public void afterIndexShardDeleted(ShardId shardId, Settings indexSettings) { }; indicesService.deleteIndex(idx, "simon says"); try { - NodeServicesProvider nodeServicesProvider = getInstanceFromNode(NodeServicesProvider.class); - IndexService index = indicesService.createIndex(nodeServicesProvider, metaData, Arrays.asList(countingListener)); + IndexService index = indicesService.createIndex(metaData, Arrays.asList(countingListener)); idx = index.index(); ShardRouting newRouting = shardRouting; String nodeId = newRouting.currentNodeId(); diff --git a/core/src/test/java/org/elasticsearch/indices/cluster/AbstractIndicesClusterStateServiceTestCase.java b/core/src/test/java/org/elasticsearch/indices/cluster/AbstractIndicesClusterStateServiceTestCase.java index 19b55e2c77380..427feaf73e1ab 100644 --- a/core/src/test/java/org/elasticsearch/indices/cluster/AbstractIndicesClusterStateServiceTestCase.java +++ b/core/src/test/java/org/elasticsearch/indices/cluster/AbstractIndicesClusterStateServiceTestCase.java @@ -30,7 +30,6 @@ import org.elasticsearch.index.Index; import org.elasticsearch.index.IndexService; import org.elasticsearch.index.IndexSettings; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.index.shard.IndexEventListener; import org.elasticsearch.index.shard.IndexShard; import org.elasticsearch.index.shard.IndexShardState; @@ -164,7 +163,7 @@ protected class MockIndicesService implements AllocatedIndices indices = emptyMap(); @Override - public synchronized MockIndexService createIndex(NodeServicesProvider nodeServicesProvider, IndexMetaData indexMetaData, + public synchronized MockIndexService createIndex(IndexMetaData indexMetaData, List buildInIndexListener) throws IOException { MockIndexService indexService = new MockIndexService(new IndexSettings(indexMetaData, Settings.EMPTY)); indices = newMapBuilder(indices).put(indexMetaData.getIndexUUID(), indexService).immutableMap(); @@ -212,8 +211,7 @@ public MockIndexShard createShard(ShardRouting shardRouting, RecoveryState recov PeerRecoveryTargetService recoveryTargetService, PeerRecoveryTargetService.RecoveryListener recoveryListener, RepositoriesService repositoriesService, - NodeServicesProvider nodeServicesProvider, Callback onShardFailure) - throws IOException { + Callback onShardFailure) throws IOException { failRandomly(); MockIndexService indexService = indexService(recoveryState.getShardId().getIndex()); MockIndexShard indexShard = indexService.createShard(shardRouting); diff --git a/core/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java b/core/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java index 53f44d7c64d8b..6a8b82ad552e0 100644 --- a/core/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java +++ b/core/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java @@ -66,7 +66,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.index.IndexService; -import org.elasticsearch.index.NodeServicesProvider; import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.shard.IndexEventListener; import org.elasticsearch.indices.IndicesService; @@ -133,10 +132,10 @@ public ClusterStateChanges() { IndicesService indicesService = mock(IndicesService.class); // MetaDataCreateIndexService creates indices using its IndicesService instance to check mappings -> fake it here try { - when(indicesService.createIndex(any(NodeServicesProvider.class), any(IndexMetaData.class), anyList())) + when(indicesService.createIndex(any(IndexMetaData.class), anyList())) .then(invocationOnMock -> { IndexService indexService = mock(IndexService.class); - IndexMetaData indexMetaData = (IndexMetaData)invocationOnMock.getArguments()[1]; + IndexMetaData indexMetaData = (IndexMetaData)invocationOnMock.getArguments()[0]; when(indexService.index()).thenReturn(indexMetaData.getIndex()); MapperService mapperService = mock(MapperService.class); when(indexService.mapperService()).thenReturn(mapperService); @@ -158,15 +157,14 @@ public IndexMetaData upgradeIndexMetaData(IndexMetaData indexMetaData) { return indexMetaData; } }; - NodeServicesProvider nodeServicesProvider = new NodeServicesProvider(threadPool, null, null, null, null, null, clusterService); MetaDataIndexStateService indexStateService = new MetaDataIndexStateService(settings, clusterService, allocationService, - metaDataIndexUpgradeService, nodeServicesProvider, indicesService); + metaDataIndexUpgradeService, indicesService); MetaDataDeleteIndexService deleteIndexService = new MetaDataDeleteIndexService(settings, clusterService, allocationService); MetaDataUpdateSettingsService metaDataUpdateSettingsService = new MetaDataUpdateSettingsService(settings, clusterService, - allocationService, IndexScopedSettings.DEFAULT_SCOPED_SETTINGS, indicesService, nodeServicesProvider); + allocationService, IndexScopedSettings.DEFAULT_SCOPED_SETTINGS, indicesService); MetaDataCreateIndexService createIndexService = new MetaDataCreateIndexService(settings, clusterService, indicesService, allocationService, new AliasValidator(settings), environment, - nodeServicesProvider, IndexScopedSettings.DEFAULT_SCOPED_SETTINGS, threadPool); + IndexScopedSettings.DEFAULT_SCOPED_SETTINGS, threadPool); transportCloseIndexAction = new TransportCloseIndexAction(settings, transportService, clusterService, threadPool, indexStateService, clusterSettings, actionFilters, indexNameExpressionResolver, destructiveOperations); diff --git a/core/src/test/java/org/elasticsearch/indices/cluster/IndicesClusterStateServiceRandomUpdatesTests.java b/core/src/test/java/org/elasticsearch/indices/cluster/IndicesClusterStateServiceRandomUpdatesTests.java index 67a82d93c5422..7a4753725ad30 100644 --- a/core/src/test/java/org/elasticsearch/indices/cluster/IndicesClusterStateServiceRandomUpdatesTests.java +++ b/core/src/test/java/org/elasticsearch/indices/cluster/IndicesClusterStateServiceRandomUpdatesTests.java @@ -376,7 +376,7 @@ private IndicesClusterStateService createIndicesClusterStateService(DiscoveryNod transportService, null, clusterService); final ShardStateAction shardStateAction = mock(ShardStateAction.class); return new IndicesClusterStateService(settings, indicesService, clusterService, - threadPool, recoveryTargetService, shardStateAction, null, repositoriesService, null, null, null, null, null); + threadPool, recoveryTargetService, shardStateAction, null, repositoriesService, null, null, null, null); } private class RecordingIndicesService extends MockIndicesService {