Browse Source

Make validate_query project aware (MP-1813)

This updates `TransportValidateQueryAction` to be project aware and
enables the YAML tests
Tim Vernum 10 months ago
parent
commit
a9d4d8a254

+ 8 - 5
server/src/main/java/org/elasticsearch/action/admin/indices/validate/query/TransportValidateQueryAction.java

@@ -30,7 +30,6 @@ import org.elasticsearch.cluster.service.ClusterService;
 import org.elasticsearch.common.ParsingException;
 import org.elasticsearch.common.Randomness;
 import org.elasticsearch.common.io.stream.StreamInput;
-import org.elasticsearch.core.FixForMultiProject;
 import org.elasticsearch.index.IndexNotFoundException;
 import org.elasticsearch.index.query.ParsedQuery;
 import org.elasticsearch.index.query.QueryShardException;
@@ -93,10 +92,11 @@ public class TransportValidateQueryAction extends TransportBroadcastAction<
         request.nowInMillis = System.currentTimeMillis();
         LongSupplier timeProvider = () -> request.nowInMillis;
 
+        final ProjectState project = getProjectState();
         // Indices are resolved twice (they are resolved again later by the base class), but that's ok for this action type
         ResolvedIndices resolvedIndices = ResolvedIndices.resolveWithIndicesRequest(
             request,
-            clusterService.state(),
+            project.metadata(),
             indexNameExpressionResolver,
             remoteClusterService,
             request.nowInMillis
@@ -136,10 +136,13 @@ public class TransportValidateQueryAction extends TransportBroadcastAction<
         }
     }
 
+    private ProjectState getProjectState() {
+        return projectResolver.getProjectState(clusterService.state());
+    }
+
     @Override
     protected ShardValidateQueryRequest newShardRequest(int numShards, ShardRouting shard, ValidateQueryRequest request) {
-        @FixForMultiProject
-        final ProjectState projectState = clusterService.state().projectState();
+        final ProjectState projectState = getProjectState();
         final Set<String> indicesAndAliases = indexNameExpressionResolver.resolveExpressions(projectState.metadata(), request.indices());
         final AliasFilter aliasFilter = searchService.buildAliasFilter(projectState, shard.getIndexName(), indicesAndAliases);
         return new ShardValidateQueryRequest(shard.shardId(), aliasFilter, request);
@@ -159,7 +162,7 @@ public class TransportValidateQueryAction extends TransportBroadcastAction<
             // Random routing to limit request to a single shard
             routing = Integer.toString(Randomness.get().nextInt(1000));
         }
-        ProjectState project = projectResolver.getProjectState(clusterState);
+        ProjectState project = getProjectState();
         Map<String, Set<String>> routingMap = indexNameExpressionResolver.resolveSearchRouting(
             project.metadata(),
             routing,

+ 0 - 1
x-pack/qa/multi-project/core-rest-tests-with-multiple-projects/build.gradle

@@ -84,7 +84,6 @@ tasks.named("yamlRestTest").configure {
     '^indices.split/*/*',
     '^indices.stats/*/*',
     '^indices.update_aliases/*/*',
-    '^indices.validate_query/*/*',
     '^logsdb/*/*',
     '^mget/*/*',
     '^mget/*/*/*',