Skip to content

Commit ea06f5b

Browse files
committed
iter
1 parent 22ea646 commit ea06f5b

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

server/src/main/java/org/elasticsearch/action/search/TransportOpenPointInTimeAction.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,11 @@
6060
import org.elasticsearch.transport.TransportService;
6161

6262
import java.io.IOException;
63-
import java.util.Collections;
6463
import java.util.HashSet;
6564
import java.util.List;
6665
import java.util.Map;
6766
import java.util.Set;
68-
import java.util.SortedMap;
69-
import java.util.TreeMap;
67+
import java.util.concurrent.ConcurrentHashMap;
7068
import java.util.concurrent.Executor;
7169
import java.util.function.BiFunction;
7270
import java.util.stream.Collectors;
@@ -153,18 +151,18 @@ protected void doExecute(Task task, OpenPointInTimeRequest request, ActionListen
153151
if (resolveCrossProject) {
154152
IndicesOptions originalIndicesOptions = request.indicesOptions();
155153
if (false == originalIndicesOptions.ignoreUnavailable() || false == originalIndicesOptions.allowNoIndices()) {
156-
final SortedMap<String, ResolveIndexAction.Response> remoteResponses = Collections.synchronizedSortedMap(new TreeMap<>());
157154
final ResolvedIndexExpressions localResolvedIndexExpressions = request.getResolvedIndexExpressions();
158155
RemoteClusterService remoteClusterService = searchTransportService.getRemoteClusterService();
159-
final Map<String, OriginalIndices> remoteClusterIndices = remoteClusterService.groupIndices(
156+
final Map<String, OriginalIndices> indicesPerCluster = remoteClusterService.groupIndices(
160157
indicesOptionsForCrossProjectFanout(originalIndicesOptions),
161158
indices
162159
);
163160
// local indices resolution was already taken care of by the Security Action Filter
164-
remoteClusterIndices.remove(RemoteClusterAware.LOCAL_CLUSTER_GROUP_KEY);
165-
if (false == remoteClusterIndices.isEmpty()) {
166-
final int remoteRequests = remoteClusterIndices.size();
167-
final CountDown completionCounter = new CountDown(remoteRequests);
161+
indicesPerCluster.remove(RemoteClusterAware.LOCAL_CLUSTER_GROUP_KEY);
162+
if (false == indicesPerCluster.isEmpty()) {
163+
final int linkedProjectsToQuery = indicesPerCluster.size();
164+
final Map<String, ResolveIndexAction.Response> remoteResponses = new ConcurrentHashMap<>(linkedProjectsToQuery);
165+
final CountDown completionCounter = new CountDown(linkedProjectsToQuery);
168166
final Runnable terminalHandler = () -> {
169167
if (completionCounter.countDown()) {
170168
Map<String, ResolvedIndexExpressions> resolvedRemoteExpressions = remoteResponses.entrySet()
@@ -216,17 +214,19 @@ protected void doExecute(Task task, OpenPointInTimeRequest request, ActionListen
216214
};
217215

218216
// make CPS calls
219-
for (Map.Entry<String, OriginalIndices> remoteIndices : remoteClusterIndices.entrySet()) {
220-
String clusterAlias = remoteIndices.getKey();
221-
OriginalIndices originalIndices = remoteIndices.getValue();
217+
for (Map.Entry<String, OriginalIndices> remoteClusterIndices : indicesPerCluster.entrySet()) {
218+
String clusterAlias = remoteClusterIndices.getKey();
219+
OriginalIndices originalIndices = remoteClusterIndices.getValue();
220+
// form indicesOptionsForCrossProjectFanout
221+
IndicesOptions relaxedFanoutIndicesOptions = originalIndices.indicesOptions();
222222
var remoteClusterClient = remoteClusterService.getRemoteClusterClient(
223223
clusterAlias,
224224
EsExecutors.DIRECT_EXECUTOR_SERVICE,
225-
RemoteClusterService.DisconnectedStrategy.RECONNECT_UNLESS_SKIP_UNAVAILABLE
225+
RemoteClusterService.DisconnectedStrategy.FAIL_IF_DISCONNECTED
226226
);
227227
ResolveIndexAction.Request remoteRequest = new ResolveIndexAction.Request(
228228
originalIndices.indices(),
229-
originalIndices.indicesOptions()
229+
relaxedFanoutIndicesOptions
230230
);
231231
remoteClusterClient.execute(ResolveIndexAction.REMOTE_TYPE, remoteRequest, ActionListener.wrap(response -> {
232232
remoteResponses.put(clusterAlias, response);

0 commit comments

Comments
 (0)