diff --git a/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java b/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java index 40ba9acbc257..aa123ebe2cf2 100644 --- a/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java +++ b/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/PredicateTokenScriptFilterTests.java @@ -16,6 +16,7 @@ import org.elasticsearch.action.ActionType; import org.elasticsearch.client.internal.Client; import org.elasticsearch.client.internal.support.AbstractClient; import org.elasticsearch.cluster.metadata.IndexMetadata; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.env.TestEnvironment; @@ -96,7 +97,7 @@ public class PredicateTokenScriptFilterTests extends ESTokenStreamTestCase { private static class MockClient extends AbstractClient { MockClient(Settings settings, ThreadPool threadPool) { - super(settings, threadPool); + super(settings, threadPool, TestProjectResolvers.alwaysThrow()); } @Override diff --git a/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/ScriptedConditionTokenFilterTests.java b/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/ScriptedConditionTokenFilterTests.java index fb5eee96acff..6bacf96c7177 100644 --- a/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/ScriptedConditionTokenFilterTests.java +++ b/modules/analysis-common/src/test/java/org/elasticsearch/analysis/common/ScriptedConditionTokenFilterTests.java @@ -16,6 +16,7 @@ import org.elasticsearch.action.ActionType; import org.elasticsearch.client.internal.Client; import org.elasticsearch.client.internal.support.AbstractClient; import org.elasticsearch.cluster.metadata.IndexMetadata; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.env.TestEnvironment; @@ -96,7 +97,7 @@ public class ScriptedConditionTokenFilterTests extends ESTokenStreamTestCase { private class MockClient extends AbstractClient { MockClient(Settings settings, ThreadPool threadPool) { - super(settings, threadPool); + super(settings, threadPool, TestProjectResolvers.alwaysThrow()); } @Override diff --git a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/TransportRankEvalActionTests.java b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/TransportRankEvalActionTests.java index faf15c7454ca..2c5106cbd67e 100644 --- a/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/TransportRankEvalActionTests.java +++ b/modules/rank-eval/src/test/java/org/elasticsearch/index/rankeval/TransportRankEvalActionTests.java @@ -16,6 +16,7 @@ import org.elasticsearch.action.search.SearchType; import org.elasticsearch.action.support.ActionFilters; import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.client.internal.node.NodeClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; @@ -68,7 +69,7 @@ public final class TransportRankEvalActionTests extends ESTestCase { ); rankEvalRequest.indicesOptions(expectedIndicesOptions); - NodeClient client = new NodeClient(settings, null) { + NodeClient client = new NodeClient(settings, null, TestProjectResolvers.alwaysThrow()) { @Override public void multiSearch(MultiSearchRequest request, ActionListener listener) { assertEquals(1, request.requests().size()); diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/ClientScrollableHitSourceTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/ClientScrollableHitSourceTests.java index 26922c62d393..510da1d80b42 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/ClientScrollableHitSourceTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/ClientScrollableHitSourceTests.java @@ -21,6 +21,7 @@ import org.elasticsearch.action.search.TransportSearchAction; import org.elasticsearch.action.search.TransportSearchScrollAction; import org.elasticsearch.client.internal.ParentTaskAssigningClient; import org.elasticsearch.client.internal.support.AbstractClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.BackoffPolicy; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.settings.Settings; @@ -214,7 +215,7 @@ public class ClientScrollableHitSourceTests extends ESTestCase { private ExecuteRequest executeRequest; MockClient(ThreadPool threadPool) { - super(Settings.EMPTY, threadPool); + super(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); } @Override diff --git a/server/src/main/java/org/elasticsearch/client/internal/Client.java b/server/src/main/java/org/elasticsearch/client/internal/Client.java index 2d1cbe0cce7f..5903a9c4081a 100644 --- a/server/src/main/java/org/elasticsearch/client/internal/Client.java +++ b/server/src/main/java/org/elasticsearch/client/internal/Client.java @@ -52,6 +52,8 @@ import org.elasticsearch.action.termvectors.TermVectorsResponse; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.action.update.UpdateRequestBuilder; import org.elasticsearch.action.update.UpdateResponse; +import org.elasticsearch.cluster.metadata.ProjectId; +import org.elasticsearch.cluster.project.ProjectResolver; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.core.Nullable; import org.elasticsearch.transport.RemoteClusterService; @@ -399,6 +401,16 @@ public interface Client extends ElasticsearchClient { */ Client filterWithHeader(Map headers); + /** + * Returns a client that executes every request in the context of the given project. + */ + Client projectClient(ProjectId projectId); + + /** + * Returns this client's project resolver. + */ + ProjectResolver projectResolver(); + /** * Returns a client to a remote cluster with the given cluster alias. * diff --git a/server/src/main/java/org/elasticsearch/client/internal/FilterClient.java b/server/src/main/java/org/elasticsearch/client/internal/FilterClient.java index 3588c2065b2b..05330ec743a2 100644 --- a/server/src/main/java/org/elasticsearch/client/internal/FilterClient.java +++ b/server/src/main/java/org/elasticsearch/client/internal/FilterClient.java @@ -13,6 +13,7 @@ import org.elasticsearch.action.ActionRequest; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; import org.elasticsearch.client.internal.support.AbstractClient; +import org.elasticsearch.cluster.project.ProjectResolver; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.transport.RemoteClusterService; @@ -35,15 +36,15 @@ public abstract class FilterClient extends AbstractClient { * @see #in() */ public FilterClient(Client in) { - this(in.settings(), in.threadPool(), in); + this(in.settings(), in.threadPool(), in.projectResolver(), in); } /** * A Constructor that allows to pass settings and threadpool separately. This is useful if the * client is a proxy and not yet fully constructed ie. both dependencies are not available yet. */ - protected FilterClient(Settings settings, ThreadPool threadPool, Client in) { - super(settings, threadPool); + protected FilterClient(Settings settings, ThreadPool threadPool, ProjectResolver projectResolver, Client in) { + super(settings, threadPool, projectResolver); this.in = in; } diff --git a/server/src/main/java/org/elasticsearch/client/internal/node/NodeClient.java b/server/src/main/java/org/elasticsearch/client/internal/node/NodeClient.java index a385d6b5756d..99cd71986c50 100644 --- a/server/src/main/java/org/elasticsearch/client/internal/node/NodeClient.java +++ b/server/src/main/java/org/elasticsearch/client/internal/node/NodeClient.java @@ -18,6 +18,7 @@ import org.elasticsearch.client.internal.Client; import org.elasticsearch.client.internal.RemoteClusterClient; import org.elasticsearch.client.internal.support.AbstractClient; import org.elasticsearch.cluster.node.DiscoveryNode; +import org.elasticsearch.cluster.project.ProjectResolver; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.tasks.Task; import org.elasticsearch.tasks.TaskCancelledException; @@ -48,8 +49,8 @@ public class NodeClient extends AbstractClient { private Transport.Connection localConnection; private RemoteClusterService remoteClusterService; - public NodeClient(Settings settings, ThreadPool threadPool) { - super(settings, threadPool); + public NodeClient(Settings settings, ThreadPool threadPool, ProjectResolver projectResolver) { + super(settings, threadPool, projectResolver); } public void initialize( diff --git a/server/src/main/java/org/elasticsearch/client/internal/support/AbstractClient.java b/server/src/main/java/org/elasticsearch/client/internal/support/AbstractClient.java index 4a9d7f28dd0a..9e2605b6acdf 100644 --- a/server/src/main/java/org/elasticsearch/client/internal/support/AbstractClient.java +++ b/server/src/main/java/org/elasticsearch/client/internal/support/AbstractClient.java @@ -76,6 +76,8 @@ import org.elasticsearch.action.update.UpdateResponse; import org.elasticsearch.client.internal.AdminClient; import org.elasticsearch.client.internal.Client; import org.elasticsearch.client.internal.FilterClient; +import org.elasticsearch.cluster.metadata.ProjectId; +import org.elasticsearch.cluster.project.ProjectResolver; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.core.Nullable; @@ -92,12 +94,14 @@ public abstract class AbstractClient implements Client { protected final Settings settings; private final ThreadPool threadPool; + private final ProjectResolver projectResolver; private final AdminClient admin; @SuppressWarnings("this-escape") - public AbstractClient(Settings settings, ThreadPool threadPool) { + public AbstractClient(Settings settings, ThreadPool threadPool, ProjectResolver projectResolver) { this.settings = settings; this.threadPool = threadPool; + this.projectResolver = projectResolver; this.admin = new AdminClient(this); this.logger = LogManager.getLogger(this.getClass()); } @@ -112,6 +116,11 @@ public abstract class AbstractClient implements Client { return this.threadPool; } + @Override + public ProjectResolver projectResolver() { + return projectResolver; + } + @Override public final AdminClient admin() { return admin; @@ -407,6 +416,32 @@ public abstract class AbstractClient implements Client { }; } + @Override + public Client projectClient(ProjectId projectId) { + // We only take the shortcut when the given project ID matches the "current" project ID. If it doesn't, we'll let #executeOnProject + // take care of error handling. + if (projectResolver.supportsMultipleProjects() == false && projectId.equals(projectResolver.getProjectId())) { + return this; + } + return new FilterClient(this) { + @Override + protected void doExecute( + ActionType action, + Request request, + ActionListener listener + ) { + projectResolver.executeOnProject(projectId, () -> super.doExecute(action, request, listener)); + } + + @Override + public Client projectClient(ProjectId projectId) { + throw new IllegalStateException( + "Unable to create a project client for project [" + projectId + "], nested project client creation is not supported" + ); + } + }; + } + /** * Same as {@link PlainActionFuture} but for use with {@link RefCounted} result types. Unlike {@code PlainActionFuture} this future * acquires a reference to its result. This means that the result reference must be released by a call to {@link RefCounted#decRef()} diff --git a/server/src/main/java/org/elasticsearch/node/NodeConstruction.java b/server/src/main/java/org/elasticsearch/node/NodeConstruction.java index 67be6d5904f7..0c0e260fc16d 100644 --- a/server/src/main/java/org/elasticsearch/node/NodeConstruction.java +++ b/server/src/main/java/org/elasticsearch/node/NodeConstruction.java @@ -287,9 +287,15 @@ class NodeConstruction { // places they shouldn't. Best to explicitly drop them now to protect against such leakage. settingsModule = constructor.validateSettings(initialEnvironment.settings(), settings, threadPool); } + // serverless deployments plug-in the multi-project resolver factory + ProjectResolver projectResolver = constructor.pluginsService.loadSingletonServiceProvider( + ProjectResolverFactory.class, + () -> ProjectResolverFactory.DEFAULT + ).create(); + constructor.modules.bindToInstance(ProjectResolver.class, projectResolver); SearchModule searchModule = constructor.createSearchModule(settingsModule.getSettings(), threadPool, telemetryProvider); - constructor.createClientAndRegistries(settingsModule.getSettings(), threadPool, searchModule); + constructor.createClientAndRegistries(settingsModule.getSettings(), threadPool, searchModule, projectResolver); DocumentParsingProvider documentParsingProvider = constructor.getDocumentParsingProvider(); ScriptService scriptService = constructor.createScriptService(settingsModule, threadPool, serviceProvider); @@ -305,7 +311,8 @@ class NodeConstruction { serviceProvider, forbidPrivateIndexSettings, telemetryProvider, - documentParsingProvider + documentParsingProvider, + projectResolver ); return constructor; @@ -562,8 +569,13 @@ class NodeConstruction { /** * Create various objects that are stored as member variables. This is so they are accessible as soon as possible. */ - private void createClientAndRegistries(Settings settings, ThreadPool threadPool, SearchModule searchModule) { - client = new NodeClient(settings, threadPool); + private void createClientAndRegistries( + Settings settings, + ThreadPool threadPool, + SearchModule searchModule, + ProjectResolver projectResolver + ) { + client = new NodeClient(settings, threadPool, projectResolver); modules.add(b -> { b.bind(Client.class).toInstance(client); b.bind(NodeClient.class).toInstance(client); @@ -664,7 +676,8 @@ class NodeConstruction { NodeServiceProvider serviceProvider, boolean forbidPrivateIndexSettings, TelemetryProvider telemetryProvider, - DocumentParsingProvider documentParsingProvider + DocumentParsingProvider documentParsingProvider, + ProjectResolver projectResolver ) throws IOException { Settings settings = settingsModule.getSettings(); @@ -681,12 +694,6 @@ class NodeConstruction { telemetryProvider.getTracer() ); - // serverless deployments plug-in the multi-project resolver factory - ProjectResolver projectResolver = pluginsService.loadSingletonServiceProvider( - ProjectResolverFactory.class, - () -> ProjectResolverFactory.DEFAULT - ).create(); - modules.bindToInstance(ProjectResolver.class, projectResolver); ClusterService clusterService = createClusterService(settingsModule, threadPool, taskManager); clusterService.addStateApplier(scriptService); diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/TransportGetTaskActionTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/TransportGetTaskActionTests.java index d02caf82d4c4..94140be3074a 100644 --- a/server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/TransportGetTaskActionTests.java +++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/TransportGetTaskActionTests.java @@ -73,7 +73,7 @@ public class TransportGetTaskActionTests extends ESTestCase { var transportService = mock(TransportService.class); var clusterService = mock(ClusterService.class); var nodeId = "node1"; - NodeClient client = new NodeClient(Settings.EMPTY, threadPool) { + NodeClient client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @Override @SuppressWarnings("unchecked") public void doExecute( diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/remote/RemoteClusterNodesActionTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/remote/RemoteClusterNodesActionTests.java index 6a9d6973a004..3c0dd7a644eb 100644 --- a/server/src/test/java/org/elasticsearch/action/admin/cluster/remote/RemoteClusterNodesActionTests.java +++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/remote/RemoteClusterNodesActionTests.java @@ -26,6 +26,7 @@ import org.elasticsearch.client.internal.support.AbstractClient; import org.elasticsearch.cluster.ClusterName; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.node.DiscoveryNodeUtils; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.cluster.version.CompatibilityVersions; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.BoundTransportAddress; @@ -109,7 +110,7 @@ public class RemoteClusterNodesActionTests extends ESTestCase { final RemoteClusterNodesAction.TransportAction action = new RemoteClusterNodesAction.TransportAction( mock(TransportService.class), new ActionFilters(Set.of()), - new AbstractClient(Settings.EMPTY, threadPool) { + new AbstractClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @SuppressWarnings("unchecked") @Override protected void doExecute( @@ -187,7 +188,7 @@ public class RemoteClusterNodesActionTests extends ESTestCase { final RemoteClusterNodesAction.TransportAction action = new RemoteClusterNodesAction.TransportAction( mock(TransportService.class), new ActionFilters(Set.of()), - new AbstractClient(Settings.EMPTY, threadPool) { + new AbstractClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @SuppressWarnings("unchecked") @Override protected void doExecute( diff --git a/server/src/test/java/org/elasticsearch/action/admin/cluster/snapshots/status/TransportSnapshotsStatusActionTests.java b/server/src/test/java/org/elasticsearch/action/admin/cluster/snapshots/status/TransportSnapshotsStatusActionTests.java index 525cb293516a..adaad4eede0d 100644 --- a/server/src/test/java/org/elasticsearch/action/admin/cluster/snapshots/status/TransportSnapshotsStatusActionTests.java +++ b/server/src/test/java/org/elasticsearch/action/admin/cluster/snapshots/status/TransportSnapshotsStatusActionTests.java @@ -16,6 +16,7 @@ import org.elasticsearch.client.internal.node.NodeClient; import org.elasticsearch.cluster.SnapshotsInProgress; import org.elasticsearch.cluster.metadata.ProjectId; import org.elasticsearch.cluster.node.DiscoveryNode; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.common.unit.ByteSizeValue; @@ -65,7 +66,7 @@ public class TransportSnapshotsStatusActionTests extends ESTestCase { clusterService.getClusterSettings(), Set.of() ); - final var nodeClient = new NodeClient(clusterService.getSettings(), threadPool); + final var nodeClient = new NodeClient(clusterService.getSettings(), threadPool, TestProjectResolvers.alwaysThrow()); repositoriesService = new RepositoriesService( clusterService.getSettings(), clusterService, diff --git a/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionIngestTests.java b/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionIngestTests.java index 8081853d86f9..f344f2e1006d 100644 --- a/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionIngestTests.java +++ b/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionIngestTests.java @@ -160,7 +160,7 @@ public class TransportBulkActionIngestTests extends ESTestCase { transportService, TransportBulkActionIngestTests.this.clusterService, ingestService, - new NodeClient(Settings.EMPTY, TransportBulkActionIngestTests.this.threadPool), + new NodeClient(Settings.EMPTY, TransportBulkActionIngestTests.this.threadPool, TestProjectResolvers.alwaysThrow()), new ActionFilters(Collections.emptySet()), TestIndexNameExpressionResolver.newInstance(), new IndexingPressure(SETTINGS), diff --git a/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionTests.java b/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionTests.java index 00f312a0aac8..4e7e80a0b2ff 100644 --- a/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionTests.java +++ b/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionTests.java @@ -43,6 +43,7 @@ import org.elasticsearch.cluster.metadata.Template; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.node.DiscoveryNodeUtils; import org.elasticsearch.cluster.project.ProjectResolver; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.cluster.routing.GlobalRoutingTableTestHelper; import org.elasticsearch.cluster.routing.RoutingTable; import org.elasticsearch.cluster.service.ClusterService; @@ -121,7 +122,7 @@ public class TransportBulkActionTests extends ESTestCase { transportService, TransportBulkActionTests.this.clusterService, null, - new NodeClient(Settings.EMPTY, TransportBulkActionTests.this.threadPool), + new NodeClient(Settings.EMPTY, TransportBulkActionTests.this.threadPool, TestProjectResolvers.alwaysThrow()), new ActionFilters(Collections.emptySet()), new Resolver(), new IndexingPressure(Settings.EMPTY), diff --git a/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionTookTests.java b/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionTookTests.java index 200fa66deba0..0077f739bf7b 100644 --- a/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionTookTests.java +++ b/server/src/test/java/org/elasticsearch/action/bulk/TransportBulkActionTookTests.java @@ -117,7 +117,7 @@ public class TransportBulkActionTookTests extends ESTestCase { IndexNameExpressionResolver resolver = new Resolver(); ActionFilters actionFilters = new ActionFilters(new HashSet<>()); - NodeClient client = new NodeClient(Settings.EMPTY, threadPool) { + NodeClient client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @Override @SuppressWarnings("unchecked") public void doExecute( diff --git a/server/src/test/java/org/elasticsearch/action/get/TransportMultiGetActionTests.java b/server/src/test/java/org/elasticsearch/action/get/TransportMultiGetActionTests.java index ed8718008d71..1d2af9f85a03 100644 --- a/server/src/test/java/org/elasticsearch/action/get/TransportMultiGetActionTests.java +++ b/server/src/test/java/org/elasticsearch/action/get/TransportMultiGetActionTests.java @@ -185,7 +185,7 @@ public class TransportMultiGetActionTests extends ESTestCase { public void testTransportMultiGetAction() { final Task task = createTask(); - final NodeClient client = new NodeClient(Settings.EMPTY, threadPool); + final NodeClient client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); final MultiGetRequestBuilder request = new MultiGetRequestBuilder(client); request.add(new MultiGetRequest.Item("index1", "1")); request.add(new MultiGetRequest.Item("index1", "2")); @@ -219,7 +219,7 @@ public class TransportMultiGetActionTests extends ESTestCase { public void testTransportMultiGetAction_withMissingRouting() { final Task task = createTask(); - final NodeClient client = new NodeClient(Settings.EMPTY, threadPool); + final NodeClient client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); final MultiGetRequestBuilder request = new MultiGetRequestBuilder(client); request.add(new MultiGetRequest.Item("index2", "1").routing("1")); request.add(new MultiGetRequest.Item("index2", "2")); diff --git a/server/src/test/java/org/elasticsearch/action/search/MultiSearchActionTookTests.java b/server/src/test/java/org/elasticsearch/action/search/MultiSearchActionTookTests.java index 7db041f95a4c..954d57a27bb7 100644 --- a/server/src/test/java/org/elasticsearch/action/search/MultiSearchActionTookTests.java +++ b/server/src/test/java/org/elasticsearch/action/search/MultiSearchActionTookTests.java @@ -15,6 +15,7 @@ import org.elasticsearch.client.internal.node.NodeClient; import org.elasticsearch.cluster.ClusterName; import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.node.DiscoveryNodeUtils; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.UUIDs; import org.elasticsearch.common.settings.Settings; @@ -137,7 +138,7 @@ public class MultiSearchActionTookTests extends ESTestCase { final Executor commonExecutor = randomExecutor(threadPool); final Set requests = Collections.newSetFromMap(Collections.synchronizedMap(new IdentityHashMap<>())); - NodeClient client = new NodeClient(settings, threadPool) { + NodeClient client = new NodeClient(settings, threadPool, TestProjectResolvers.alwaysThrow()) { @Override public void search(final SearchRequest request, final ActionListener listener) { requests.add(request); diff --git a/server/src/test/java/org/elasticsearch/action/search/TransportMultiSearchActionTests.java b/server/src/test/java/org/elasticsearch/action/search/TransportMultiSearchActionTests.java index 5a48574b8765..706d3c26fc52 100644 --- a/server/src/test/java/org/elasticsearch/action/search/TransportMultiSearchActionTests.java +++ b/server/src/test/java/org/elasticsearch/action/search/TransportMultiSearchActionTests.java @@ -20,6 +20,7 @@ import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.node.DiscoveryNodeRole; import org.elasticsearch.cluster.node.DiscoveryNodeUtils; import org.elasticsearch.cluster.node.DiscoveryNodes; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.Randomness; import org.elasticsearch.common.UUIDs; @@ -81,7 +82,7 @@ public class TransportMultiSearchActionTests extends ESTestCase { } AtomicInteger counter = new AtomicInteger(0); Task task = multiSearchRequest.createTask(randomLong(), "type", "action", null, Collections.emptyMap()); - NodeClient client = new NodeClient(settings, threadPool) { + NodeClient client = new NodeClient(settings, threadPool, TestProjectResolvers.alwaysThrow()) { @Override public void search(final SearchRequest request, final ActionListener listener) { assertEquals(task.getId(), request.getParentTask().getId()); @@ -150,7 +151,7 @@ public class TransportMultiSearchActionTests extends ESTestCase { final Executor commonExecutor = executorServices.get(0); final Executor rarelyExecutor = executorServices.get(1); final Set requests = Collections.newSetFromMap(Collections.synchronizedMap(new IdentityHashMap<>())); - NodeClient client = new NodeClient(settings, threadPool) { + NodeClient client = new NodeClient(settings, threadPool, TestProjectResolvers.alwaysThrow()) { @Override public void search(final SearchRequest request, final ActionListener listener) { requests.add(request); diff --git a/server/src/test/java/org/elasticsearch/action/search/TransportSearchActionTests.java b/server/src/test/java/org/elasticsearch/action/search/TransportSearchActionTests.java index 3c5dc6b39292..4346351c1576 100644 --- a/server/src/test/java/org/elasticsearch/action/search/TransportSearchActionTests.java +++ b/server/src/test/java/org/elasticsearch/action/search/TransportSearchActionTests.java @@ -1754,7 +1754,7 @@ public class TransportSearchActionTests extends ESTestCase { throw new IllegalArgumentException("Not serializable to " + transportVersion); } })); - NodeClient client = new NodeClient(settings, threadPool); + NodeClient client = new NodeClient(settings, threadPool, TestProjectResolvers.alwaysThrow()); SearchService searchService = mock(SearchService.class); when(searchService.getRewriteContext(any(), any(), any(), anyBoolean())).thenReturn( diff --git a/server/src/test/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsActionTests.java b/server/src/test/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsActionTests.java index 0bd348e0e398..cbf27d0ffdf9 100644 --- a/server/src/test/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsActionTests.java +++ b/server/src/test/java/org/elasticsearch/action/termvectors/TransportMultiTermVectorsActionTests.java @@ -182,7 +182,7 @@ public class TransportMultiTermVectorsActionTests extends ESTestCase { public void testTransportMultiGetAction() { final Task task = createTask(); - final NodeClient client = new NodeClient(Settings.EMPTY, threadPool); + final NodeClient client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); final MultiTermVectorsRequestBuilder request = new MultiTermVectorsRequestBuilder(client); request.add(new TermVectorsRequest("index1", "1")); request.add(new TermVectorsRequest("index2", "2")); @@ -215,7 +215,7 @@ public class TransportMultiTermVectorsActionTests extends ESTestCase { public void testTransportMultiGetAction_withMissingRouting() { final Task task = createTask(); - final NodeClient client = new NodeClient(Settings.EMPTY, threadPool); + final NodeClient client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); final MultiTermVectorsRequestBuilder request = new MultiTermVectorsRequestBuilder(client); request.add(new TermVectorsRequest("index2", "1").routing("1")); request.add(new TermVectorsRequest("index2", "2")); diff --git a/server/src/test/java/org/elasticsearch/client/internal/node/NodeClientHeadersTests.java b/server/src/test/java/org/elasticsearch/client/internal/node/NodeClientHeadersTests.java index 7c25baa0ab7f..4a7e92627b7f 100644 --- a/server/src/test/java/org/elasticsearch/client/internal/node/NodeClientHeadersTests.java +++ b/server/src/test/java/org/elasticsearch/client/internal/node/NodeClientHeadersTests.java @@ -17,6 +17,7 @@ import org.elasticsearch.action.support.ActionFilters; import org.elasticsearch.action.support.TransportAction; import org.elasticsearch.client.internal.AbstractClientHeadersTestCase; import org.elasticsearch.client.internal.Client; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.EsExecutors; import org.elasticsearch.tasks.Task; @@ -41,7 +42,7 @@ public class NodeClientHeadersTests extends AbstractClientHeadersTestCase { TaskManager taskManager = new TaskManager(settings, threadPool, Collections.emptySet()); Map, TransportAction> actions = Stream.of(testedActions) .collect(Collectors.toMap(Function.identity(), a -> new InternalTransportAction(a.name(), taskManager))); - NodeClient client = new NodeClient(settings, threadPool); + NodeClient client = new NodeClient(settings, threadPool, TestProjectResolvers.alwaysThrow()); client.initialize(actions, taskManager, () -> "test", mock(Transport.Connection.class), null); return client; } diff --git a/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java b/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java index 110deb17ee26..19eb662dd0c0 100644 --- a/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java +++ b/server/src/test/java/org/elasticsearch/indices/cluster/ClusterStateChanges.java @@ -263,7 +263,7 @@ public class ClusterStateChanges { return indexMetadata; } }; - NodeClient client = new NodeClient(Settings.EMPTY, threadPool); + NodeClient client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); Map, TransportAction> actions = new HashMap<>(); actions.put( TransportVerifyShardBeforeCloseAction.TYPE, diff --git a/server/src/test/java/org/elasticsearch/repositories/RepositoriesServiceTests.java b/server/src/test/java/org/elasticsearch/repositories/RepositoriesServiceTests.java index 7a179a83af6b..8c4fcd28c988 100644 --- a/server/src/test/java/org/elasticsearch/repositories/RepositoriesServiceTests.java +++ b/server/src/test/java/org/elasticsearch/repositories/RepositoriesServiceTests.java @@ -28,6 +28,7 @@ import org.elasticsearch.cluster.metadata.RepositoryMetadata; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.node.DiscoveryNodeRole; import org.elasticsearch.cluster.node.DiscoveryNodeUtils; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.common.Strings; import org.elasticsearch.common.UUIDs; @@ -95,7 +96,7 @@ public class RepositoriesServiceTests extends ESTestCase { clusterService = ClusterServiceUtils.createClusterService(threadPool); DiscoveryNode localNode = DiscoveryNodeUtils.builder("local").name("local").roles(Set.of(DiscoveryNodeRole.MASTER_ROLE)).build(); - NodeClient client = new NodeClient(Settings.EMPTY, threadPool); + NodeClient client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); var actionFilters = new ActionFilters(Set.of()); client.initialize( Map.of( diff --git a/server/src/test/java/org/elasticsearch/rest/BaseRestHandlerTests.java b/server/src/test/java/org/elasticsearch/rest/BaseRestHandlerTests.java index 9f82911ed121..39cb5fbafab1 100644 --- a/server/src/test/java/org/elasticsearch/rest/BaseRestHandlerTests.java +++ b/server/src/test/java/org/elasticsearch/rest/BaseRestHandlerTests.java @@ -10,6 +10,7 @@ package org.elasticsearch.rest; import org.elasticsearch.client.internal.node.NodeClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.Table; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.settings.Settings; @@ -40,7 +41,7 @@ public class BaseRestHandlerTests extends ESTestCase { public void setUp() throws Exception { super.setUp(); threadPool = new TestThreadPool(this.getClass().getSimpleName() + "ThreadPool"); - mockClient = new NodeClient(Settings.EMPTY, threadPool); + mockClient = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); } @Override diff --git a/server/src/test/java/org/elasticsearch/rest/action/RestCancellableNodeClientTests.java b/server/src/test/java/org/elasticsearch/rest/action/RestCancellableNodeClientTests.java index 00aa44ac73ac..74093ad0bddb 100644 --- a/server/src/test/java/org/elasticsearch/rest/action/RestCancellableNodeClientTests.java +++ b/server/src/test/java/org/elasticsearch/rest/action/RestCancellableNodeClientTests.java @@ -21,6 +21,7 @@ import org.elasticsearch.action.search.TransportSearchAction; import org.elasticsearch.action.support.PlainActionFuture; import org.elasticsearch.action.support.SubscribableListener; import org.elasticsearch.client.internal.node.NodeClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.set.Sets; import org.elasticsearch.http.HttpChannel; @@ -193,7 +194,7 @@ public class RestCancellableNodeClientTests extends ESTestCase { private final boolean timeout; TestClient(Settings settings, ThreadPool threadPool, boolean timeout) { - super(settings, threadPool); + super(settings, threadPool, TestProjectResolvers.mustExecuteFirst()); this.timeout = timeout; } diff --git a/server/src/test/java/org/elasticsearch/rest/action/admin/indices/RestValidateQueryActionTests.java b/server/src/test/java/org/elasticsearch/rest/action/admin/indices/RestValidateQueryActionTests.java index a564ce8fb5c3..1353d590d0f2 100644 --- a/server/src/test/java/org/elasticsearch/rest/action/admin/indices/RestValidateQueryActionTests.java +++ b/server/src/test/java/org/elasticsearch/rest/action/admin/indices/RestValidateQueryActionTests.java @@ -16,6 +16,7 @@ import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryAction import org.elasticsearch.action.support.ActionFilters; import org.elasticsearch.action.support.TransportAction; import org.elasticsearch.client.internal.node.NodeClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.EsExecutors; @@ -48,7 +49,7 @@ import static org.mockito.Mockito.mock; public class RestValidateQueryActionTests extends AbstractSearchTestCase { private ThreadPool threadPool = new TestThreadPool(RestValidateQueryActionTests.class.getName()); - private NodeClient client = new NodeClient(Settings.EMPTY, threadPool); + private NodeClient client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); private UsageService usageService = new UsageService(); private RestController controller = new RestController( diff --git a/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java b/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java index b2ddf6370a0f..572c7110beae 100644 --- a/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java +++ b/server/src/test/java/org/elasticsearch/snapshots/SnapshotResiliencyTests.java @@ -2303,7 +2303,7 @@ public class SnapshotResiliencyTests extends ESTestCase { threadPool = deterministicTaskQueue.getThreadPool(runnable -> DeterministicTaskQueue.onNodeLog(node, runnable)); masterService = new FakeThreadPoolMasterService(node.getName(), threadPool, deterministicTaskQueue::scheduleNow); final Settings settings = environment.settings(); - client = new NodeClient(settings, threadPool); + client = new NodeClient(settings, threadPool, TestProjectResolvers.alwaysThrow()); this.usageService = new UsageService(); final ClusterSettings clusterSettings = new ClusterSettings(settings, ClusterSettings.BUILT_IN_CLUSTER_SETTINGS); clusterService = new ClusterService( diff --git a/test/framework/src/main/java/org/elasticsearch/cluster/coordination/AbstractCoordinatorTestCase.java b/test/framework/src/main/java/org/elasticsearch/cluster/coordination/AbstractCoordinatorTestCase.java index 3ad79a1fd079..b8f225aedc0d 100644 --- a/test/framework/src/main/java/org/elasticsearch/cluster/coordination/AbstractCoordinatorTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/cluster/coordination/AbstractCoordinatorTestCase.java @@ -38,6 +38,7 @@ import org.elasticsearch.cluster.metadata.Metadata; import org.elasticsearch.cluster.node.DiscoveryNode; import org.elasticsearch.cluster.node.DiscoveryNodeRole; import org.elasticsearch.cluster.node.DiscoveryNodeUtils; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.cluster.routing.BatchedRerouteService; import org.elasticsearch.cluster.routing.allocation.AllocationService; import org.elasticsearch.cluster.service.ClusterApplierService; @@ -1140,7 +1141,7 @@ public class AbstractCoordinatorTestCase extends ESTestCase { (dn, cs) -> extraJoinValidators.forEach(validator -> validator.accept(dn, cs)) ); final AllocationService allocationService = ESAllocationTestCase.createAllocationService(Settings.EMPTY); - final NodeClient client = new NodeClient(Settings.EMPTY, threadPool); + final NodeClient client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); final var coordinationServices = coordinatorStrategy.getCoordinationServices( threadPool, settings, diff --git a/test/framework/src/main/java/org/elasticsearch/test/client/NoOpClient.java b/test/framework/src/main/java/org/elasticsearch/test/client/NoOpClient.java index 4012da012a66..03bfe2d2189d 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/client/NoOpClient.java +++ b/test/framework/src/main/java/org/elasticsearch/test/client/NoOpClient.java @@ -14,6 +14,7 @@ import org.elasticsearch.action.ActionRequest; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; import org.elasticsearch.client.internal.support.AbstractClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.threadpool.ThreadPool; @@ -26,7 +27,7 @@ import org.elasticsearch.threadpool.ThreadPool; public class NoOpClient extends AbstractClient { public NoOpClient(ThreadPool threadPool) { - super(Settings.EMPTY, threadPool); + super(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); } @Override diff --git a/test/framework/src/main/java/org/elasticsearch/test/client/NoOpNodeClient.java b/test/framework/src/main/java/org/elasticsearch/test/client/NoOpNodeClient.java index 1287893c5470..52ca012138e8 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/client/NoOpNodeClient.java +++ b/test/framework/src/main/java/org/elasticsearch/test/client/NoOpNodeClient.java @@ -16,6 +16,7 @@ import org.elasticsearch.action.ActionType; import org.elasticsearch.action.support.TransportAction; import org.elasticsearch.client.internal.RemoteClusterClient; import org.elasticsearch.client.internal.node.NodeClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.tasks.Task; import org.elasticsearch.tasks.TaskManager; @@ -39,7 +40,7 @@ public class NoOpNodeClient extends NodeClient { private final AtomicLong executionCount = new AtomicLong(0); public NoOpNodeClient(ThreadPool threadPool) { - super(Settings.EMPTY, threadPool); + super(Settings.EMPTY, threadPool, TestProjectResolvers.mustExecuteFirst()); } @Override diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/LifecyclePolicySecurityClient.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/LifecyclePolicySecurityClient.java index 8a64dee53792..7d09a1b51988 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/LifecyclePolicySecurityClient.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/LifecyclePolicySecurityClient.java @@ -33,7 +33,7 @@ public class LifecyclePolicySecurityClient extends AbstractClient { private final String origin; public LifecyclePolicySecurityClient(Client client, String origin, Map headers) { - super(client.settings(), client.threadPool()); + super(client.settings(), client.threadPool(), client.projectResolver()); this.client = client; this.origin = origin; this.headers = headers; diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/termsenum/action/RestTermsEnumActionTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/termsenum/action/RestTermsEnumActionTests.java index e68615b13227..e93a00b3e65f 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/termsenum/action/RestTermsEnumActionTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/termsenum/action/RestTermsEnumActionTests.java @@ -13,6 +13,7 @@ import org.elasticsearch.action.ActionType; import org.elasticsearch.action.support.ActionFilters; import org.elasticsearch.action.support.TransportAction; import org.elasticsearch.client.internal.node.NodeClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.EsExecutors; @@ -48,7 +49,7 @@ import static org.mockito.Mockito.mock; public class RestTermsEnumActionTests extends ESTestCase { private static ThreadPool threadPool = new TestThreadPool(RestTermsEnumActionTests.class.getName()); - private static NodeClient client = new NodeClient(Settings.EMPTY, threadPool); + private static NodeClient client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()); private static UsageService usageService = new UsageService(); private static RestController controller = new RestController( diff --git a/x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/analysis/CancellationTests.java b/x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/analysis/CancellationTests.java index cb0f969216ce..69dbb4e5c322 100644 --- a/x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/analysis/CancellationTests.java +++ b/x-pack/plugin/eql/src/test/java/org/elasticsearch/xpack/eql/analysis/CancellationTests.java @@ -114,6 +114,7 @@ public class CancellationTests extends ESTestCase { countDownLatch.await(); verify(client, times(1)).settings(); verify(client, times(1)).threadPool(); + verify(client, times(1)).projectResolver(); verifyNoMoreInteractions(client); } @@ -175,6 +176,7 @@ public class CancellationTests extends ESTestCase { verify(client).fieldCaps(any(), any()); verify(client, times(1)).settings(); verify(client, times(1)).threadPool(); + verify(client, times(1)).projectResolver(); verifyNoMoreInteractions(client); } @@ -244,6 +246,7 @@ public class CancellationTests extends ESTestCase { verify(client).execute(any(), any(), any()); verify(client, times(1)).settings(); verify(client, times(1)).threadPool(); + verify(client, times(1)).projectResolver(); verifyNoMoreInteractions(client); } diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MlAnomaliesIndexUpdateTests.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MlAnomaliesIndexUpdateTests.java index 0799402b3bad..a1140aff0bde 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MlAnomaliesIndexUpdateTests.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MlAnomaliesIndexUpdateTests.java @@ -160,6 +160,7 @@ public class MlAnomaliesIndexUpdateTests extends ESTestCase { // everything up to date so no action for the client verify(client).settings(); verify(client).threadPool(); + verify(client).projectResolver(); verifyNoMoreInteractions(client); } @@ -179,6 +180,7 @@ public class MlAnomaliesIndexUpdateTests extends ESTestCase { updater.runUpdate(csBuilder.build()); verify(client).settings(); verify(client, times(7)).threadPool(); + verify(client).projectResolver(); verify(client, times(2)).execute(same(TransportIndicesAliasesAction.TYPE), any(), any()); // create rollover alias and update verify(client).execute(same(RolloverAction.INSTANCE), any(), any()); // index rolled over verifyNoMoreInteractions(client); diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MlIndexRolloverTests.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MlIndexRolloverTests.java index 491b20f0a2d3..6a88148d2f70 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MlIndexRolloverTests.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/MlIndexRolloverTests.java @@ -151,6 +151,7 @@ public class MlIndexRolloverTests extends ESTestCase { rollover.runUpdate(csBuilder.build()); verify(client).settings(); verify(client).threadPool(); + verify(client).projectResolver(); verifyNoMoreInteractions(client); } @@ -183,6 +184,7 @@ public class MlIndexRolloverTests extends ESTestCase { // everything up to date so no action for the client verify(client).settings(); verify(client).threadPool(); + verify(client).projectResolver(); verifyNoMoreInteractions(client); } @@ -214,6 +216,7 @@ public class MlIndexRolloverTests extends ESTestCase { rollover.runUpdate(csBuilder.build()); verify(client).settings(); verify(client, times(3)).threadPool(); + verify(client).projectResolver(); verify(client).execute(same(RolloverAction.INSTANCE), any(), any()); // index rolled over verifyNoMoreInteractions(client); } @@ -246,6 +249,7 @@ public class MlIndexRolloverTests extends ESTestCase { rollover.runUpdate(csBuilder.build()); verify(client).settings(); verify(client, times(5)).threadPool(); + verify(client).projectResolver(); verify(client).execute(same(TransportIndicesAliasesAction.TYPE), any(), any()); // alias created verify(client).execute(same(RolloverAction.INSTANCE), any(), any()); // index rolled over verifyNoMoreInteractions(client); diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/dataframe/DataFrameAnalyticsTaskTests.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/dataframe/DataFrameAnalyticsTaskTests.java index 25c5191afc21..72f1837a1258 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/dataframe/DataFrameAnalyticsTaskTests.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/dataframe/DataFrameAnalyticsTaskTests.java @@ -318,6 +318,7 @@ public class DataFrameAnalyticsTaskTests extends ESTestCase { verify(analyticsManager).isNodeShuttingDown(); verify(client, atLeastOnce()).settings(); verify(client, atLeastOnce()).threadPool(); + verify(client, atLeastOnce()).projectResolver(); if (nodeShuttingDown == false) { // Verify progress was persisted diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/job/persistence/JobResultsPersisterTests.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/job/persistence/JobResultsPersisterTests.java index 2190d8af01f4..9171f7316018 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/job/persistence/JobResultsPersisterTests.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/job/persistence/JobResultsPersisterTests.java @@ -234,6 +234,7 @@ public class JobResultsPersisterTests extends ESTestCase { InOrder inOrder = inOrder(client); inOrder.verify(client).settings(); inOrder.verify(client, times(3)).threadPool(); + verify(client).projectResolver(); inOrder.verify(client).execute(eq(TransportBulkAction.TYPE), bulkRequestCaptor.capture(), any()); verifyNoMoreInteractions(client); } @@ -253,6 +254,7 @@ public class JobResultsPersisterTests extends ESTestCase { InOrder inOrder = inOrder(client); inOrder.verify(client).settings(); inOrder.verify(client, times(3)).threadPool(); + verify(client).projectResolver(); inOrder.verify(client).execute(eq(TransportBulkAction.TYPE), bulkRequestCaptor.capture(), any()); verifyNoMoreInteractions(client); @@ -303,6 +305,7 @@ public class JobResultsPersisterTests extends ESTestCase { InOrder inOrder = inOrder(client); inOrder.verify(client).settings(); inOrder.verify(client, times(3)).threadPool(); + verify(client).projectResolver(); inOrder.verify(client).execute(eq(TransportBulkAction.TYPE), bulkRequestCaptor.capture(), any()); verifyNoMoreInteractions(client); diff --git a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/job/retention/EmptyStateIndexRemoverTests.java b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/job/retention/EmptyStateIndexRemoverTests.java index a452c156e77f..bb536f4d6167 100644 --- a/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/job/retention/EmptyStateIndexRemoverTests.java +++ b/x-pack/plugin/ml/src/test/java/org/elasticsearch/xpack/ml/job/retention/EmptyStateIndexRemoverTests.java @@ -68,6 +68,7 @@ public class EmptyStateIndexRemoverTests extends ESTestCase { public void verifyNoOtherInteractionsWithMocks() { verify(client).settings(); verify(client, atLeastOnce()).threadPool(); + verify(client).projectResolver(); verify(listener, Mockito.atLeast(0)).delegateFailureAndWrap(any()); verifyNoMoreInteractions(client, listener); } diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestCreateApiKeyActionTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestCreateApiKeyActionTests.java index 9a05230d82ae..880c14b5fbed 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestCreateApiKeyActionTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestCreateApiKeyActionTests.java @@ -14,6 +14,7 @@ import org.elasticsearch.action.ActionRequest; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; import org.elasticsearch.client.internal.node.NodeClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.settings.SecureString; import org.elasticsearch.common.settings.Settings; @@ -89,7 +90,7 @@ public class RestCreateApiKeyActionTests extends ESTestCase { Instant.now().plus(Duration.ofHours(5)) ); - final var client = new NodeClient(Settings.EMPTY, threadPool) { + final var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @Override public void doExecute( ActionType action, diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestGetApiKeyActionTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestGetApiKeyActionTests.java index d88a217cd094..d258adfff6ef 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestGetApiKeyActionTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestGetApiKeyActionTests.java @@ -15,6 +15,7 @@ import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; import org.elasticsearch.client.internal.node.NodeClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; import org.elasticsearch.license.XPackLicenseState; @@ -101,7 +102,7 @@ public class RestGetApiKeyActionTests extends ESTestCase { final ApiKey apiKey = randomApiKeyInfo(withLimitedBy); final GetApiKeyResponse getApiKeyResponseExpected = new GetApiKeyResponse(List.of(apiKey), profileUids); - final var client = new NodeClient(Settings.EMPTY, threadPool) { + final var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @SuppressWarnings("unchecked") @Override public void doExecute( @@ -167,7 +168,7 @@ public class RestGetApiKeyActionTests extends ESTestCase { }; final ApiKey apiKey1 = randomApiKeyInfo(randomBoolean()); final List profileUids1 = randomSize1ProfileUidsList(); - final var client = new NodeClient(Settings.EMPTY, threadPool) { + final var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @SuppressWarnings("unchecked") @Override public void doExecute( @@ -241,7 +242,7 @@ public class RestGetApiKeyActionTests extends ESTestCase { profileUids2 ); - final var client = new NodeClient(Settings.EMPTY, threadPool) { + final var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @SuppressWarnings("unchecked") @Override public void doExecute( diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestInvalidateApiKeyActionTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestInvalidateApiKeyActionTests.java index ac472378d487..2a597939987d 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestInvalidateApiKeyActionTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestInvalidateApiKeyActionTests.java @@ -15,6 +15,7 @@ import org.elasticsearch.action.ActionRequestValidationException; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; import org.elasticsearch.client.internal.node.NodeClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.env.Environment; @@ -90,7 +91,7 @@ public class RestInvalidateApiKeyActionTests extends ESTestCase { null ); - final var client = new NodeClient(Settings.EMPTY, threadPool) { + final var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @Override @SuppressWarnings("unchecked") public void doExecute( @@ -162,7 +163,7 @@ public class RestInvalidateApiKeyActionTests extends ESTestCase { null ); - final var client = new NodeClient(Settings.EMPTY, threadPool) { + final var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @SuppressWarnings("unchecked") @Override public void doExecute( diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestQueryApiKeyActionTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestQueryApiKeyActionTests.java index d5aa249b1d0f..9ae1d32b9e12 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestQueryApiKeyActionTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/apikey/RestQueryApiKeyActionTests.java @@ -13,6 +13,7 @@ import org.elasticsearch.action.ActionRequest; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; import org.elasticsearch.client.internal.node.NodeClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.settings.Settings; @@ -117,7 +118,7 @@ public class RestQueryApiKeyActionTests extends ESTestCase { } }; - final var client = new NodeClient(Settings.EMPTY, threadPool) { + final var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @SuppressWarnings("unchecked") @Override public void doExecute( @@ -190,7 +191,7 @@ public class RestQueryApiKeyActionTests extends ESTestCase { responseSetOnce.set(restResponse); } }; - final var client = new NodeClient(Settings.EMPTY, threadPool) { + final var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @SuppressWarnings("unchecked") @Override public void doExecute( @@ -237,7 +238,7 @@ public class RestQueryApiKeyActionTests extends ESTestCase { } }; - final var client = new NodeClient(Settings.EMPTY, threadPool) { + final var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @SuppressWarnings("unchecked") @Override public void doExecute( @@ -323,7 +324,7 @@ public class RestQueryApiKeyActionTests extends ESTestCase { profileUids = new ArrayList<>(1); profileUids.add(randomAlphaOfLength(8)); } - var client = new NodeClient(Settings.EMPTY, threadPool) { + var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @Override public void doExecute( ActionType action, diff --git a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/user/RestQueryUserActionTests.java b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/user/RestQueryUserActionTests.java index 4a593eeb24ac..244eb7465f8e 100644 --- a/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/user/RestQueryUserActionTests.java +++ b/x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/rest/action/user/RestQueryUserActionTests.java @@ -13,6 +13,7 @@ import org.elasticsearch.action.ActionRequest; import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionType; import org.elasticsearch.client.internal.node.NodeClient; +import org.elasticsearch.cluster.project.TestProjectResolvers; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.index.query.BoolQueryBuilder; @@ -81,7 +82,7 @@ public class RestQueryUserActionTests extends ESTestCase { }; try (var threadPool = createThreadPool()) { - final var client = new NodeClient(Settings.EMPTY, threadPool) { + final var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @SuppressWarnings("unchecked") @Override public void doExecute( @@ -140,7 +141,7 @@ public class RestQueryUserActionTests extends ESTestCase { }; try (var threadPool = createThreadPool()) { - final var client = new NodeClient(Settings.EMPTY, threadPool) { + final var client = new NodeClient(Settings.EMPTY, threadPool, TestProjectResolvers.alwaysThrow()) { @SuppressWarnings("unchecked") @Override public void doExecute( diff --git a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/analysis/CancellationTests.java b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/analysis/CancellationTests.java index 773bb4584d17..9cc888c7f119 100644 --- a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/analysis/CancellationTests.java +++ b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/analysis/CancellationTests.java @@ -90,6 +90,7 @@ public class CancellationTests extends ESTestCase { countDownLatch.await(); verify(client, times(1)).settings(); verify(client, times(1)).threadPool(); + verify(client, times(1)).projectResolver(); verifyNoMoreInteractions(client); } @@ -144,6 +145,7 @@ public class CancellationTests extends ESTestCase { verify(client, times(1)).fieldCaps(any(), any()); verify(client, times(1)).settings(); verify(client, times(1)).threadPool(); + verify(client, times(1)).projectResolver(); verifyNoMoreInteractions(client); } @@ -237,6 +239,7 @@ public class CancellationTests extends ESTestCase { verify(client, times(1)).execute(eq(TransportClosePointInTimeAction.TYPE), any(), any()); verify(client, times(1)).settings(); verify(client, times(1)).threadPool(); + verify(client, times(1)).projectResolver(); verifyNoMoreInteractions(client); }