Fix AsyncSearchTaskTests#testWithFetchFailures

Fix usage of a possible invalid random range [1, 0].

Relates #55688
This commit is contained in:
jimczi 2020-04-24 00:43:23 +02:00
parent 31d1727698
commit c857adf603
2 changed files with 6 additions and 17 deletions

View File

@ -149,7 +149,6 @@ public class AsyncSearchTaskTests extends ESTestCase {
newSearchResponse(numShards+numSkippedShards, numShards, numSkippedShards)); newSearchResponse(numShards+numSkippedShards, numShards, numSkippedShards));
assertCompletionListeners(task, numShards+numSkippedShards, assertCompletionListeners(task, numShards+numSkippedShards,
numSkippedShards, numShardFailures, false); numSkippedShards, numShardFailures, false);
threadPool.shutdownNow();
} }
public void testWithFetchFailures() throws InterruptedException { public void testWithFetchFailures() throws InterruptedException {
@ -173,7 +172,7 @@ public class AsyncSearchTaskTests extends ESTestCase {
} }
task.getSearchProgressActionListener().onFinalReduce(shards, task.getSearchProgressActionListener().onFinalReduce(shards,
new TotalHits(0, TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO), null, 0); new TotalHits(0, TotalHits.Relation.GREATER_THAN_OR_EQUAL_TO), null, 0);
int numFetchFailures = randomIntBetween(1, numShards); int numFetchFailures = randomIntBetween(0, numShards);
for (int i = 0; i < numFetchFailures; i++) { for (int i = 0; i < numFetchFailures; i++) {
task.getSearchProgressActionListener().onFetchFailure(i, task.getSearchProgressActionListener().onFetchFailure(i,
new SearchShardTarget("0", new ShardId("0", "0", 1), null, OriginalIndices.NONE), new SearchShardTarget("0", new ShardId("0", "0", 1), null, OriginalIndices.NONE),
@ -185,7 +184,6 @@ public class AsyncSearchTaskTests extends ESTestCase {
newSearchResponse(numShards+numSkippedShards, numShards, numSkippedShards)); newSearchResponse(numShards+numSkippedShards, numShards, numSkippedShards));
assertCompletionListeners(task, numShards+numSkippedShards, assertCompletionListeners(task, numShards+numSkippedShards,
numSkippedShards, numFetchFailures, false); numSkippedShards, numFetchFailures, false);
threadPool.shutdownNow();
} }
private static SearchResponse newSearchResponse(int totalShards, int successfulShards, int skippedShards) { private static SearchResponse newSearchResponse(int totalShards, int successfulShards, int skippedShards) {

View File

@ -7,7 +7,6 @@ package org.elasticsearch.xpack.core.search.action;
import org.elasticsearch.ElasticsearchException; import org.elasticsearch.ElasticsearchException;
import org.elasticsearch.ExceptionsHelper; import org.elasticsearch.ExceptionsHelper;
import org.elasticsearch.Version;
import org.elasticsearch.action.ActionResponse; import org.elasticsearch.action.ActionResponse;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.common.Nullable; import org.elasticsearch.common.Nullable;
@ -78,11 +77,7 @@ public class AsyncSearchResponse extends ActionResponse implements StatusToXCont
public AsyncSearchResponse(StreamInput in) throws IOException { public AsyncSearchResponse(StreamInput in) throws IOException {
this.id = in.readOptionalString(); this.id = in.readOptionalString();
if (in.getVersion().onOrAfter(Version.V_8_0_0)) { this.error = in.readBoolean() ? in.readException() : null;
this.error = in.readBoolean() ? in.readException() : null;
} else {
this.error = in.readOptionalWriteable(ElasticsearchException::new);
}
this.searchResponse = in.readOptionalWriteable(SearchResponse::new); this.searchResponse = in.readOptionalWriteable(SearchResponse::new);
this.isPartial = in.readBoolean(); this.isPartial = in.readBoolean();
this.isRunning = in.readBoolean(); this.isRunning = in.readBoolean();
@ -93,15 +88,11 @@ public class AsyncSearchResponse extends ActionResponse implements StatusToXCont
@Override @Override
public void writeTo(StreamOutput out) throws IOException { public void writeTo(StreamOutput out) throws IOException {
out.writeOptionalString(id); out.writeOptionalString(id);
if (out.getVersion().onOrAfter(Version.V_8_0_0)) { if (error != null) {
if (error != null) { out.writeBoolean(true);
out.writeBoolean(true); out.writeException(error);
out.writeException(error);
} else {
out.writeBoolean(false);
}
} else { } else {
out.writeOptionalWriteable(ExceptionsHelper.convertToElastic(error)); out.writeBoolean(false);
} }
out.writeOptionalWriteable(searchResponse); out.writeOptionalWriteable(searchResponse);
out.writeBoolean(isPartial); out.writeBoolean(isPartial);