Skip to content

Commit 70a79f7

Browse files
Correction and refactoring after code review
1 parent f962530 commit 70a79f7

File tree

7 files changed

+55
-107
lines changed

7 files changed

+55
-107
lines changed

modules/reindex/src/main/java/org/opensearch/index/reindex/TransportDeleteByQueryAction.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,18 @@
3333
package org.opensearch.index.reindex;
3434

3535
import org.opensearch.action.search.SearchRequest;
36-
import org.opensearch.action.search.SearchRequestIndicesResolver;
36+
import org.opensearch.action.search.TransportSearchAction;
3737
import org.opensearch.action.support.ActionFilters;
3838
import org.opensearch.action.support.HandledTransportAction;
3939
import org.opensearch.action.support.TransportIndicesResolvingAction;
40-
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
4140
import org.opensearch.cluster.metadata.ResolvedIndices;
4241
import org.opensearch.cluster.service.ClusterService;
4342
import org.opensearch.common.inject.Inject;
4443
import org.opensearch.core.action.ActionListener;
45-
import org.opensearch.core.common.io.stream.NamedWriteableRegistry;
4644
import org.opensearch.core.common.io.stream.Writeable;
4745
import org.opensearch.script.ScriptService;
4846
import org.opensearch.tasks.Task;
4947
import org.opensearch.threadpool.ThreadPool;
50-
import org.opensearch.transport.RemoteClusterService;
5148
import org.opensearch.transport.TransportService;
5249
import org.opensearch.transport.client.Client;
5350
import org.opensearch.transport.client.ParentTaskAssigningClient;
@@ -59,7 +56,7 @@ public class TransportDeleteByQueryAction extends HandledTransportAction<DeleteB
5956
private final Client client;
6057
private final ScriptService scriptService;
6158
private final ClusterService clusterService;
62-
private final SearchRequestIndicesResolver searchRequestIndicesResolver;
59+
private final TransportSearchAction transportSearchAction;
6360

6461
@Inject
6562
public TransportDeleteByQueryAction(
@@ -69,9 +66,7 @@ public TransportDeleteByQueryAction(
6966
TransportService transportService,
7067
ScriptService scriptService,
7168
ClusterService clusterService,
72-
IndexNameExpressionResolver indexNameExpressionResolver,
73-
NamedWriteableRegistry namedWritableRegistry,
74-
RemoteClusterService remoteClusterService) {
69+
TransportSearchAction transportSearchAction) {
7570
super(
7671
DeleteByQueryAction.NAME,
7772
transportService,
@@ -82,7 +77,7 @@ public TransportDeleteByQueryAction(
8277
this.client = client;
8378
this.scriptService = scriptService;
8479
this.clusterService = clusterService;
85-
this.searchRequestIndicesResolver = new SearchRequestIndicesResolver(clusterService, indexNameExpressionResolver, namedWritableRegistry, remoteClusterService);
80+
this.transportSearchAction = transportSearchAction;
8681
}
8782

8883
@Override
@@ -110,6 +105,6 @@ public void doExecute(Task task, DeleteByQueryRequest request, ActionListener<Bu
110105
@Override
111106
public ResolvedIndices resolveIndices(DeleteByQueryRequest request) {
112107
SearchRequest searchRequest = request.getSearchRequest();
113-
return searchRequestIndicesResolver.resolveIndices(searchRequest);
108+
return transportSearchAction.resolveIndices(searchRequest);
114109
}
115110
}

modules/reindex/src/main/java/org/opensearch/index/reindex/TransportUpdateByQueryAction.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,15 @@
3434

3535
import org.apache.logging.log4j.Logger;
3636
import org.opensearch.action.index.IndexRequest;
37-
import org.opensearch.action.search.SearchRequestIndicesResolver;
37+
import org.opensearch.action.search.TransportSearchAction;
3838
import org.opensearch.action.support.ActionFilters;
3939
import org.opensearch.action.support.HandledTransportAction;
4040
import org.opensearch.action.support.TransportIndicesResolvingAction;
4141
import org.opensearch.cluster.ClusterState;
42-
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
4342
import org.opensearch.cluster.metadata.ResolvedIndices;
4443
import org.opensearch.cluster.service.ClusterService;
4544
import org.opensearch.common.inject.Inject;
4645
import org.opensearch.core.action.ActionListener;
47-
import org.opensearch.core.common.io.stream.NamedWriteableRegistry;
4846
import org.opensearch.core.common.io.stream.Writeable;
4947
import org.opensearch.index.mapper.IdFieldMapper;
5048
import org.opensearch.index.mapper.IndexFieldMapper;
@@ -67,7 +65,7 @@ public class TransportUpdateByQueryAction extends HandledTransportAction<UpdateB
6765
private final Client client;
6866
private final ScriptService scriptService;
6967
private final ClusterService clusterService;
70-
private final SearchRequestIndicesResolver searchRequestIndicesResolver;
68+
private final TransportSearchAction transportSearchAction;
7169

7270
@Inject
7371
public TransportUpdateByQueryAction(
@@ -77,8 +75,7 @@ public TransportUpdateByQueryAction(
7775
TransportService transportService,
7876
ScriptService scriptService,
7977
ClusterService clusterService,
80-
IndexNameExpressionResolver indexNameExpressionResolver,
81-
NamedWriteableRegistry namedWriteableRegistry) {
78+
TransportSearchAction transportSearchAction) {
8279
super(
8380
UpdateByQueryAction.NAME,
8481
transportService,
@@ -89,8 +86,7 @@ public TransportUpdateByQueryAction(
8986
this.client = client;
9087
this.scriptService = scriptService;
9188
this.clusterService = clusterService;
92-
this.searchRequestIndicesResolver = new SearchRequestIndicesResolver(clusterService, indexNameExpressionResolver, namedWriteableRegistry,
93-
transportService.getRemoteClusterService());
89+
this.transportSearchAction = transportSearchAction;
9490
}
9591

9692
@Override
@@ -118,7 +114,7 @@ protected void doExecute(Task task, UpdateByQueryRequest request, ActionListener
118114

119115
@Override
120116
public ResolvedIndices resolveIndices(UpdateByQueryRequest request) {
121-
return searchRequestIndicesResolver.resolveIndices(request.getSearchRequest());
117+
return transportSearchAction.resolveIndices(request.getSearchRequest());
122118
}
123119

124120
/**

modules/reindex/src/test/java/org/opensearch/index/reindex/UpdateByQueryWithScriptTests.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ protected TransportUpdateByQueryAction.AsyncIndexBySearchAction action(ScriptSer
8080
transportService,
8181
scriptService,
8282
null,
83-
null,
8483
null);
8584
return new TransportUpdateByQueryAction.AsyncIndexBySearchAction(
8685
task,

server/src/main/java/org/opensearch/action/admin/indices/alias/get/TransportGetAliasesAction.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,6 @@ private static void checkSystemAliasAccess(GetAliasesRequest request, SystemIndi
203203
public ResolvedIndices resolveIndices(GetAliasesRequest request) {
204204
ClusterState state = this.clusterService.state();
205205
try (ThreadContext.StoredContext ignore = threadPool.getThreadContext().newStoredContext(false)) {
206-
// TODO: do we need add also aliases which will be resolved?
207206
return ResolvedIndices.of(indexNameExpressionResolver.concreteIndexNames(state, request));
208207
}
209208
}

server/src/main/java/org/opensearch/action/search/SearchRequestIndicesResolver.java

Lines changed: 0 additions & 80 deletions
This file was deleted.

server/src/main/java/org/opensearch/action/search/TransportSearchAction.java

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,6 @@ public class TransportSearchAction extends HandledTransportAction<SearchRequest,
180180
private final SearchPipelineService searchPipelineService;
181181
private final SearchRequestOperationsCompositeListenerFactory searchRequestOperationsCompositeListenerFactory;
182182
private final Tracer tracer;
183-
private final SearchRequestIndicesResolver searchRequestIndicesResolver;
184183

185184
private final MetricsRegistry metricsRegistry;
186185

@@ -222,7 +221,6 @@ public TransportSearchAction(
222221
this.searchRequestOperationsCompositeListenerFactory = searchRequestOperationsCompositeListenerFactory;
223222
this.tracer = tracer;
224223
this.taskResourceTrackingService = taskResourceTrackingService;
225-
this.searchRequestIndicesResolver = new SearchRequestIndicesResolver(clusterService, indexNameExpressionResolver, namedWriteableRegistry, remoteClusterService);
226224
}
227225

228226
private Map<String, AliasFilter> buildPerIndexAliasFilter(
@@ -506,7 +504,7 @@ private ActionListener<SearchSourceBuilder> buildRewriteListener(
506504
searchRequest.source(source);
507505
}
508506
final ClusterState clusterState = clusterService.state();
509-
final OriginalIndicesAndSearchContextId requestedIndices = searchRequestIndicesResolver.extractRequestedIndices(searchRequest, clusterState);
507+
final OriginalIndicesAndSearchContextId requestedIndices = extractRequestedIndices(searchRequest, clusterState);
510508
final SearchContextId searchContext = requestedIndices.searchContextId;
511509
final Map<String, OriginalIndices> remoteClusterIndices = requestedIndices.remoteClusterIndices;
512510
OriginalIndices localIndices = requestedIndices.localOriginalIndices;
@@ -989,7 +987,40 @@ static List<SearchShardIterator> getRemoteShardsIteratorFromPointInTime(
989987

990988
@Override
991989
public ResolvedIndices resolveIndices(SearchRequest searchRequest) {
992-
return searchRequestIndicesResolver.resolveIndices(searchRequest);
990+
ClusterState clusterState = clusterService.state();
991+
OriginalIndicesAndSearchContextId requestedIndices = extractRequestedIndices(searchRequest, clusterState);
992+
Index[] localConcreteIndices = resolveLocalIndices(
993+
requestedIndices.localOriginalIndices,
994+
clusterState,
995+
new SearchTimeProvider(searchRequest.getOrCreateAbsoluteStartMillis(), System.nanoTime(), System::nanoTime)
996+
);
997+
998+
return ResolvedIndices.of(localConcreteIndices).withRemoteIndices(requestedIndices.remoteClusterIndices);
999+
}
1000+
1001+
private OriginalIndicesAndSearchContextId extractRequestedIndices(SearchRequest searchRequest, ClusterState clusterState) {
1002+
final SearchContextId searchContext;
1003+
final Map<String, OriginalIndices> remoteClusterIndices;
1004+
if (searchRequest.pointInTimeBuilder() != null) {
1005+
searchContext = SearchContextId.decode(namedWriteableRegistry, searchRequest.pointInTimeBuilder().getId());
1006+
remoteClusterIndices = getIndicesFromSearchContexts(searchContext, searchRequest.indicesOptions());
1007+
} else {
1008+
searchContext = null;
1009+
remoteClusterIndices = remoteClusterService.groupIndices(
1010+
searchRequest.indicesOptions(),
1011+
searchRequest.indices(),
1012+
idx -> indexNameExpressionResolver.hasIndexAbstraction(idx, clusterState)
1013+
);
1014+
}
1015+
OriginalIndices localIndices = remoteClusterIndices.remove(RemoteClusterAware.LOCAL_CLUSTER_GROUP_KEY);
1016+
return new OriginalIndicesAndSearchContextId(localIndices, remoteClusterIndices, searchContext);
1017+
}
1018+
1019+
private Index[] resolveLocalIndices(OriginalIndices localIndices, ClusterState clusterState, SearchTimeProvider timeProvider) {
1020+
if (localIndices == null) {
1021+
return Index.EMPTY_ARRAY; // don't search on any local index (happens when only remote indices were specified)
1022+
}
1023+
return indexNameExpressionResolver.concreteIndices(clusterState, localIndices, timeProvider.getAbsoluteStartMillis());
9931024
}
9941025

9951026
private void executeSearch(
@@ -1029,7 +1060,7 @@ private void executeSearch(
10291060
searchRequest.pointInTimeBuilder().getKeepAlive()
10301061
);
10311062
} else {
1032-
final Index[] indices = searchRequestIndicesResolver.resolveLocalIndices(localIndices, clusterState, timeProvider);
1063+
final Index[] indices = resolveLocalIndices(localIndices, clusterState, timeProvider);
10331064
Map<String, Set<String>> routingMap = indexNameExpressionResolver.resolveSearchRouting(
10341065
clusterState,
10351066
searchRequest.routing(),

server/src/main/java/org/opensearch/snapshots/SnapshotsService.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,15 @@ private String[] resolveIndices(ClusterState currentState, CreateSnapshotRequest
462462
}
463463

464464
public ResolvedIndices resolveIndices(CreateSnapshotRequest request) {
465-
return ResolvedIndices.of(resolveIndices(clusterService.state(), request));
465+
ClusterState currentState = clusterService.state();
466+
final List<String> dataStreams = indexNameExpressionResolver.dataStreamNames(
467+
currentState,
468+
request.indicesOptions(),
469+
request.indices()
470+
);
471+
List<String> result = new ArrayList<>(dataStreams);
472+
result.addAll(Arrays.asList(resolveIndices(currentState, request)));
473+
return ResolvedIndices.of(result);
466474
}
467475

468476
/**

0 commit comments

Comments
 (0)