Skip to content

Commit f01b866

Browse files
committed
Simplify logic around missing shards check in search phases
This removes a couple of indirections: the error message for missing shards is always the same no matter the search phase.
1 parent 19fe0a4 commit f01b866

File tree

2 files changed

+4
-18
lines changed

2 files changed

+4
-18
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ private synchronized void consumeResult(int shardIndex, boolean canMatch, MinAnd
201201

202202
private void checkNoMissingShards(List<SearchShardIterator> shards) {
203203
assert assertSearchCoordinationThread();
204-
SearchPhase.doCheckNoMissingShards("can_match", request, shards, SearchPhase::makeMissingShardsError);
204+
SearchPhase.doCheckNoMissingShards("can_match", request, shards);
205205
}
206206

207207
private Map<SendingTarget, List<SearchShardIterator>> groupByNode(List<SearchShardIterator> shards) {

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

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import java.util.List;
1616
import java.util.Objects;
17-
import java.util.function.Function;
1817

1918
/**
2019
* Base class for all individual search phases like collecting distributed frequencies, fetching documents, querying shards.
@@ -35,26 +34,13 @@ public String getName() {
3534
return name;
3635
}
3736

38-
protected String missingShardsErrorMessage(StringBuilder missingShards) {
39-
return makeMissingShardsError(missingShards);
40-
}
41-
42-
protected static String makeMissingShardsError(StringBuilder missingShards) {
37+
private static String makeMissingShardsError(StringBuilder missingShards) {
4338
return "Search rejected due to missing shards ["
4439
+ missingShards
4540
+ "]. Consider using `allow_partial_search_results` setting to bypass this error.";
4641
}
4742

48-
protected void doCheckNoMissingShards(String phaseName, SearchRequest request, List<SearchShardIterator> shardsIts) {
49-
doCheckNoMissingShards(phaseName, request, shardsIts, this::missingShardsErrorMessage);
50-
}
51-
52-
protected static void doCheckNoMissingShards(
53-
String phaseName,
54-
SearchRequest request,
55-
List<SearchShardIterator> shardsIts,
56-
Function<StringBuilder, String> makeErrorMessage
57-
) {
43+
protected static void doCheckNoMissingShards(String phaseName, SearchRequest request, List<SearchShardIterator> shardsIts) {
5844
assert request.allowPartialSearchResults() != null : "SearchRequest missing setting for allowPartialSearchResults";
5945
if (request.allowPartialSearchResults() == false) {
6046
final StringBuilder missingShards = new StringBuilder();
@@ -70,7 +56,7 @@ protected static void doCheckNoMissingShards(
7056
}
7157
if (missingShards.isEmpty() == false) {
7258
// Status red - shard is missing all copies and would produce partial results for an index search
73-
final String msg = makeErrorMessage.apply(missingShards);
59+
final String msg = makeMissingShardsError(missingShards);
7460
throw new SearchPhaseExecutionException(phaseName, msg, null, ShardSearchFailure.EMPTY_ARRAY);
7561
}
7662
}

0 commit comments

Comments
 (0)