Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix a few more explicit SearchResponse uses in the server package #102031

Merged
merged 1 commit into from
Nov 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@
import org.elasticsearch.action.get.MultiGetRequest;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchTransportService;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.action.support.replication.TransportReplicationActionTests;
Expand Down Expand Up @@ -102,7 +101,7 @@
import java.util.function.Function;

import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailuresAndResponse;
import static org.hamcrest.Matchers.emptyIterable;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.greaterThan;
Expand Down Expand Up @@ -560,9 +559,10 @@ public void testSearchQueryThenFetch() throws Exception {
refresh();

SearchRequest searchRequest = new SearchRequest(randomIndicesOrAliases).searchType(SearchType.QUERY_THEN_FETCH);
SearchResponse searchResponse = internalCluster().coordOnlyNodeClient().search(searchRequest).actionGet();
assertNoFailures(searchResponse);
assertThat(searchResponse.getHits().getTotalHits().value, greaterThan(0L));
assertNoFailuresAndResponse(
internalCluster().coordOnlyNodeClient().search(searchRequest),
searchResponse -> assertThat(searchResponse.getHits().getTotalHits().value, greaterThan(0L))
);

clearInterceptedActions();
assertIndicesSubset(
Expand All @@ -589,9 +589,10 @@ public void testSearchDfsQueryThenFetch() throws Exception {
refresh();

SearchRequest searchRequest = new SearchRequest(randomIndicesOrAliases).searchType(SearchType.DFS_QUERY_THEN_FETCH);
SearchResponse searchResponse = internalCluster().coordOnlyNodeClient().search(searchRequest).actionGet();
assertNoFailures(searchResponse);
assertThat(searchResponse.getHits().getTotalHits().value, greaterThan(0L));
assertNoFailuresAndResponse(
internalCluster().coordOnlyNodeClient().search(searchRequest),
searchResponse -> assertThat(searchResponse.getHits().getTotalHits().value, greaterThan(0L))
);

clearInterceptedActions();
assertIndicesSubset(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import org.elasticsearch.action.bulk.BulkAction;
import org.elasticsearch.action.index.IndexAction;
import org.elasticsearch.action.search.SearchAction;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchTransportService;
import org.elasticsearch.action.support.WriteRequest;
import org.elasticsearch.action.support.replication.ReplicationResponse;
Expand Down Expand Up @@ -83,6 +82,7 @@
import static org.elasticsearch.core.TimeValue.timeValueSeconds;
import static org.elasticsearch.http.HttpTransportSettings.SETTING_HTTP_MAX_HEADER_SIZE;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertFutureThrows;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures;
import static org.hamcrest.Matchers.allOf;
import static org.hamcrest.Matchers.containsString;
Expand Down Expand Up @@ -771,17 +771,19 @@ public void testTaskStoringSuccessfulResult() throws Exception {

assertNoFailures(indicesAdmin().prepareRefresh(TaskResultsService.TASK_INDEX).get());

SearchResponse searchResponse = prepareSearch(TaskResultsService.TASK_INDEX).setSource(
SearchSourceBuilder.searchSource().query(QueryBuilders.termQuery("task.action", taskInfo.action()))
).get();

assertEquals(1L, searchResponse.getHits().getTotalHits().value);

searchResponse = prepareSearch(TaskResultsService.TASK_INDEX).setSource(
SearchSourceBuilder.searchSource().query(QueryBuilders.termQuery("task.node", taskInfo.taskId().getNodeId()))
).get();
assertHitCount(
prepareSearch(TaskResultsService.TASK_INDEX).setSource(
SearchSourceBuilder.searchSource().query(QueryBuilders.termQuery("task.action", taskInfo.action()))
),
1L
);

assertEquals(1L, searchResponse.getHits().getTotalHits().value);
assertHitCount(
prepareSearch(TaskResultsService.TASK_INDEX).setSource(
SearchSourceBuilder.searchSource().query(QueryBuilders.termQuery("task.node", taskInfo.taskId().getNodeId()))
),
1L
);

GetTaskResponse getResponse = expectFinishedTask(taskId);
assertEquals(result, getResponse.getTask().getResponseAsMap());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.metadata.IndexMetadata;
Expand Down Expand Up @@ -60,7 +60,8 @@
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertHitCount;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailures;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertNoFailuresAndResponse;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertResponse;
import static org.elasticsearch.xcontent.XContentFactory.jsonBuilder;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.equalTo;
Expand Down Expand Up @@ -243,27 +244,28 @@ private void splitToN(int sourceShards, int firstSplitShards, int secondSplitSha
assertNested("first_split", numDocs);
assertNested("second_split", numDocs);
}
assertAllUniqueDocs(prepareSearch("second_split").setSize(100).setQuery(new TermsQueryBuilder("foo", "bar")).get(), numDocs);
assertAllUniqueDocs(prepareSearch("first_split").setSize(100).setQuery(new TermsQueryBuilder("foo", "bar")).get(), numDocs);
assertAllUniqueDocs(prepareSearch("source").setSize(100).setQuery(new TermsQueryBuilder("foo", "bar")).get(), numDocs);
assertAllUniqueDocs(prepareSearch("second_split").setSize(100).setQuery(new TermsQueryBuilder("foo", "bar")), numDocs);
assertAllUniqueDocs(prepareSearch("first_split").setSize(100).setQuery(new TermsQueryBuilder("foo", "bar")), numDocs);
assertAllUniqueDocs(prepareSearch("source").setSize(100).setQuery(new TermsQueryBuilder("foo", "bar")), numDocs);
}

public void assertNested(String index, int numDocs) {
// now, do a nested query
SearchResponse searchResponse = prepareSearch(index).setQuery(
nestedQuery("nested1", termQuery("nested1.n_field1", "n_value1_1"), ScoreMode.Avg)
).get();
assertNoFailures(searchResponse);
assertThat(searchResponse.getHits().getTotalHits().value, equalTo((long) numDocs));
assertNoFailuresAndResponse(
prepareSearch(index).setQuery(nestedQuery("nested1", termQuery("nested1.n_field1", "n_value1_1"), ScoreMode.Avg)),
searchResponse -> assertThat(searchResponse.getHits().getTotalHits().value, equalTo((long) numDocs))
);
}

public void assertAllUniqueDocs(SearchResponse response, int numDocs) {
Set<String> ids = new HashSet<>();
for (int i = 0; i < response.getHits().getHits().length; i++) {
String id = response.getHits().getHits()[i].getId();
assertTrue("found ID " + id + " more than once", ids.add(id));
}
assertEquals(numDocs, ids.size());
public void assertAllUniqueDocs(SearchRequestBuilder request, int numDocs) {
assertResponse(request, response -> {
Set<String> ids = new HashSet<>();
for (int i = 0; i < response.getHits().getHits().length; i++) {
String id = response.getHits().getHits()[i].getId();
assertTrue("found ID " + id + " more than once", ids.add(id));
}
assertEquals(numDocs, ids.size());
});
}

public void testSplitIndexPrimaryTerm() throws Exception {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import org.elasticsearch.action.ActionListener;
import org.elasticsearch.action.DocWriteRequest;
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.core.Tuple;
import org.elasticsearch.index.query.QueryBuilders;
Expand All @@ -26,6 +25,7 @@
import java.util.concurrent.TimeUnit;

import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertResponse;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.lessThan;
import static org.hamcrest.Matchers.lessThanOrEqualTo;
Expand Down Expand Up @@ -136,15 +136,17 @@ public void afterBulk(long executionId, BulkRequest request, Exception failure)

indicesAdmin().refresh(new RefreshRequest()).get();

SearchResponse results = prepareSearch(INDEX_NAME).setQuery(QueryBuilders.matchAllQuery()).setSize(0).get();
assertThat(bulkProcessor.getTotalBytesInFlight(), equalTo(0L));
if (rejectedExecutionExpected) {
assertThat((int) results.getHits().getTotalHits().value, lessThanOrEqualTo(numberOfAsyncOps));
} else if (rejectedAfterAllRetries) {
assertThat((int) results.getHits().getTotalHits().value, lessThan(numberOfAsyncOps));
} else {
assertThat((int) results.getHits().getTotalHits().value, equalTo(numberOfAsyncOps));
}
final boolean finalRejectedAfterAllRetries = rejectedAfterAllRetries;
assertResponse(prepareSearch(INDEX_NAME).setQuery(QueryBuilders.matchAllQuery()).setSize(0), results -> {
assertThat(bulkProcessor.getTotalBytesInFlight(), equalTo(0L));
if (rejectedExecutionExpected) {
assertThat((int) results.getHits().getTotalHits().value, lessThanOrEqualTo(numberOfAsyncOps));
} else if (finalRejectedAfterAllRetries) {
assertThat((int) results.getHits().getTotalHits().value, lessThan(numberOfAsyncOps));
} else {
assertThat((int) results.getHits().getTotalHits().value, equalTo(numberOfAsyncOps));
}
});
}

private static void indexDocs(BulkProcessor2 processor, int numDocs) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

import org.elasticsearch.ExceptionsHelper;
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.index.query.QueryBuilders;
Expand All @@ -25,6 +24,7 @@
import java.util.concurrent.TimeUnit;

import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertResponse;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.lessThan;
import static org.hamcrest.Matchers.lessThanOrEqualTo;
Expand Down Expand Up @@ -131,15 +131,16 @@ public void afterBulk(long executionId, BulkRequest request, Throwable failure)

indicesAdmin().refresh(new RefreshRequest()).get();

SearchResponse results = prepareSearch(INDEX_NAME).setQuery(QueryBuilders.matchAllQuery()).setSize(0).get();

if (rejectedExecutionExpected) {
assertThat((int) results.getHits().getTotalHits().value, lessThanOrEqualTo(numberOfAsyncOps));
} else if (rejectedAfterAllRetries) {
assertThat((int) results.getHits().getTotalHits().value, lessThan(numberOfAsyncOps));
} else {
assertThat((int) results.getHits().getTotalHits().value, equalTo(numberOfAsyncOps));
}
final boolean finalRejectedAfterAllRetries = rejectedAfterAllRetries;
assertResponse(prepareSearch(INDEX_NAME).setQuery(QueryBuilders.matchAllQuery()).setSize(0), results -> {
if (rejectedExecutionExpected) {
assertThat((int) results.getHits().getTotalHits().value, lessThanOrEqualTo(numberOfAsyncOps));
} else if (finalRejectedAfterAllRetries) {
assertThat((int) results.getHits().getTotalHits().value, lessThan(numberOfAsyncOps));
} else {
assertThat((int) results.getHits().getTotalHits().value, equalTo(numberOfAsyncOps));
}
});
}

private void assertRetriedCorrectly(CorrelatingBackoffPolicy internalPolicy, Object bulkResponse, Throwable failure) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
package org.elasticsearch.action.bulk;

import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.core.TimeValue;
import org.elasticsearch.test.ESIntegTestCase;
Expand All @@ -18,6 +17,8 @@
import java.util.ArrayList;
import java.util.List;

import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertResponse;

public class WriteAckDelayIT extends ESIntegTestCase {

@Override
Expand All @@ -42,17 +43,18 @@ public void testIndexWithWriteDelayEnabled() throws Exception {
for (int j = 0; j < numOfChecks; j++) {
try {
logger.debug("running search");
SearchResponse response = prepareSearch("test").get();
if (response.getHits().getTotalHits().value != numOfDocs) {
final String message = "Count is "
+ response.getHits().getTotalHits().value
+ " but "
+ numOfDocs
+ " was expected. "
+ ElasticsearchAssertions.formatShardStatus(response);
logger.error("{}. search response: \n{}", message, response);
fail(message);
}
assertResponse(prepareSearch("test"), response -> {
if (response.getHits().getTotalHits().value != numOfDocs) {
final String message = "Count is "
+ response.getHits().getTotalHits().value
+ " but "
+ numOfDocs
+ " was expected. "
+ ElasticsearchAssertions.formatShardStatus(response);
logger.error("{}. search response: \n{}", message, response);
fail(message);
}
});
} catch (Exception e) {
logger.error("search failed", e);
throw e;
Expand Down
Loading