From 6443b46184314d654670f217c27cdb84e1c648f8 Mon Sep 17 00:00:00 2001 From: Luca Cavanna Date: Mon, 11 Feb 2019 15:55:46 +0100 Subject: [PATCH] Clean up ShardSearchLocalRequest (#38574) Added a constructor accepting `StreamInput` as argument, which allowed to make most of the instance members final as well as remove the default constructor. Removed a test only constructor in favour of invoking the existing constructor that takes a `SearchRequest` as first argument. Also removed profile members and related methods as they were all unused. --- .../internal/ShardSearchLocalRequest.java | 188 ++++++++---------- .../search/internal/ShardSearchRequest.java | 11 - .../internal/ShardSearchTransportRequest.java | 22 +- .../index/SearchSlowLogTests.java | 12 +- .../search/SearchServiceTests.java | 103 +++++----- .../ShardSearchTransportRequestTests.java | 1 - .../search/slice/SliceBuilderTests.java | 12 +- .../index/engine/FrozenIndexTests.java | 32 +-- 8 files changed, 157 insertions(+), 224 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/search/internal/ShardSearchLocalRequest.java b/server/src/main/java/org/elasticsearch/search/internal/ShardSearchLocalRequest.java index 08cdd2fc0dc..33de72989a9 100644 --- a/server/src/main/java/org/elasticsearch/search/internal/ShardSearchLocalRequest.java +++ b/server/src/main/java/org/elasticsearch/search/internal/ShardSearchLocalRequest.java @@ -39,7 +39,7 @@ import java.io.IOException; /** * Shard level search request that gets created and consumed on the local node. - * Used by warmers and by api that need to create a search context within their execution. + * Used directly by api that need to create a search context within their execution. * * Source structure: *
@@ -56,51 +56,41 @@ import java.io.IOException;
  * }
  * 
*/ - public class ShardSearchLocalRequest implements ShardSearchRequest { - private String clusterAlias; - private ShardId shardId; - private int numberOfShards; - private SearchType searchType; - private Scroll scroll; - private String[] types = Strings.EMPTY_ARRAY; + private final String clusterAlias; + private final ShardId shardId; + private final int numberOfShards; + private final SearchType searchType; + private final Scroll scroll; + private final String[] types; + private final float indexBoost; + private final Boolean requestCache; + private final long nowInMillis; + private final boolean allowPartialSearchResults; + private final String[] indexRoutings; + private final String preference; + //these are the only two mutable fields, as they are subject to rewriting private AliasFilter aliasFilter; - private float indexBoost; private SearchSourceBuilder source; - private Boolean requestCache; - private long nowInMillis; - private boolean allowPartialSearchResults; - private String[] indexRoutings = Strings.EMPTY_ARRAY; - private String preference; - private boolean profile; - ShardSearchLocalRequest() { - } - - ShardSearchLocalRequest(SearchRequest searchRequest, ShardId shardId, int numberOfShards, AliasFilter aliasFilter, float indexBoost, - long nowInMillis, @Nullable String clusterAlias, String[] indexRoutings) { - this(shardId, numberOfShards, searchRequest.searchType(), - searchRequest.source(), searchRequest.types(), searchRequest.requestCache(), aliasFilter, indexBoost, - searchRequest.allowPartialSearchResults(), indexRoutings, searchRequest.preference()); + public ShardSearchLocalRequest(SearchRequest searchRequest, ShardId shardId, int numberOfShards, AliasFilter aliasFilter, + float indexBoost, long nowInMillis, @Nullable String clusterAlias, String[] indexRoutings) { + this(shardId, numberOfShards, searchRequest.searchType(), searchRequest.source(), searchRequest.types(), + searchRequest.requestCache(), aliasFilter, indexBoost, searchRequest.allowPartialSearchResults(), indexRoutings, + searchRequest.preference(), searchRequest.scroll(), nowInMillis, clusterAlias); // If allowPartialSearchResults is unset (ie null), the cluster-level default should have been substituted // at this stage. Any NPEs in the above are therefore an error in request preparation logic. assert searchRequest.allowPartialSearchResults() != null; - this.scroll = searchRequest.scroll(); - this.nowInMillis = nowInMillis; - this.clusterAlias = clusterAlias; } public ShardSearchLocalRequest(ShardId shardId, String[] types, long nowInMillis, AliasFilter aliasFilter) { - this.types = types; - this.nowInMillis = nowInMillis; - this.aliasFilter = aliasFilter; - this.shardId = shardId; - indexBoost = 1.0f; + this(shardId, -1, null, null, types, null, aliasFilter, 1.0f, false, Strings.EMPTY_ARRAY, null, null, nowInMillis, null); } - public ShardSearchLocalRequest(ShardId shardId, int numberOfShards, SearchType searchType, SearchSourceBuilder source, String[] types, - Boolean requestCache, AliasFilter aliasFilter, float indexBoost, boolean allowPartialSearchResults, - String[] indexRoutings, String preference) { + private ShardSearchLocalRequest(ShardId shardId, int numberOfShards, SearchType searchType, SearchSourceBuilder source, String[] types, + Boolean requestCache, AliasFilter aliasFilter, float indexBoost, boolean allowPartialSearchResults, + String[] indexRoutings, String preference, Scroll scroll, long nowInMillis, + @Nullable String clusterAlias) { this.shardId = shardId; this.numberOfShards = numberOfShards; this.searchType = searchType; @@ -112,6 +102,66 @@ public class ShardSearchLocalRequest implements ShardSearchRequest { this.allowPartialSearchResults = allowPartialSearchResults; this.indexRoutings = indexRoutings; this.preference = preference; + this.scroll = scroll; + this.nowInMillis = nowInMillis; + this.clusterAlias = clusterAlias; + } + + ShardSearchLocalRequest(StreamInput in) throws IOException { + shardId = ShardId.readShardId(in); + searchType = SearchType.fromId(in.readByte()); + numberOfShards = in.readVInt(); + scroll = in.readOptionalWriteable(Scroll::new); + source = in.readOptionalWriteable(SearchSourceBuilder::new); + types = in.readStringArray(); + aliasFilter = new AliasFilter(in); + indexBoost = in.readFloat(); + nowInMillis = in.readVLong(); + requestCache = in.readOptionalBoolean(); + clusterAlias = in.readOptionalString(); + if (in.getVersion().onOrAfter(Version.V_7_0_0)) { + allowPartialSearchResults = in.readBoolean(); + } else if (in.getVersion().onOrAfter(Version.V_6_3_0)) { + allowPartialSearchResults = in.readOptionalBoolean(); + } else { + allowPartialSearchResults = false; + } + if (in.getVersion().onOrAfter(Version.V_6_4_0)) { + indexRoutings = in.readStringArray(); + preference = in.readOptionalString(); + } else { + indexRoutings = Strings.EMPTY_ARRAY; + preference = null; + } + } + + protected final void innerWriteTo(StreamOutput out, boolean asKey) throws IOException { + shardId.writeTo(out); + out.writeByte(searchType.id()); + if (!asKey) { + out.writeVInt(numberOfShards); + } + out.writeOptionalWriteable(scroll); + out.writeOptionalWriteable(source); + out.writeStringArray(types); + aliasFilter.writeTo(out); + out.writeFloat(indexBoost); + if (asKey == false) { + out.writeVLong(nowInMillis); + } + out.writeOptionalBoolean(requestCache); + out.writeOptionalString(clusterAlias); + if (out.getVersion().onOrAfter(Version.V_7_0_0)) { + out.writeBoolean(allowPartialSearchResults); + } else if (out.getVersion().onOrAfter(Version.V_6_3_0)) { + out.writeOptionalBoolean(allowPartialSearchResults); + } + if (asKey == false) { + if (out.getVersion().onOrAfter(Version.V_6_4_0)) { + out.writeStringArray(indexRoutings); + out.writeOptionalString(preference); + } + } } @Override @@ -174,7 +224,6 @@ public class ShardSearchLocalRequest implements ShardSearchRequest { return allowPartialSearchResults; } - @Override public Scroll scroll() { return scroll; @@ -190,75 +239,6 @@ public class ShardSearchLocalRequest implements ShardSearchRequest { return preference; } - @Override - public void setProfile(boolean profile) { - this.profile = profile; - } - - @Override - public boolean isProfile() { - return profile; - } - - void setSearchType(SearchType type) { - this.searchType = type; - } - - protected void innerReadFrom(StreamInput in) throws IOException { - shardId = ShardId.readShardId(in); - searchType = SearchType.fromId(in.readByte()); - numberOfShards = in.readVInt(); - scroll = in.readOptionalWriteable(Scroll::new); - source = in.readOptionalWriteable(SearchSourceBuilder::new); - types = in.readStringArray(); - aliasFilter = new AliasFilter(in); - indexBoost = in.readFloat(); - nowInMillis = in.readVLong(); - requestCache = in.readOptionalBoolean(); - clusterAlias = in.readOptionalString(); - if (in.getVersion().onOrAfter(Version.V_7_0_0)) { - allowPartialSearchResults = in.readBoolean(); - } else if (in.getVersion().onOrAfter(Version.V_6_3_0)) { - allowPartialSearchResults = in.readOptionalBoolean(); - } - if (in.getVersion().onOrAfter(Version.V_6_4_0)) { - indexRoutings = in.readStringArray(); - preference = in.readOptionalString(); - } else { - indexRoutings = Strings.EMPTY_ARRAY; - preference = null; - } - } - - protected void innerWriteTo(StreamOutput out, boolean asKey) throws IOException { - shardId.writeTo(out); - out.writeByte(searchType.id()); - if (!asKey) { - out.writeVInt(numberOfShards); - } - out.writeOptionalWriteable(scroll); - out.writeOptionalWriteable(source); - out.writeStringArray(types); - aliasFilter.writeTo(out); - out.writeFloat(indexBoost); - if (asKey == false) { - out.writeVLong(nowInMillis); - } - out.writeOptionalBoolean(requestCache); - out.writeOptionalString(clusterAlias); - if (out.getVersion().onOrAfter(Version.V_7_0_0)) { - out.writeBoolean(allowPartialSearchResults); - } else if (out.getVersion().onOrAfter(Version.V_6_3_0)) { - out.writeOptionalBoolean(allowPartialSearchResults); - } - if (asKey == false) { - if (out.getVersion().onOrAfter(Version.V_6_4_0)) { - out.writeStringArray(indexRoutings); - out.writeOptionalString(preference); - } - } - } - @Override public BytesReference cacheKey() throws IOException { BytesStreamOutput out = new BytesStreamOutput(); diff --git a/server/src/main/java/org/elasticsearch/search/internal/ShardSearchRequest.java b/server/src/main/java/org/elasticsearch/search/internal/ShardSearchRequest.java index 85800a8066c..b88bda90090 100644 --- a/server/src/main/java/org/elasticsearch/search/internal/ShardSearchRequest.java +++ b/server/src/main/java/org/elasticsearch/search/internal/ShardSearchRequest.java @@ -83,17 +83,6 @@ public interface ShardSearchRequest { */ String preference(); - /** - * Sets if this shard search needs to be profiled or not - * @param profile True if the shard should be profiled - */ - void setProfile(boolean profile); - - /** - * Returns true if this shard search is being profiled or not - */ - boolean isProfile(); - /** * Returns the cache key for this shard search request, based on its content */ diff --git a/server/src/main/java/org/elasticsearch/search/internal/ShardSearchTransportRequest.java b/server/src/main/java/org/elasticsearch/search/internal/ShardSearchTransportRequest.java index d1ff306e3c8..9aae2df2777 100644 --- a/server/src/main/java/org/elasticsearch/search/internal/ShardSearchTransportRequest.java +++ b/server/src/main/java/org/elasticsearch/search/internal/ShardSearchTransportRequest.java @@ -48,9 +48,8 @@ import java.util.Map; */ public class ShardSearchTransportRequest extends TransportRequest implements ShardSearchRequest, IndicesRequest { - private OriginalIndices originalIndices; - - private ShardSearchLocalRequest shardSearchLocalRequest; + private final OriginalIndices originalIndices; + private final ShardSearchLocalRequest shardSearchLocalRequest; public ShardSearchTransportRequest(OriginalIndices originalIndices, SearchRequest searchRequest, ShardId shardId, int numberOfShards, AliasFilter aliasFilter, float indexBoost, long nowInMillis, @@ -62,8 +61,7 @@ public class ShardSearchTransportRequest extends TransportRequest implements Sha public ShardSearchTransportRequest(StreamInput in) throws IOException { super(in); - shardSearchLocalRequest = new ShardSearchLocalRequest(); - shardSearchLocalRequest.innerReadFrom(in); + shardSearchLocalRequest = new ShardSearchLocalRequest(in); originalIndices = OriginalIndices.readOriginalIndices(in); } @@ -74,10 +72,6 @@ public class ShardSearchTransportRequest extends TransportRequest implements Sha OriginalIndices.writeOriginalIndices(originalIndices, out); } - public void searchType(SearchType searchType) { - shardSearchLocalRequest.setSearchType(searchType); - } - @Override public String[] indices() { if (originalIndices == null) { @@ -179,16 +173,6 @@ public class ShardSearchTransportRequest extends TransportRequest implements Sha return shardSearchLocalRequest.cacheKey(); } - @Override - public void setProfile(boolean profile) { - shardSearchLocalRequest.setProfile(profile); - } - - @Override - public boolean isProfile() { - return shardSearchLocalRequest.isProfile(); - } - @Override public Task createTask(long id, String type, String action, TaskId parentTaskId, Map headers) { return new SearchTask(id, type, action, getDescription(), parentTaskId, headers); diff --git a/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java b/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java index 6c510b3a9bd..2389ce12f0f 100644 --- a/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java +++ b/server/src/test/java/org/elasticsearch/index/SearchSlowLogTests.java @@ -134,17 +134,7 @@ public class SearchSlowLogTests extends ESSingleNodeTestCase { } @Override - public void setProfile(boolean profile) { - - } - - @Override - public boolean isProfile() { - return false; - } - - @Override - public BytesReference cacheKey() throws IOException { + public BytesReference cacheKey() { return null; } diff --git a/server/src/test/java/org/elasticsearch/search/SearchServiceTests.java b/server/src/test/java/org/elasticsearch/search/SearchServiceTests.java index 894a4fa9d4a..71b70285e0b 100644 --- a/server/src/test/java/org/elasticsearch/search/SearchServiceTests.java +++ b/server/src/test/java/org/elasticsearch/search/SearchServiceTests.java @@ -30,7 +30,6 @@ import org.elasticsearch.action.search.SearchPhaseExecutionException; import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchTask; -import org.elasticsearch.action.search.SearchType; import org.elasticsearch.action.support.IndicesOptions; import org.elasticsearch.action.support.PlainActionFuture; import org.elasticsearch.action.support.WriteRequest; @@ -259,14 +258,14 @@ public class SearchServiceTests extends ESSingleNodeTestCase { startGun.await(); try { final int rounds = scaledRandomIntBetween(100, 10000); + SearchRequest searchRequest = new SearchRequest().allowPartialSearchResults(true); for (int i = 0; i < rounds; i++) { try { try { PlainActionFuture result = new PlainActionFuture<>(); service.executeQueryPhase( - new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.DEFAULT, - new SearchSourceBuilder(), new String[0], false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, - true, null, null), + new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, -1, null, null), new SearchTask(123L, "", "", "", null, Collections.emptyMap()), result); SearchPhaseResult searchPhaseResult = result.get(); IntArrayList intCursors = new IntArrayList(1); @@ -300,16 +299,14 @@ public class SearchServiceTests extends ESSingleNodeTestCase { final IndicesService indicesService = getInstanceFromNode(IndicesService.class); final IndexService indexService = indicesService.indexServiceSafe(resolveIndex("index")); final IndexShard indexShard = indexService.getShard(0); + SearchRequest searchRequest = new SearchRequest().allowPartialSearchResults(true); final SearchContext contextWithDefaultTimeout = service.createContext( new ShardSearchLocalRequest( + searchRequest, indexShard.shardId(), 1, - SearchType.DEFAULT, - new SearchSourceBuilder(), - new String[0], - false, new AliasFilter(null, Strings.EMPTY_ARRAY), - 1.0f, true, null, null) + 1.0f, -1, null, null) ); try { // the search context should inherit the default timeout @@ -320,16 +317,14 @@ public class SearchServiceTests extends ESSingleNodeTestCase { } final long seconds = randomIntBetween(6, 10); + searchRequest.source(new SearchSourceBuilder().timeout(TimeValue.timeValueSeconds(seconds))); final SearchContext context = service.createContext( new ShardSearchLocalRequest( + searchRequest, indexShard.shardId(), 1, - SearchType.DEFAULT, - new SearchSourceBuilder().timeout(TimeValue.timeValueSeconds(seconds)), - new String[0], - false, new AliasFilter(null, Strings.EMPTY_ARRAY), - 1.0f, true, null, null) + 1.0f, -1, null, null) ); try { // the search context should inherit the query timeout @@ -351,19 +346,20 @@ public class SearchServiceTests extends ESSingleNodeTestCase { final IndexService indexService = indicesService.indexServiceSafe(resolveIndex("index")); final IndexShard indexShard = indexService.getShard(0); + SearchRequest searchRequest = new SearchRequest().allowPartialSearchResults(true); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); + searchRequest.source(searchSourceBuilder); // adding the maximum allowed number of docvalue_fields to retrieve for (int i = 0; i < indexService.getIndexSettings().getMaxDocvalueFields(); i++) { searchSourceBuilder.docValueField("field" + i); } - try (SearchContext context = service.createContext(new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.DEFAULT, - searchSourceBuilder, new String[0], false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, true, null, null))) { + try (SearchContext context = service.createContext(new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, -1, null, null))) { assertNotNull(context); searchSourceBuilder.docValueField("one_field_too_much"); IllegalArgumentException ex = expectThrows(IllegalArgumentException.class, - () -> service.createContext(new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.DEFAULT, - searchSourceBuilder, new String[0], false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, - true, null, null))); + () -> service.createContext(new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, -1, null, null))); assertEquals( "Trying to retrieve too many docvalue_fields. Must be less than or equal to: [100] but was [101]. " + "This limit can be set by changing the [index.max_docvalue_fields_search] index level setting.", @@ -381,22 +377,23 @@ public class SearchServiceTests extends ESSingleNodeTestCase { final IndexService indexService = indicesService.indexServiceSafe(resolveIndex("index")); final IndexShard indexShard = indexService.getShard(0); + SearchRequest searchRequest = new SearchRequest().allowPartialSearchResults(true); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); + searchRequest.source(searchSourceBuilder); // adding the maximum allowed number of script_fields to retrieve int maxScriptFields = indexService.getIndexSettings().getMaxScriptFields(); for (int i = 0; i < maxScriptFields; i++) { searchSourceBuilder.scriptField("field" + i, new Script(ScriptType.INLINE, MockScriptEngine.NAME, CustomScriptPlugin.DUMMY_SCRIPT, Collections.emptyMap())); } - try (SearchContext context = service.createContext(new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.DEFAULT, - searchSourceBuilder, new String[0], false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, true, null, null))) { + try (SearchContext context = service.createContext(new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, -1, null, null))) { assertNotNull(context); searchSourceBuilder.scriptField("anotherScriptField", new Script(ScriptType.INLINE, MockScriptEngine.NAME, CustomScriptPlugin.DUMMY_SCRIPT, Collections.emptyMap())); IllegalArgumentException ex = expectThrows(IllegalArgumentException.class, - () -> service.createContext(new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.DEFAULT, - searchSourceBuilder, new String[0], false, new AliasFilter(null, Strings.EMPTY_ARRAY), - 1.0f, true, null, null))); + () -> service.createContext(new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, -1, null, null))); assertEquals( "Trying to retrieve too many script_fields. Must be less than or equal to: [" + maxScriptFields + "] but was [" + (maxScriptFields + 1) @@ -412,12 +409,14 @@ public class SearchServiceTests extends ESSingleNodeTestCase { final IndexService indexService = indicesService.indexServiceSafe(resolveIndex("index")); final IndexShard indexShard = indexService.getShard(0); + SearchRequest searchRequest = new SearchRequest().allowPartialSearchResults(true); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); + searchRequest.source(searchSourceBuilder); searchSourceBuilder.scriptField("field" + 0, new Script(ScriptType.INLINE, MockScriptEngine.NAME, CustomScriptPlugin.DUMMY_SCRIPT, Collections.emptyMap())); searchSourceBuilder.size(0); - try (SearchContext context = service.createContext(new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.DEFAULT, - searchSourceBuilder, new String[0], false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, true, null, null))) { + try (SearchContext context = service.createContext(new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1.0f, -1, null, null))) { assertEquals(0, context.scriptFields().fields().size()); } } @@ -515,13 +514,12 @@ public class SearchServiceTests extends ESSingleNodeTestCase { } } - public static class ShardScrollRequestTest extends ShardSearchLocalRequest { + private static class ShardScrollRequestTest extends ShardSearchLocalRequest { private Scroll scroll; ShardScrollRequestTest(ShardId shardId) { - super(shardId, 1, SearchType.DEFAULT, new SearchSourceBuilder(), - new String[0], false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, true, null, null); - + super(new SearchRequest().allowPartialSearchResults(true), + shardId, 1, new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null); this.scroll = new Scroll(TimeValue.timeValueMinutes(1)); } @@ -537,30 +535,30 @@ public class SearchServiceTests extends ESSingleNodeTestCase { final IndicesService indicesService = getInstanceFromNode(IndicesService.class); final IndexService indexService = indicesService.indexServiceSafe(resolveIndex("index")); final IndexShard indexShard = indexService.getShard(0); - final boolean allowPartialSearchResults = true; - assertTrue(service.canMatch(new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.QUERY_THEN_FETCH, null, - Strings.EMPTY_ARRAY, false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, allowPartialSearchResults, null, null))); + SearchRequest searchRequest = new SearchRequest().allowPartialSearchResults(true); + assertTrue(service.canMatch(new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); - assertTrue(service.canMatch(new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.QUERY_THEN_FETCH, - new SearchSourceBuilder(), Strings.EMPTY_ARRAY, false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, - allowPartialSearchResults, null, null))); + searchRequest.source(new SearchSourceBuilder()); + assertTrue(service.canMatch(new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); - assertTrue(service.canMatch(new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.QUERY_THEN_FETCH, - new SearchSourceBuilder().query(new MatchAllQueryBuilder()), Strings.EMPTY_ARRAY, false, - new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, allowPartialSearchResults, null, null))); + searchRequest.source(new SearchSourceBuilder().query(new MatchAllQueryBuilder())); + assertTrue(service.canMatch(new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); - assertTrue(service.canMatch(new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.QUERY_THEN_FETCH, - new SearchSourceBuilder().query(new MatchNoneQueryBuilder()) - .aggregation(new TermsAggregationBuilder("test", ValueType.STRING).minDocCount(0)), Strings.EMPTY_ARRAY, false, - new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, allowPartialSearchResults, null, null))); - assertTrue(service.canMatch(new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.QUERY_THEN_FETCH, - new SearchSourceBuilder().query(new MatchNoneQueryBuilder()) - .aggregation(new GlobalAggregationBuilder("test")), Strings.EMPTY_ARRAY, false, - new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, allowPartialSearchResults, null, null))); + searchRequest.source(new SearchSourceBuilder().query(new MatchNoneQueryBuilder()) + .aggregation(new TermsAggregationBuilder("test", ValueType.STRING).minDocCount(0))); + assertTrue(service.canMatch(new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); + searchRequest.source(new SearchSourceBuilder().query(new MatchNoneQueryBuilder()) + .aggregation(new GlobalAggregationBuilder("test"))); + assertTrue(service.canMatch(new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); - assertFalse(service.canMatch(new ShardSearchLocalRequest(indexShard.shardId(), 1, SearchType.QUERY_THEN_FETCH, - new SearchSourceBuilder().query(new MatchNoneQueryBuilder()), Strings.EMPTY_ARRAY, false, - new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, allowPartialSearchResults, null, null))); + searchRequest.source(new SearchSourceBuilder().query(new MatchNoneQueryBuilder())); + assertFalse(service.canMatch(new ShardSearchLocalRequest(searchRequest, indexShard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); } public void testCanRewriteToMatchNone() { @@ -607,8 +605,9 @@ public class SearchServiceTests extends ESSingleNodeTestCase { assertEquals("can not update private setting [index.search.throttled]; this setting is managed by Elasticsearch", iae.getMessage()); assertFalse(service.getIndicesService().indexServiceSafe(index).getIndexSettings().isSearchThrottled()); - ShardSearchLocalRequest req = new ShardSearchLocalRequest(new ShardId(index, 0), 1, SearchType.QUERY_THEN_FETCH, null, - Strings.EMPTY_ARRAY, false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, false, null, null); + SearchRequest searchRequest = new SearchRequest().allowPartialSearchResults(false); + ShardSearchLocalRequest req = new ShardSearchLocalRequest(searchRequest, new ShardId(index, 0), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null); Thread currentThread = Thread.currentThread(); // we still make sure can match is executed on the network thread service.canMatch(req, ActionListener.wrap(r -> assertSame(Thread.currentThread(), currentThread), e -> fail("unexpected"))); diff --git a/server/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java b/server/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java index 5cf7880ee32..f9d9c798216 100644 --- a/server/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java +++ b/server/src/test/java/org/elasticsearch/search/internal/ShardSearchTransportRequestTests.java @@ -64,7 +64,6 @@ public class ShardSearchTransportRequestTests extends AbstractSearchTestCase { assertArrayEquals(deserializedRequest.indices(), shardSearchTransportRequest.indices()); assertArrayEquals(deserializedRequest.types(), shardSearchTransportRequest.types()); assertEquals(deserializedRequest.indicesOptions(), shardSearchTransportRequest.indicesOptions()); - assertEquals(deserializedRequest.isProfile(), shardSearchTransportRequest.isProfile()); assertEquals(deserializedRequest.nowInMillis(), shardSearchTransportRequest.nowInMillis()); assertEquals(deserializedRequest.source(), shardSearchTransportRequest.source()); assertEquals(deserializedRequest.searchType(), shardSearchTransportRequest.searchType()); diff --git a/server/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java b/server/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java index 04fd5947e5f..bf053d34bff 100644 --- a/server/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java +++ b/server/src/test/java/org/elasticsearch/search/slice/SliceBuilderTests.java @@ -183,17 +183,7 @@ public class SliceBuilderTests extends ESTestCase { } @Override - public void setProfile(boolean profile) { - - } - - @Override - public boolean isProfile() { - return false; - } - - @Override - public BytesReference cacheKey() throws IOException { + public BytesReference cacheKey() { return null; } diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/index/engine/FrozenIndexTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/index/engine/FrozenIndexTests.java index 094c79efb50..12433f14b1c 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/index/engine/FrozenIndexTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/index/engine/FrozenIndexTests.java @@ -9,6 +9,7 @@ import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse; import org.elasticsearch.action.admin.indices.stats.IndicesStatsResponse; import org.elasticsearch.action.delete.DeleteResponse; +import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; import org.elasticsearch.action.support.IndicesOptions; @@ -248,21 +249,21 @@ public class FrozenIndexTests extends ESSingleNodeTestCase { IndexShard shard = indexService.getShard(0); assertFalse(indexService.getIndexSettings().isSearchThrottled()); SearchService searchService = getInstanceFromNode(SearchService.class); - assertTrue(searchService.canMatch(new ShardSearchLocalRequest(shard.shardId(), 1, SearchType.QUERY_THEN_FETCH, null, - Strings.EMPTY_ARRAY, false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, true, null, null))); + SearchRequest searchRequest = new SearchRequest().allowPartialSearchResults(true); + assertTrue(searchService.canMatch(new ShardSearchLocalRequest(searchRequest, shard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); + searchRequest.source(sourceBuilder); sourceBuilder.query(QueryBuilders.rangeQuery("field").gte("2010-01-03||+2d").lte("2010-01-04||+2d/d")); - assertTrue(searchService.canMatch(new ShardSearchLocalRequest(shard.shardId(), 1, SearchType.QUERY_THEN_FETCH, sourceBuilder, - Strings.EMPTY_ARRAY, false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, true, null, null))); + assertTrue(searchService.canMatch(new ShardSearchLocalRequest(searchRequest, shard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); - sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.rangeQuery("field").gt("2010-01-06T02:00").lt("2010-01-07T02:00")); - assertFalse(searchService.canMatch(new ShardSearchLocalRequest(shard.shardId(), 1, SearchType.QUERY_THEN_FETCH, sourceBuilder, - Strings.EMPTY_ARRAY, false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, true, null, null))); + assertFalse(searchService.canMatch(new ShardSearchLocalRequest(searchRequest, shard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); } - XPackClient xPackClient = new XPackClient(client()); assertAcked(xPackClient.freeze(new TransportFreezeIndexAction.FreezeRequest("index"))); { @@ -273,18 +274,19 @@ public class FrozenIndexTests extends ESSingleNodeTestCase { IndexShard shard = indexService.getShard(0); assertTrue(indexService.getIndexSettings().isSearchThrottled()); SearchService searchService = getInstanceFromNode(SearchService.class); - assertTrue(searchService.canMatch(new ShardSearchLocalRequest(shard.shardId(), 1, SearchType.QUERY_THEN_FETCH, null, - Strings.EMPTY_ARRAY, false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, true, null, null))); + SearchRequest searchRequest = new SearchRequest().allowPartialSearchResults(true); + assertTrue(searchService.canMatch(new ShardSearchLocalRequest(searchRequest, shard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.rangeQuery("field").gte("2010-01-03||+2d").lte("2010-01-04||+2d/d")); - assertTrue(searchService.canMatch(new ShardSearchLocalRequest(shard.shardId(), 1, SearchType.QUERY_THEN_FETCH, sourceBuilder, - Strings.EMPTY_ARRAY, false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, true, null, null))); + searchRequest.source(sourceBuilder); + assertTrue(searchService.canMatch(new ShardSearchLocalRequest(searchRequest, shard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); - sourceBuilder = new SearchSourceBuilder(); sourceBuilder.query(QueryBuilders.rangeQuery("field").gt("2010-01-06T02:00").lt("2010-01-07T02:00")); - assertFalse(searchService.canMatch(new ShardSearchLocalRequest(shard.shardId(), 1, SearchType.QUERY_THEN_FETCH, sourceBuilder, - Strings.EMPTY_ARRAY, false, new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, true, null, null))); + assertFalse(searchService.canMatch(new ShardSearchLocalRequest(searchRequest, shard.shardId(), 1, + new AliasFilter(null, Strings.EMPTY_ARRAY), 1f, -1, null, null))); IndicesStatsResponse response = client().admin().indices().prepareStats("index").clear().setRefresh(true).get(); assertEquals(0, response.getTotal().refresh.getTotal()); // never opened a reader