Skip to content

Commit f962530

Browse files
More actions implement interface TransportIndicesResolvingAction
1 parent d0a9ea6 commit f962530

File tree

16 files changed

+259
-63
lines changed

16 files changed

+259
-63
lines changed

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

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,34 @@
3232

3333
package org.opensearch.index.reindex;
3434

35+
import org.opensearch.action.search.SearchRequest;
36+
import org.opensearch.action.search.SearchRequestIndicesResolver;
3537
import org.opensearch.action.support.ActionFilters;
3638
import org.opensearch.action.support.HandledTransportAction;
39+
import org.opensearch.action.support.TransportIndicesResolvingAction;
40+
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
41+
import org.opensearch.cluster.metadata.ResolvedIndices;
3742
import org.opensearch.cluster.service.ClusterService;
3843
import org.opensearch.common.inject.Inject;
3944
import org.opensearch.core.action.ActionListener;
45+
import org.opensearch.core.common.io.stream.NamedWriteableRegistry;
4046
import org.opensearch.core.common.io.stream.Writeable;
4147
import org.opensearch.script.ScriptService;
4248
import org.opensearch.tasks.Task;
4349
import org.opensearch.threadpool.ThreadPool;
50+
import org.opensearch.transport.RemoteClusterService;
4451
import org.opensearch.transport.TransportService;
4552
import org.opensearch.transport.client.Client;
4653
import org.opensearch.transport.client.ParentTaskAssigningClient;
4754

48-
public class TransportDeleteByQueryAction extends HandledTransportAction<DeleteByQueryRequest, BulkByScrollResponse> {
55+
public class TransportDeleteByQueryAction extends HandledTransportAction<DeleteByQueryRequest, BulkByScrollResponse> implements
56+
TransportIndicesResolvingAction<DeleteByQueryRequest> {
4957

5058
private final ThreadPool threadPool;
5159
private final Client client;
5260
private final ScriptService scriptService;
5361
private final ClusterService clusterService;
62+
private final SearchRequestIndicesResolver searchRequestIndicesResolver;
5463

5564
@Inject
5665
public TransportDeleteByQueryAction(
@@ -59,8 +68,10 @@ public TransportDeleteByQueryAction(
5968
Client client,
6069
TransportService transportService,
6170
ScriptService scriptService,
62-
ClusterService clusterService
63-
) {
71+
ClusterService clusterService,
72+
IndexNameExpressionResolver indexNameExpressionResolver,
73+
NamedWriteableRegistry namedWritableRegistry,
74+
RemoteClusterService remoteClusterService) {
6475
super(
6576
DeleteByQueryAction.NAME,
6677
transportService,
@@ -71,6 +82,7 @@ public TransportDeleteByQueryAction(
7182
this.client = client;
7283
this.scriptService = scriptService;
7384
this.clusterService = clusterService;
85+
this.searchRequestIndicesResolver = new SearchRequestIndicesResolver(clusterService, indexNameExpressionResolver, namedWritableRegistry, remoteClusterService);
7486
}
7587

7688
@Override
@@ -94,4 +106,10 @@ public void doExecute(Task task, DeleteByQueryRequest request, ActionListener<Bu
94106
}
95107
);
96108
}
109+
110+
@Override
111+
public ResolvedIndices resolveIndices(DeleteByQueryRequest request) {
112+
SearchRequest searchRequest = request.getSearchRequest();
113+
return searchRequestIndicesResolver.resolveIndices(searchRequest);
114+
}
97115
}

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

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,17 @@
3434

3535
import org.apache.logging.log4j.Logger;
3636
import org.opensearch.action.index.IndexRequest;
37+
import org.opensearch.action.search.SearchRequestIndicesResolver;
3738
import org.opensearch.action.support.ActionFilters;
3839
import org.opensearch.action.support.HandledTransportAction;
40+
import org.opensearch.action.support.TransportIndicesResolvingAction;
3941
import org.opensearch.cluster.ClusterState;
42+
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
43+
import org.opensearch.cluster.metadata.ResolvedIndices;
4044
import org.opensearch.cluster.service.ClusterService;
4145
import org.opensearch.common.inject.Inject;
4246
import org.opensearch.core.action.ActionListener;
47+
import org.opensearch.core.common.io.stream.NamedWriteableRegistry;
4348
import org.opensearch.core.common.io.stream.Writeable;
4449
import org.opensearch.index.mapper.IdFieldMapper;
4550
import org.opensearch.index.mapper.IndexFieldMapper;
@@ -55,12 +60,14 @@
5560
import java.util.Map;
5661
import java.util.function.BiFunction;
5762

58-
public class TransportUpdateByQueryAction extends HandledTransportAction<UpdateByQueryRequest, BulkByScrollResponse> {
63+
public class TransportUpdateByQueryAction extends HandledTransportAction<UpdateByQueryRequest, BulkByScrollResponse> implements
64+
TransportIndicesResolvingAction<UpdateByQueryRequest> {
5965

6066
private final ThreadPool threadPool;
6167
private final Client client;
6268
private final ScriptService scriptService;
6369
private final ClusterService clusterService;
70+
private final SearchRequestIndicesResolver searchRequestIndicesResolver;
6471

6572
@Inject
6673
public TransportUpdateByQueryAction(
@@ -69,8 +76,9 @@ public TransportUpdateByQueryAction(
6976
Client client,
7077
TransportService transportService,
7178
ScriptService scriptService,
72-
ClusterService clusterService
73-
) {
79+
ClusterService clusterService,
80+
IndexNameExpressionResolver indexNameExpressionResolver,
81+
NamedWriteableRegistry namedWriteableRegistry) {
7482
super(
7583
UpdateByQueryAction.NAME,
7684
transportService,
@@ -81,6 +89,8 @@ public TransportUpdateByQueryAction(
8189
this.client = client;
8290
this.scriptService = scriptService;
8391
this.clusterService = clusterService;
92+
this.searchRequestIndicesResolver = new SearchRequestIndicesResolver(clusterService, indexNameExpressionResolver, namedWriteableRegistry,
93+
transportService.getRemoteClusterService());
8494
}
8595

8696
@Override
@@ -106,6 +116,11 @@ protected void doExecute(Task task, UpdateByQueryRequest request, ActionListener
106116
);
107117
}
108118

119+
@Override
120+
public ResolvedIndices resolveIndices(UpdateByQueryRequest request) {
121+
return searchRequestIndicesResolver.resolveIndices(request.getSearchRequest());
122+
}
123+
109124
/**
110125
* Simple implementation of update-by-query using scrolling and bulk.
111126
*/

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,9 @@ protected TransportUpdateByQueryAction.AsyncIndexBySearchAction action(ScriptSer
7979
null,
8080
transportService,
8181
scriptService,
82-
null
83-
);
82+
null,
83+
null,
84+
null);
8485
return new TransportUpdateByQueryAction.AsyncIndexBySearchAction(
8586
task,
8687
logger,

server/src/main/java/org/opensearch/action/admin/cluster/shards/TransportClusterSearchShardsAction.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,13 @@
3333
package org.opensearch.action.admin.cluster.shards;
3434

3535
import org.opensearch.action.support.ActionFilters;
36+
import org.opensearch.action.support.TransportIndicesResolvingAction;
3637
import org.opensearch.action.support.clustermanager.TransportClusterManagerNodeReadAction;
3738
import org.opensearch.cluster.ClusterState;
3839
import org.opensearch.cluster.block.ClusterBlockException;
3940
import org.opensearch.cluster.block.ClusterBlockLevel;
4041
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
42+
import org.opensearch.cluster.metadata.ResolvedIndices;
4143
import org.opensearch.cluster.node.DiscoveryNode;
4244
import org.opensearch.cluster.routing.GroupShardsIterator;
4345
import org.opensearch.cluster.routing.ShardIterator;
@@ -65,7 +67,7 @@
6567
*/
6668
public class TransportClusterSearchShardsAction extends TransportClusterManagerNodeReadAction<
6769
ClusterSearchShardsRequest,
68-
ClusterSearchShardsResponse> {
70+
ClusterSearchShardsResponse> implements TransportIndicesResolvingAction<ClusterSearchShardsRequest> {
6971

7072
private final IndicesService indicesService;
7173

@@ -100,7 +102,7 @@ protected String executor() {
100102
@Override
101103
protected ClusterBlockException checkBlock(ClusterSearchShardsRequest request, ClusterState state) {
102104
return state.blocks()
103-
.indicesBlockedException(ClusterBlockLevel.METADATA_READ, indexNameExpressionResolver.concreteIndexNames(state, request));
105+
.indicesBlockedException(ClusterBlockLevel.METADATA_READ, resolveIndices(state, request));
104106
}
105107

106108
@Override
@@ -115,7 +117,7 @@ protected void clusterManagerOperation(
115117
final ActionListener<ClusterSearchShardsResponse> listener
116118
) {
117119
ClusterState clusterState = clusterService.state();
118-
String[] concreteIndices = indexNameExpressionResolver.concreteIndexNames(clusterState, request);
120+
String[] concreteIndices = resolveIndices(clusterState, request);
119121
Map<String, Set<String>> routingMap = indexNameExpressionResolver.resolveSearchRouting(state, request.routing(), request.indices());
120122
Map<String, AliasFilter> indicesAndFilters = new HashMap<>();
121123
Set<String> indicesAndAliases = indexNameExpressionResolver.resolveExpressions(clusterState, request.indices());
@@ -155,4 +157,13 @@ protected void clusterManagerOperation(
155157
}
156158
listener.onResponse(new ClusterSearchShardsResponse(groupResponses, nodes, indicesAndFilters));
157159
}
160+
161+
private String[] resolveIndices(ClusterState clusterState, ClusterSearchShardsRequest request) {
162+
return indexNameExpressionResolver.concreteIndexNames(clusterState, request);
163+
}
164+
165+
@Override
166+
public ResolvedIndices resolveIndices(ClusterSearchShardsRequest request) {
167+
return ResolvedIndices.of(resolveIndices(clusterService.state(), request));
168+
}
158169
}

server/src/main/java/org/opensearch/action/admin/cluster/snapshots/create/TransportCreateSnapshotAction.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,13 @@
3333
package org.opensearch.action.admin.cluster.snapshots.create;
3434

3535
import org.opensearch.action.support.ActionFilters;
36+
import org.opensearch.action.support.TransportIndicesResolvingAction;
3637
import org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction;
3738
import org.opensearch.cluster.ClusterState;
3839
import org.opensearch.cluster.block.ClusterBlockException;
3940
import org.opensearch.cluster.block.ClusterBlockLevel;
4041
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
42+
import org.opensearch.cluster.metadata.ResolvedIndices;
4143
import org.opensearch.cluster.service.ClusterService;
4244
import org.opensearch.common.inject.Inject;
4345
import org.opensearch.core.action.ActionListener;
@@ -57,7 +59,8 @@
5759
*
5860
* @opensearch.internal
5961
*/
60-
public class TransportCreateSnapshotAction extends TransportClusterManagerNodeAction<CreateSnapshotRequest, CreateSnapshotResponse> {
62+
public class TransportCreateSnapshotAction extends TransportClusterManagerNodeAction<CreateSnapshotRequest, CreateSnapshotResponse> implements
63+
TransportIndicesResolvingAction<CreateSnapshotRequest> {
6164
private final SnapshotsService snapshotsService;
6265

6366
private final RepositoriesService repositoriesService;
@@ -121,4 +124,9 @@ protected void clusterManagerOperation(
121124
snapshotsService.createSnapshot(request, ActionListener.map(listener, snapshot -> new CreateSnapshotResponse()));
122125
}
123126
}
127+
128+
@Override
129+
public ResolvedIndices resolveIndices(CreateSnapshotRequest request) {
130+
return snapshotsService.resolveIndices(request);
131+
}
124132
}

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,15 @@
3232
package org.opensearch.action.admin.indices.alias.get;
3333

3434
import org.opensearch.action.support.ActionFilters;
35+
import org.opensearch.action.support.TransportIndicesResolvingAction;
3536
import org.opensearch.action.support.clustermanager.TransportClusterManagerNodeReadAction;
3637
import org.opensearch.cluster.ClusterState;
3738
import org.opensearch.cluster.block.ClusterBlockException;
3839
import org.opensearch.cluster.block.ClusterBlockLevel;
3940
import org.opensearch.cluster.metadata.AliasMetadata;
4041
import org.opensearch.cluster.metadata.IndexMetadata;
4142
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
43+
import org.opensearch.cluster.metadata.ResolvedIndices;
4244
import org.opensearch.cluster.service.ClusterService;
4345
import org.opensearch.common.inject.Inject;
4446
import org.opensearch.common.logging.DeprecationLogger;
@@ -65,7 +67,8 @@
6567
*
6668
* @opensearch.internal
6769
*/
68-
public class TransportGetAliasesAction extends TransportClusterManagerNodeReadAction<GetAliasesRequest, GetAliasesResponse> {
70+
public class TransportGetAliasesAction extends TransportClusterManagerNodeReadAction<GetAliasesRequest, GetAliasesResponse> implements
71+
TransportIndicesResolvingAction<GetAliasesRequest> {
6972
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(TransportGetAliasesAction.class);
7073

7174
private final SystemIndices systemIndices;
@@ -195,4 +198,13 @@ private static void checkSystemAliasAccess(GetAliasesRequest request, SystemIndi
195198
);
196199
}
197200
}
201+
202+
@Override
203+
public ResolvedIndices resolveIndices(GetAliasesRequest request) {
204+
ClusterState state = this.clusterService.state();
205+
try (ThreadContext.StoredContext ignore = threadPool.getThreadContext().newStoredContext(false)) {
206+
// TODO: do we need add also aliases which will be resolved?
207+
return ResolvedIndices.of(indexNameExpressionResolver.concreteIndexNames(state, request));
208+
}
209+
}
198210
}

server/src/main/java/org/opensearch/action/admin/indices/close/TransportCloseIndexAction.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,14 @@
3737
import org.apache.logging.log4j.message.ParameterizedMessage;
3838
import org.opensearch.action.support.ActionFilters;
3939
import org.opensearch.action.support.DestructiveOperations;
40+
import org.opensearch.action.support.TransportIndicesResolvingAction;
4041
import org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction;
4142
import org.opensearch.cluster.ClusterState;
4243
import org.opensearch.cluster.block.ClusterBlockException;
4344
import org.opensearch.cluster.block.ClusterBlockLevel;
4445
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
4546
import org.opensearch.cluster.metadata.MetadataIndexStateService;
47+
import org.opensearch.cluster.metadata.ResolvedIndices;
4648
import org.opensearch.cluster.service.ClusterService;
4749
import org.opensearch.common.inject.Inject;
4850
import org.opensearch.common.settings.ClusterSettings;
@@ -67,7 +69,8 @@
6769
*
6870
* @opensearch.internal
6971
*/
70-
public class TransportCloseIndexAction extends TransportClusterManagerNodeAction<CloseIndexRequest, CloseIndexResponse> {
72+
public class TransportCloseIndexAction extends TransportClusterManagerNodeAction<CloseIndexRequest, CloseIndexResponse> implements
73+
TransportIndicesResolvingAction<CloseIndexRequest> {
7174

7275
private static final Logger logger = LogManager.getLogger(TransportCloseIndexAction.class);
7376

@@ -159,7 +162,7 @@ protected void clusterManagerOperation(
159162
final ClusterState state,
160163
final ActionListener<CloseIndexResponse> listener
161164
) throws Exception {
162-
final Index[] concreteIndices = indexNameExpressionResolver.concreteIndices(state, request);
165+
final Index[] concreteIndices = resolveIndices(state, request);
163166
if (concreteIndices == null || concreteIndices.length == 0) {
164167
listener.onResponse(new CloseIndexResponse(true, false, Collections.emptyList()));
165168
return;
@@ -177,6 +180,15 @@ protected void clusterManagerOperation(
177180
}));
178181
}
179182

183+
private Index[] resolveIndices(ClusterState state, CloseIndexRequest request) {
184+
return indexNameExpressionResolver.concreteIndices(state, request);
185+
}
186+
187+
@Override
188+
public ResolvedIndices resolveIndices(CloseIndexRequest request) {
189+
return ResolvedIndices.of(resolveIndices(clusterService.state(), request));
190+
}
191+
180192
/**
181193
* Reject close index request if cluster mode is [MIXED] and migration direction is [RemoteStore]
182194
* @throws IllegalStateException if cluster mode is [MIXED] and migration direction is [RemoteStore]

server/src/main/java/org/opensearch/action/admin/indices/readonly/TransportAddIndexBlockAction.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,14 @@
3737
import org.apache.logging.log4j.message.ParameterizedMessage;
3838
import org.opensearch.action.support.ActionFilters;
3939
import org.opensearch.action.support.DestructiveOperations;
40+
import org.opensearch.action.support.TransportIndicesResolvingAction;
4041
import org.opensearch.action.support.clustermanager.TransportClusterManagerNodeAction;
4142
import org.opensearch.cluster.ClusterState;
4243
import org.opensearch.cluster.block.ClusterBlockException;
4344
import org.opensearch.cluster.block.ClusterBlockLevel;
4445
import org.opensearch.cluster.metadata.IndexNameExpressionResolver;
4546
import org.opensearch.cluster.metadata.MetadataIndexStateService;
47+
import org.opensearch.cluster.metadata.ResolvedIndices;
4648
import org.opensearch.cluster.service.ClusterService;
4749
import org.opensearch.common.inject.Inject;
4850
import org.opensearch.core.action.ActionListener;
@@ -65,7 +67,8 @@
6567
*
6668
* @opensearch.internal
6769
*/
68-
public class TransportAddIndexBlockAction extends TransportClusterManagerNodeAction<AddIndexBlockRequest, AddIndexBlockResponse> {
70+
public class TransportAddIndexBlockAction extends TransportClusterManagerNodeAction<AddIndexBlockRequest, AddIndexBlockResponse> implements
71+
TransportIndicesResolvingAction<AddIndexBlockRequest> {
6972

7073
private static final Logger logger = LogManager.getLogger(TransportAddIndexBlockAction.class);
7174

@@ -135,7 +138,7 @@ protected void clusterManagerOperation(
135138
final ClusterState state,
136139
final ActionListener<AddIndexBlockResponse> listener
137140
) throws Exception {
138-
final Index[] concreteIndices = indexNameExpressionResolver.concreteIndices(state, request);
141+
final Index[] concreteIndices = resolveIndices(state, request);
139142
if (concreteIndices == null || concreteIndices.length == 0) {
140143
listener.onResponse(new AddIndexBlockResponse(true, false, Collections.emptyList()));
141144
return;
@@ -150,4 +153,13 @@ protected void clusterManagerOperation(
150153
delegatedListener.onFailure(t);
151154
}));
152155
}
156+
157+
private Index[] resolveIndices(ClusterState state, AddIndexBlockRequest request) {
158+
return indexNameExpressionResolver.concreteIndices(state, request);
159+
}
160+
161+
@Override
162+
public ResolvedIndices resolveIndices(AddIndexBlockRequest request) {
163+
return ResolvedIndices.of(resolveIndices(this.clusterService.state(), request));
164+
}
153165
}

0 commit comments

Comments
 (0)