|  | @@ -14,7 +14,6 @@ import org.elasticsearch.transport.Transport;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
		
			
				|  |  |  import java.util.Objects;
 | 
	
		
			
				|  |  | -import java.util.function.Function;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Base class for all individual search phases like collecting distributed frequencies, fetching documents, querying shards.
 | 
	
	
		
			
				|  | @@ -35,26 +34,13 @@ abstract class SearchPhase {
 | 
	
		
			
				|  |  |          return name;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    protected String missingShardsErrorMessage(StringBuilder missingShards) {
 | 
	
		
			
				|  |  | -        return makeMissingShardsError(missingShards);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    protected static String makeMissingShardsError(StringBuilder missingShards) {
 | 
	
		
			
				|  |  | +    private static String makeMissingShardsError(StringBuilder missingShards) {
 | 
	
		
			
				|  |  |          return "Search rejected due to missing shards ["
 | 
	
		
			
				|  |  |              + missingShards
 | 
	
		
			
				|  |  |              + "]. Consider using `allow_partial_search_results` setting to bypass this error.";
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    protected void doCheckNoMissingShards(String phaseName, SearchRequest request, List<SearchShardIterator> shardsIts) {
 | 
	
		
			
				|  |  | -        doCheckNoMissingShards(phaseName, request, shardsIts, this::missingShardsErrorMessage);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    protected static void doCheckNoMissingShards(
 | 
	
		
			
				|  |  | -        String phaseName,
 | 
	
		
			
				|  |  | -        SearchRequest request,
 | 
	
		
			
				|  |  | -        List<SearchShardIterator> shardsIts,
 | 
	
		
			
				|  |  | -        Function<StringBuilder, String> makeErrorMessage
 | 
	
		
			
				|  |  | -    ) {
 | 
	
		
			
				|  |  | +    protected static void doCheckNoMissingShards(String phaseName, SearchRequest request, List<SearchShardIterator> shardsIts) {
 | 
	
		
			
				|  |  |          assert request.allowPartialSearchResults() != null : "SearchRequest missing setting for allowPartialSearchResults";
 | 
	
		
			
				|  |  |          if (request.allowPartialSearchResults() == false) {
 | 
	
		
			
				|  |  |              final StringBuilder missingShards = new StringBuilder();
 | 
	
	
		
			
				|  | @@ -70,7 +56,7 @@ abstract class SearchPhase {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              if (missingShards.isEmpty() == false) {
 | 
	
		
			
				|  |  |                  // Status red - shard is missing all copies and would produce partial results for an index search
 | 
	
		
			
				|  |  | -                final String msg = makeErrorMessage.apply(missingShards);
 | 
	
		
			
				|  |  | +                final String msg = makeMissingShardsError(missingShards);
 | 
	
		
			
				|  |  |                  throw new SearchPhaseExecutionException(phaseName, msg, null, ShardSearchFailure.EMPTY_ARRAY);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 |