diff --git a/modules/reindex/src/main/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollAction.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollAction.java index 2f873cc71a425..19dd94b5518e9 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollAction.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollAction.java @@ -36,9 +36,7 @@ import org.elasticsearch.index.reindex.AbstractBulkByScrollRequest; import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.BulkByScrollTask; -import org.elasticsearch.index.reindex.ClientScrollablePaginatedHitSource; -import org.elasticsearch.index.reindex.PaginatedHitSource; -import org.elasticsearch.index.reindex.PaginatedHitSource.SearchFailure; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.index.reindex.ResumeInfo; import org.elasticsearch.index.reindex.ResumeInfo.WorkerResumeInfo; import org.elasticsearch.index.reindex.WorkerBulkByScrollTaskState; @@ -318,7 +316,7 @@ protected PaginatedHitSource buildScrollableResultSource(BackoffPolicy backoffPo protected BulkByScrollResponse buildResponse( TimeValue took, List indexingFailures, - List searchFailures, + List searchFailures, boolean timedOut ) { return new BulkByScrollResponse(took, task.getStatus(), indexingFailures, searchFailures, timedOut); @@ -611,7 +609,7 @@ private void recordFailure(Failure failure, List failures) { * Start terminating a request that finished non-catastrophically by refreshing the modified indices and then proceeding to * {@link #finishHim(Exception, List, List, boolean)}. */ - void refreshAndFinish(List indexingFailures, List searchFailures, boolean timedOut) { + void refreshAndFinish(List indexingFailures, List searchFailures, boolean timedOut) { if (task.isCancelled() || false == mainRequest.isRefresh() || destinationIndices.isEmpty()) { finishHim(null, indexingFailures, searchFailures, timedOut); return; @@ -649,7 +647,12 @@ protected void finishHim(Exception failure) { * @param searchFailures any search failures accumulated during the request * @param timedOut have any of the sub-requests timed out? */ - protected void finishHim(Exception failure, List indexingFailures, List searchFailures, boolean timedOut) { + protected void finishHim( + Exception failure, + List indexingFailures, + List searchFailures, + boolean timedOut + ) { logger.debug("[{}]: finishing without any catastrophic failures", task.getId()); paginatedHitSource.close(threadPool.getThreadContext().preserveContext(() -> { if (failure == null) { diff --git a/modules/reindex/src/main/java/org/elasticsearch/reindex/AsyncDeleteByQueryAction.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/AsyncDeleteByQueryAction.java index 1b4181cee0a63..bacd066b49b90 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/reindex/AsyncDeleteByQueryAction.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/AsyncDeleteByQueryAction.java @@ -16,7 +16,6 @@ import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.BulkByScrollTask; import org.elasticsearch.index.reindex.DeleteByQueryRequest; -import org.elasticsearch.index.reindex.PaginatedHitSource; import org.elasticsearch.script.ScriptService; import org.elasticsearch.threadpool.ThreadPool; diff --git a/modules/reindex/src/main/java/org/elasticsearch/reindex/BulkIndexByScrollResponseContentListener.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/BulkIndexByScrollResponseContentListener.java index 4e7d600c41700..a83d039e62646 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/reindex/BulkIndexByScrollResponseContentListener.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/BulkIndexByScrollResponseContentListener.java @@ -11,7 +11,7 @@ import org.elasticsearch.action.bulk.BulkItemResponse.Failure; import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.elasticsearch.index.reindex.PaginatedHitSource.SearchFailure; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.rest.RestChannel; import org.elasticsearch.rest.RestResponse; import org.elasticsearch.rest.RestStatus; @@ -55,7 +55,7 @@ private static RestStatus getStatus(BulkByScrollResponse response) { status = failure.getStatus(); } } - for (SearchFailure failure : response.getSearchFailures()) { + for (PaginatedSearchFailure failure : response.getSearchFailures()) { RestStatus failureStatus = failure.getStatus(); if (failureStatus.getStatus() > status.getStatus()) { status = failureStatus; diff --git a/server/src/main/java/org/elasticsearch/index/reindex/ClientScrollablePaginatedHitSource.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/ClientScrollablePaginatedHitSource.java similarity index 96% rename from server/src/main/java/org/elasticsearch/index/reindex/ClientScrollablePaginatedHitSource.java rename to modules/reindex/src/main/java/org/elasticsearch/reindex/ClientScrollablePaginatedHitSource.java index 2222f42268187..333a5f29cd419 100644 --- a/server/src/main/java/org/elasticsearch/index/reindex/ClientScrollablePaginatedHitSource.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/ClientScrollablePaginatedHitSource.java @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.index.reindex; +package org.elasticsearch.reindex; import org.apache.logging.log4j.Logger; import org.elasticsearch.ExceptionsHelper; @@ -27,6 +27,8 @@ import org.elasticsearch.common.xcontent.XContentHelper; import org.elasticsearch.core.TimeValue; import org.elasticsearch.index.mapper.RoutingFieldMapper; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; +import org.elasticsearch.index.reindex.RejectAwareActionListener; import org.elasticsearch.index.reindex.ResumeInfo.ScrollWorkerResumeInfo; import org.elasticsearch.index.reindex.ResumeInfo.WorkerResumeInfo; import org.elasticsearch.search.SearchHit; @@ -143,14 +145,14 @@ protected void cleanup(Runnable onCompletion) { } private static Response wrapSearchResponse(SearchResponse response) { - List failures; + List failures; if (response.getShardFailures() == null) { failures = emptyList(); } else { failures = new ArrayList<>(response.getShardFailures().length); for (ShardSearchFailure failure : response.getShardFailures()) { String nodeId = failure.shard() == null ? null : failure.shard().getNodeId(); - failures.add(new SearchFailure(failure.getCause(), failure.index(), failure.shardId(), nodeId)); + failures.add(new PaginatedSearchFailure(failure.getCause(), failure.index(), failure.shardId(), nodeId)); } } List hits; diff --git a/server/src/main/java/org/elasticsearch/index/reindex/PaginatedHitSource.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/PaginatedHitSource.java similarity index 71% rename from server/src/main/java/org/elasticsearch/index/reindex/PaginatedHitSource.java rename to modules/reindex/src/main/java/org/elasticsearch/reindex/PaginatedHitSource.java index 4340a17597480..731670d0b0ec6 100644 --- a/server/src/main/java/org/elasticsearch/index/reindex/PaginatedHitSource.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/PaginatedHitSource.java @@ -7,39 +7,29 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.index.reindex; +package org.elasticsearch.reindex; import org.apache.logging.log4j.Logger; -import org.elasticsearch.ElasticsearchException; -import org.elasticsearch.ExceptionsHelper; import org.elasticsearch.action.ActionListener; -import org.elasticsearch.action.bulk.BulkItemResponse; -import org.elasticsearch.action.search.ShardSearchFailure; import org.elasticsearch.common.BackoffPolicy; import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesReference; -import org.elasticsearch.common.io.stream.StreamInput; -import org.elasticsearch.common.io.stream.StreamOutput; -import org.elasticsearch.common.io.stream.Writeable; import org.elasticsearch.core.Nullable; import org.elasticsearch.core.TimeValue; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; +import org.elasticsearch.index.reindex.RejectAwareActionListener; import org.elasticsearch.index.reindex.ResumeInfo.WorkerResumeInfo; +import org.elasticsearch.index.reindex.RetryListener; import org.elasticsearch.index.seqno.SequenceNumbers; -import org.elasticsearch.rest.RestStatus; import org.elasticsearch.search.SearchHit; import org.elasticsearch.threadpool.ThreadPool; -import org.elasticsearch.xcontent.ToXContentObject; -import org.elasticsearch.xcontent.XContentBuilder; import org.elasticsearch.xcontent.XContentType; -import java.io.IOException; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; -import static java.util.Objects.requireNonNull; - /** * A source of paginated search results. Pumps data out into the passed onResponse consumer. If a scrollable search is used, then the * same data may come out several times in case of failures during searching (though not yet). Once the onResponse consumer is done, @@ -195,12 +185,18 @@ public interface AsyncResponse { */ public static class Response { private final boolean timedOut; - private final List failures; + private final List failures; private final long totalHits; private final List hits; private final String scrollId; - public Response(boolean timedOut, List failures, long totalHits, List hits, String scrollId) { + public Response( + boolean timedOut, + List failures, + long totalHits, + List hits, + String scrollId + ) { this.timedOut = timedOut; this.failures = failures; this.totalHits = totalHits; @@ -218,7 +214,7 @@ public boolean isTimedOut() { /** * Where there any search failures? */ - public final List getFailures() { + public final List getFailures() { return failures; } @@ -374,117 +370,4 @@ public void setPrimaryTerm(long primaryTerm) { this.primaryTerm = primaryTerm; } } - - /** - * A failure during search. Like {@link ShardSearchFailure} but useful for reindex from remote as well. - */ - public static class SearchFailure implements Writeable, ToXContentObject { - private final Throwable reason; - private final RestStatus status; - @Nullable - private final String index; - @Nullable - private final Integer shardId; - @Nullable - private final String nodeId; - - public static final String INDEX_FIELD = "index"; - public static final String SHARD_FIELD = "shard"; - public static final String NODE_FIELD = "node"; - public static final String REASON_FIELD = "reason"; - public static final String STATUS_FIELD = BulkItemResponse.Failure.STATUS_FIELD; - - public SearchFailure(Throwable reason, @Nullable String index, @Nullable Integer shardId, @Nullable String nodeId) { - this(reason, index, shardId, nodeId, ExceptionsHelper.status(reason)); - } - - public SearchFailure( - Throwable reason, - @Nullable String index, - @Nullable Integer shardId, - @Nullable String nodeId, - RestStatus status - ) { - this.index = index; - this.shardId = shardId; - this.reason = requireNonNull(reason, "reason cannot be null"); - this.nodeId = nodeId; - this.status = status; - } - - /** - * Build a search failure that doesn't have shard information available. - */ - public SearchFailure(Throwable reason) { - this(reason, null, null, null); - } - - /** - * Read from a stream. - */ - public SearchFailure(StreamInput in) throws IOException { - reason = in.readException(); - index = in.readOptionalString(); - shardId = in.readOptionalVInt(); - nodeId = in.readOptionalString(); - status = ExceptionsHelper.status(reason); - } - - @Override - public void writeTo(StreamOutput out) throws IOException { - out.writeException(reason); - out.writeOptionalString(index); - out.writeOptionalVInt(shardId); - out.writeOptionalString(nodeId); - } - - public String getIndex() { - return index; - } - - public Integer getShardId() { - return shardId; - } - - public RestStatus getStatus() { - return this.status; - } - - public Throwable getReason() { - return reason; - } - - @Nullable - public String getNodeId() { - return nodeId; - } - - @Override - public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { - builder.startObject(); - if (index != null) { - builder.field(INDEX_FIELD, index); - } - if (shardId != null) { - builder.field(SHARD_FIELD, shardId); - } - if (nodeId != null) { - builder.field(NODE_FIELD, nodeId); - } - builder.field(STATUS_FIELD, status.getStatus()); - builder.field(REASON_FIELD); - { - builder.startObject(); - ElasticsearchException.generateThrowableXContent(builder, params, reason); - builder.endObject(); - } - builder.endObject(); - return builder; - } - - @Override - public String toString() { - return Strings.toString(this); - } - } } diff --git a/modules/reindex/src/main/java/org/elasticsearch/reindex/Reindexer.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/Reindexer.java index cae082e8ddaac..76739854eb15a 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/reindex/Reindexer.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/Reindexer.java @@ -57,7 +57,7 @@ import org.elasticsearch.index.mapper.IdFieldMapper; import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.BulkByScrollTask; -import org.elasticsearch.index.reindex.PaginatedHitSource; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.index.reindex.ReindexAction; import org.elasticsearch.index.reindex.ReindexRequest; import org.elasticsearch.index.reindex.RejectAwareActionListener; @@ -435,7 +435,7 @@ public void onResponse(BulkByScrollResponse bulkByScrollResponse) { var searchExceptionSample = Optional.ofNullable(bulkByScrollResponse.getSearchFailures()) .stream() .flatMap(List::stream) - .map(PaginatedHitSource.SearchFailure::getReason) + .map(PaginatedSearchFailure::getReason) .findFirst(); var bulkExceptionSample = Optional.ofNullable(bulkByScrollResponse.getBulkFailures()) .stream() @@ -748,7 +748,7 @@ protected PaginatedHitSource buildScrollableResultSource(BackoffPolicy backoffPo protected void finishHim( Exception failure, List indexingFailures, - List searchFailures, + List searchFailures, boolean timedOut ) { super.finishHim(failure, indexingFailures, searchFailures, timedOut); diff --git a/modules/reindex/src/main/java/org/elasticsearch/reindex/TransportUpdateByQueryAction.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/TransportUpdateByQueryAction.java index be7fafdc94b90..345f665191e24 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/reindex/TransportUpdateByQueryAction.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/TransportUpdateByQueryAction.java @@ -21,7 +21,6 @@ import org.elasticsearch.core.Nullable; import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.BulkByScrollTask; -import org.elasticsearch.index.reindex.PaginatedHitSource; import org.elasticsearch.index.reindex.UpdateByQueryAction; import org.elasticsearch.index.reindex.UpdateByQueryRequest; import org.elasticsearch.index.reindex.WorkerBulkByScrollTaskState; diff --git a/modules/reindex/src/main/java/org/elasticsearch/reindex/remote/RemoteResponseParsers.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/remote/RemoteResponseParsers.java index b03d6c9e59b06..34d9e83bcd39c 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/reindex/remote/RemoteResponseParsers.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/remote/RemoteResponseParsers.java @@ -16,10 +16,10 @@ import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.util.concurrent.EsRejectedExecutionException; import org.elasticsearch.core.Tuple; -import org.elasticsearch.index.reindex.PaginatedHitSource.BasicHit; -import org.elasticsearch.index.reindex.PaginatedHitSource.Hit; -import org.elasticsearch.index.reindex.PaginatedHitSource.Response; -import org.elasticsearch.index.reindex.PaginatedHitSource.SearchFailure; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; +import org.elasticsearch.reindex.PaginatedHitSource.BasicHit; +import org.elasticsearch.reindex.PaginatedHitSource.Hit; +import org.elasticsearch.reindex.PaginatedHitSource.Response; import org.elasticsearch.search.SearchHits; import org.elasticsearch.xcontent.ConstructingObjectParser; import org.elasticsearch.xcontent.ObjectParser; @@ -112,7 +112,7 @@ class Fields { /** * Parser for {@code failed} shards in the {@code _shards} elements. */ - public static final ConstructingObjectParser SEARCH_FAILURE_PARSER = new ConstructingObjectParser<>( + public static final ConstructingObjectParser SEARCH_FAILURE_PARSER = new ConstructingObjectParser<>( "failure", true, a -> { @@ -128,7 +128,7 @@ class Fields { } else { reasonThrowable = (Throwable) reason; } - return new SearchFailure(reasonThrowable, index, shardId, nodeId); + return new PaginatedSearchFailure(reasonThrowable, index, shardId, nodeId); } ); static { @@ -169,13 +169,13 @@ class Fields { int i = 0; Throwable catastrophicFailure = (Throwable) a[i++]; if (catastrophicFailure != null) { - return new Response(false, singletonList(new SearchFailure(catastrophicFailure)), 0, emptyList(), null); + return new Response(false, singletonList(new PaginatedSearchFailure(catastrophicFailure)), 0, emptyList(), null); } boolean timedOut = (boolean) a[i++]; String scroll = (String) a[i++]; Object[] hitsElement = (Object[]) a[i++]; @SuppressWarnings("unchecked") - List failures = (List) a[i++]; + List failures = (List) a[i++]; long totalHits = 0; List hits = emptyList(); diff --git a/modules/reindex/src/main/java/org/elasticsearch/reindex/remote/RemoteScrollablePaginatedHitSource.java b/modules/reindex/src/main/java/org/elasticsearch/reindex/remote/RemoteScrollablePaginatedHitSource.java index cf5dd07e111ec..d6f1b457bf25d 100644 --- a/modules/reindex/src/main/java/org/elasticsearch/reindex/remote/RemoteScrollablePaginatedHitSource.java +++ b/modules/reindex/src/main/java/org/elasticsearch/reindex/remote/RemoteScrollablePaginatedHitSource.java @@ -21,11 +21,12 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.core.Nullable; import org.elasticsearch.core.TimeValue; -import org.elasticsearch.index.reindex.PaginatedHitSource; import org.elasticsearch.index.reindex.RejectAwareActionListener; import org.elasticsearch.index.reindex.RemoteInfo; import org.elasticsearch.index.reindex.ResumeInfo.ScrollWorkerResumeInfo; import org.elasticsearch.index.reindex.ResumeInfo.WorkerResumeInfo; +import org.elasticsearch.reindex.ClientScrollablePaginatedHitSource; +import org.elasticsearch.reindex.PaginatedHitSource; import org.elasticsearch.threadpool.ThreadPool; import java.io.IOException; @@ -45,7 +46,7 @@ * initial search. It is no longer recommended for deep pagination due to resource costs and limits on open scrolls. *

* This implementation is a scrollable source of hits from a remote {@linkplain Client} instance. For local - * clients, please use {@link org.elasticsearch.index.reindex.ClientScrollablePaginatedHitSource} + * clients, please use {@link ClientScrollablePaginatedHitSource} */ public class RemoteScrollablePaginatedHitSource extends PaginatedHitSource { private final RestClient client; diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollActionMetadataTestCase.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollActionMetadataTestCase.java index a384b0f766f3c..5dd6a59e784ac 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollActionMetadataTestCase.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollActionMetadataTestCase.java @@ -12,7 +12,6 @@ import org.elasticsearch.index.reindex.AbstractAsyncBulkByScrollActionTestCase; import org.elasticsearch.index.reindex.AbstractBulkByScrollRequest; import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.elasticsearch.index.reindex.PaginatedHitSource; public abstract class AbstractAsyncBulkByScrollActionMetadataTestCase< Request extends AbstractBulkByScrollRequest, diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollActionScriptTestCase.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollActionScriptTestCase.java index 6fe1767428ba0..5726d83d20f10 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollActionScriptTestCase.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/AbstractAsyncBulkByScrollActionScriptTestCase.java @@ -15,7 +15,6 @@ import org.elasticsearch.index.reindex.AbstractAsyncBulkByScrollActionTestCase; import org.elasticsearch.index.reindex.AbstractBulkIndexByScrollRequest; import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.elasticsearch.index.reindex.PaginatedHitSource; import org.elasticsearch.reindex.AbstractAsyncBulkByScrollAction.RequestWrapper; import org.elasticsearch.script.ReindexScript; import org.elasticsearch.script.ScriptService; diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/AsyncBulkByScrollActionTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/AsyncBulkByScrollActionTests.java index 1c532df578cfb..666c9d4d0fc31 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/AsyncBulkByScrollActionTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/AsyncBulkByScrollActionTests.java @@ -59,13 +59,11 @@ import org.elasticsearch.index.reindex.AbstractBulkByScrollRequest; import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.BulkByScrollTask; -import org.elasticsearch.index.reindex.ClientScrollablePaginatedHitSource; -import org.elasticsearch.index.reindex.PaginatedHitSource; -import org.elasticsearch.index.reindex.PaginatedHitSource.Hit; -import org.elasticsearch.index.reindex.PaginatedHitSource.SearchFailure; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.index.reindex.ResumeInfo; import org.elasticsearch.index.reindex.WorkerBulkByScrollTaskState; import org.elasticsearch.index.shard.ShardId; +import org.elasticsearch.reindex.PaginatedHitSource.Hit; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; @@ -429,7 +427,7 @@ public ScheduledCancellable schedule(Runnable command, TimeValue delay, Executor * scroll request going down. */ public void testShardFailuresAbortRequest() throws Exception { - SearchFailure shardFailure = new SearchFailure(new RuntimeException("test")); + PaginatedSearchFailure shardFailure = new PaginatedSearchFailure(new RuntimeException("test")); PaginatedHitSource.Response scrollResponse = new PaginatedHitSource.Response( false, singletonList(shardFailure), diff --git a/server/src/test/java/org/elasticsearch/index/reindex/BasicHitTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/BasicHitTests.java similarity index 95% rename from server/src/test/java/org/elasticsearch/index/reindex/BasicHitTests.java rename to modules/reindex/src/test/java/org/elasticsearch/reindex/BasicHitTests.java index 24cf3b8ecd2b4..0cb110dabe71a 100644 --- a/server/src/test/java/org/elasticsearch/index/reindex/BasicHitTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/BasicHitTests.java @@ -7,11 +7,11 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.index.reindex; +package org.elasticsearch.reindex; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.bytes.BytesReference; -import org.elasticsearch.index.reindex.PaginatedHitSource.BasicHit; +import org.elasticsearch.reindex.PaginatedHitSource.BasicHit; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.xcontent.XContentType; @@ -25,7 +25,7 @@ public void testConstructor() { String index = randomAlphaOfLengthBetween(3, 10); String id = randomAlphaOfLengthBetween(3, 10); long version = randomNonNegativeLong(); - PaginatedHitSource.BasicHit hit = new BasicHit(index, id, version); + BasicHit hit = new BasicHit(index, id, version); assertEquals(index, hit.getIndex()); assertEquals(id, hit.getId()); diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/BulkIndexByScrollResponseTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/BulkIndexByScrollResponseTests.java index 39e0651a9b30f..fd540efd79dca 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/BulkIndexByScrollResponseTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/BulkIndexByScrollResponseTests.java @@ -13,7 +13,7 @@ import org.elasticsearch.core.TimeValue; import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.BulkByScrollTask; -import org.elasticsearch.index.reindex.PaginatedHitSource.SearchFailure; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.test.ESTestCase; import java.util.ArrayList; @@ -31,7 +31,7 @@ public void testMergeConstructor() { int took = between(1000, 10000); int tookIndex = between(0, mergeCount - 1); List allBulkFailures = new ArrayList<>(); - List allSearchFailures = new ArrayList<>(); + List allSearchFailures = new ArrayList<>(); boolean timedOut = false; String reasonCancelled = rarely() ? randomAlphaOfLength(5) : null; @@ -62,9 +62,9 @@ public void testMergeConstructor() { .mapToObj(j -> new BulkItemResponse.Failure("idx", "id", new Exception())) .collect(Collectors.toList()); allBulkFailures.addAll(bulkFailures); - List searchFailures = frequently() + List searchFailures = frequently() ? emptyList() - : IntStream.range(0, between(1, 3)).mapToObj(j -> new SearchFailure(new Exception())).collect(Collectors.toList()); + : IntStream.range(0, between(1, 3)).mapToObj(j -> new PaginatedSearchFailure(new Exception())).collect(Collectors.toList()); allSearchFailures.addAll(searchFailures); boolean thisTimedOut = rarely(); timedOut |= thisTimedOut; diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/ClientScrollablePaginatedHitSourceTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/ClientScrollablePaginatedHitSourceTests.java index 3ed9bc2b70fb5..2b0edc4698365 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/ClientScrollablePaginatedHitSourceTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/ClientScrollablePaginatedHitSourceTests.java @@ -30,8 +30,6 @@ import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.concurrent.EsRejectedExecutionException; import org.elasticsearch.core.TimeValue; -import org.elasticsearch.index.reindex.ClientScrollablePaginatedHitSource; -import org.elasticsearch.index.reindex.PaginatedHitSource; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.elasticsearch.search.SearchResponseUtils; diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexIdTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexIdTests.java index dbdff2c0a74b4..15468e06c47fb 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexIdTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexIdTests.java @@ -25,7 +25,6 @@ import org.elasticsearch.index.IndexVersion; import org.elasticsearch.index.reindex.AbstractAsyncBulkByScrollActionTestCase; import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.elasticsearch.index.reindex.PaginatedHitSource; import org.elasticsearch.index.reindex.ReindexRequest; import org.elasticsearch.xcontent.XContentType; diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexMetadataTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexMetadataTests.java index ea0b44de0078e..4f44816c40d4f 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexMetadataTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexMetadataTests.java @@ -14,8 +14,8 @@ import org.elasticsearch.cluster.ClusterState; import org.elasticsearch.cluster.metadata.Metadata; import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.elasticsearch.index.reindex.PaginatedHitSource.Hit; import org.elasticsearch.index.reindex.ReindexRequest; +import org.elasticsearch.reindex.PaginatedHitSource.Hit; /** * Reindex test for routing. diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexerTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexerTests.java index e4f7c5e66ed4e..e89dd452d7e3c 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexerTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/ReindexerTests.java @@ -49,7 +49,7 @@ import org.elasticsearch.features.FeatureService; import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.BulkByScrollTask; -import org.elasticsearch.index.reindex.PaginatedHitSource; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.index.reindex.ReindexRequest; import org.elasticsearch.index.reindex.RemoteInfo; import org.elasticsearch.index.reindex.ResumeBulkByScrollRequest; @@ -170,7 +170,7 @@ public void testWrapWithMetricsSearchFailure() { Exception anotherException = new Exception("another failure"); BulkByScrollResponse response = reindexResponseWithBulkAndSearchFailures( null, - List.of(new PaginatedHitSource.SearchFailure(exception), new PaginatedHitSource.SearchFailure(anotherException)) + List.of(new PaginatedSearchFailure(exception), new PaginatedSearchFailure(anotherException)) ); wrapped.onResponse(response); @@ -1204,7 +1204,7 @@ public ExecutorService executor(String name) { private BulkByScrollResponse reindexResponseWithBulkAndSearchFailures( final List bulkFailures, - List searchFailures + List searchFailures ) { return new BulkByScrollResponse( TimeValue.ZERO, diff --git a/server/src/test/java/org/elasticsearch/index/reindex/ResponseTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/ResponseTests.java similarity index 81% rename from server/src/test/java/org/elasticsearch/index/reindex/ResponseTests.java rename to modules/reindex/src/test/java/org/elasticsearch/reindex/ResponseTests.java index 8a80dd6c6cc76..572651da308eb 100644 --- a/server/src/test/java/org/elasticsearch/index/reindex/ResponseTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/ResponseTests.java @@ -7,12 +7,12 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.index.reindex; +package org.elasticsearch.reindex; -import org.elasticsearch.index.reindex.PaginatedHitSource.BasicHit; -import org.elasticsearch.index.reindex.PaginatedHitSource.Hit; -import org.elasticsearch.index.reindex.PaginatedHitSource.Response; -import org.elasticsearch.index.reindex.PaginatedHitSource.SearchFailure; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; +import org.elasticsearch.reindex.PaginatedHitSource.BasicHit; +import org.elasticsearch.reindex.PaginatedHitSource.Hit; +import org.elasticsearch.reindex.PaginatedHitSource.Response; import org.elasticsearch.test.ESTestCase; import java.util.ArrayList; @@ -26,7 +26,7 @@ public class ResponseTests extends ESTestCase { */ public void testConstructor() { boolean timedOut = randomBoolean(); - List failures = randomBoolean() ? Collections.emptyList() : randomFailures(); + List failures = randomBoolean() ? Collections.emptyList() : randomFailures(); long totalHits = randomNonNegativeLong(); List hits = randomBoolean() ? Collections.emptyList() : randomHits(); String scrollId = randomAlphaOfLengthBetween(3, 20); @@ -43,19 +43,19 @@ public void testConstructor() { * Verifies that providing null values for optional collections is preserved and returned as-is by the getters. */ public void testNullCollectionsArePreserved() { - List failures = null; + List failures = null; List hits = null; Response response = new Response(randomBoolean(), failures, randomNonNegativeLong(), hits, randomAlphaOfLengthBetween(3, 20)); assertNull(response.getFailures()); assertNull(response.getHits()); } - private static List randomFailures() { + private static List randomFailures() { int size = randomIntBetween(1, 5); - List failures = new ArrayList<>(size); + List failures = new ArrayList<>(size); for (int i = 0; i < size; i++) { failures.add( - new SearchFailure( + new PaginatedSearchFailure( new IllegalStateException(randomAlphaOfLengthBetween(5, 20)), randomBoolean() ? randomAlphaOfLengthBetween(3, 10) : null, randomBoolean() ? randomIntBetween(0, 10) : null, diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/UpdateByQueryMetadataTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/UpdateByQueryMetadataTests.java index 239377d780173..79e587210066a 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/UpdateByQueryMetadataTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/UpdateByQueryMetadataTests.java @@ -11,8 +11,8 @@ import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.elasticsearch.index.reindex.PaginatedHitSource.Hit; import org.elasticsearch.index.reindex.UpdateByQueryRequest; +import org.elasticsearch.reindex.PaginatedHitSource.Hit; public class UpdateByQueryMetadataTests extends AbstractAsyncBulkByScrollActionMetadataTestCase< UpdateByQueryRequest, diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/UpdateByQueryVersionTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/UpdateByQueryVersionTests.java index 1169bd324f4fc..c5902a58ff083 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/UpdateByQueryVersionTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/UpdateByQueryVersionTests.java @@ -10,8 +10,8 @@ package org.elasticsearch.reindex; import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.elasticsearch.index.reindex.PaginatedHitSource.Hit; import org.elasticsearch.index.reindex.UpdateByQueryRequest; +import org.elasticsearch.reindex.PaginatedHitSource.Hit; public class UpdateByQueryVersionTests extends AbstractAsyncBulkByScrollActionMetadataTestCase { diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/remote/RemoteResponseParsersTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/remote/RemoteResponseParsersTests.java index 05cba4c635e28..b05301f45194f 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/remote/RemoteResponseParsersTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/remote/RemoteResponseParsersTests.java @@ -13,7 +13,7 @@ import org.elasticsearch.action.search.ShardSearchFailure; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.util.concurrent.EsRejectedExecutionException; -import org.elasticsearch.index.reindex.PaginatedHitSource; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.xcontent.ToXContent; import org.elasticsearch.xcontent.XContentBuilder; @@ -39,7 +39,7 @@ public void testFailureWithoutIndex() throws IOException { XContentBuilder builder = jsonBuilder(); failure.toXContent(builder, ToXContent.EMPTY_PARAMS); try (XContentParser parser = createParser(builder)) { - PaginatedHitSource.SearchFailure parsed = RemoteResponseParsers.SEARCH_FAILURE_PARSER.parse(parser, null); + PaginatedSearchFailure parsed = RemoteResponseParsers.SEARCH_FAILURE_PARSER.parse(parser, null); assertNotNull(parsed.getReason()); assertThat(parsed.getReason().getMessage(), Matchers.containsString("exhausted")); assertThat(parsed.getReason(), Matchers.instanceOf(EsRejectedExecutionException.class)); diff --git a/modules/reindex/src/test/java/org/elasticsearch/reindex/remote/RemoteScrollablePaginatedHitSourceTests.java b/modules/reindex/src/test/java/org/elasticsearch/reindex/remote/RemoteScrollablePaginatedHitSourceTests.java index 86bc38585a795..43d13f943872a 100644 --- a/modules/reindex/src/test/java/org/elasticsearch/reindex/remote/RemoteScrollablePaginatedHitSourceTests.java +++ b/modules/reindex/src/test/java/org/elasticsearch/reindex/remote/RemoteScrollablePaginatedHitSourceTests.java @@ -40,10 +40,10 @@ import org.elasticsearch.common.util.concurrent.EsExecutors; import org.elasticsearch.common.util.concurrent.EsRejectedExecutionException; import org.elasticsearch.core.TimeValue; -import org.elasticsearch.index.reindex.PaginatedHitSource; -import org.elasticsearch.index.reindex.PaginatedHitSource.Response; import org.elasticsearch.index.reindex.RejectAwareActionListener; import org.elasticsearch.index.reindex.RemoteInfo; +import org.elasticsearch.reindex.PaginatedHitSource; +import org.elasticsearch.reindex.PaginatedHitSource.Response; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.test.ESTestCase; diff --git a/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollResponse.java b/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollResponse.java index 320d7902b810a..75f654cc89f62 100644 --- a/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollResponse.java +++ b/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollResponse.java @@ -35,7 +35,7 @@ public class BulkByScrollResponse extends ActionResponse implements ToXContentFr private final TimeValue took; private final BulkByScrollTask.Status status; private final List bulkFailures; - private final List searchFailures; + private final List searchFailures; private boolean timedOut; @Nullable private final ResumeInfo resumeInfo; // only used on the local node so not serialized in transport @@ -48,7 +48,7 @@ public BulkByScrollResponse(StreamInput in) throws IOException { took = in.readTimeValue(); status = new BulkByScrollTask.Status(in); bulkFailures = in.readCollectionAsList(Failure::new); - searchFailures = in.readCollectionAsList(PaginatedHitSource.SearchFailure::new); + searchFailures = in.readCollectionAsList(PaginatedSearchFailure::new); timedOut = in.readBoolean(); resumeInfo = null; } @@ -57,7 +57,7 @@ public BulkByScrollResponse( TimeValue took, BulkByScrollTask.Status status, List bulkFailures, - List searchFailures, + List searchFailures, boolean timedOut ) { this(took, status, bulkFailures, searchFailures, timedOut, null); @@ -67,7 +67,7 @@ public BulkByScrollResponse( TimeValue took, BulkByScrollTask.Status status, List bulkFailures, - List searchFailures, + List searchFailures, boolean timedOut, @Nullable ResumeInfo resumeInfo ) { @@ -163,7 +163,7 @@ public List getBulkFailures() { /** * All search failures. */ - public List getSearchFailures() { + public List getSearchFailures() { return searchFailures; } @@ -202,7 +202,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws failure.toXContent(builder, params); builder.endObject(); } - for (PaginatedHitSource.SearchFailure failure : searchFailures) { + for (PaginatedSearchFailure failure : searchFailures) { failure.toXContent(builder, params); } builder.endArray(); diff --git a/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollResponseBuilder.java b/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollResponseBuilder.java index 4b3cf47570b2a..44f05d303d6ae 100644 --- a/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollResponseBuilder.java +++ b/server/src/main/java/org/elasticsearch/index/reindex/BulkByScrollResponseBuilder.java @@ -12,7 +12,6 @@ import org.elasticsearch.action.bulk.BulkItemResponse.Failure; import org.elasticsearch.core.TimeValue; import org.elasticsearch.index.reindex.BulkByScrollTask.StatusBuilder; -import org.elasticsearch.index.reindex.PaginatedHitSource.SearchFailure; import org.elasticsearch.xcontent.ObjectParser; import java.util.ArrayList; @@ -26,7 +25,7 @@ class BulkByScrollResponseBuilder extends StatusBuilder { private TimeValue took; private BulkByScrollTask.Status status; private List bulkFailures = new ArrayList<>(); - private List searchFailures = new ArrayList<>(); + private List searchFailures = new ArrayList<>(); private boolean timedOut; BulkByScrollResponseBuilder() {} @@ -48,8 +47,8 @@ public void setFailures(List failures) { for (Object object : failures) { if (object instanceof Failure) { bulkFailures.add((Failure) object); - } else if (object instanceof SearchFailure) { - searchFailures.add((SearchFailure) object); + } else if (object instanceof PaginatedSearchFailure) { + searchFailures.add((PaginatedSearchFailure) object); } } } diff --git a/server/src/main/java/org/elasticsearch/index/reindex/PaginatedSearchFailure.java b/server/src/main/java/org/elasticsearch/index/reindex/PaginatedSearchFailure.java new file mode 100644 index 0000000000000..0aae9239a6ef0 --- /dev/null +++ b/server/src/main/java/org/elasticsearch/index/reindex/PaginatedSearchFailure.java @@ -0,0 +1,140 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +package org.elasticsearch.index.reindex; + +import org.elasticsearch.ElasticsearchException; +import org.elasticsearch.ExceptionsHelper; +import org.elasticsearch.action.bulk.BulkItemResponse; +import org.elasticsearch.action.search.ShardSearchFailure; +import org.elasticsearch.common.Strings; +import org.elasticsearch.common.io.stream.StreamInput; +import org.elasticsearch.common.io.stream.StreamOutput; +import org.elasticsearch.common.io.stream.Writeable; +import org.elasticsearch.core.Nullable; +import org.elasticsearch.rest.RestStatus; +import org.elasticsearch.xcontent.ToXContentObject; +import org.elasticsearch.xcontent.XContentBuilder; + +import java.io.IOException; + +import static java.util.Objects.requireNonNull; + +/** + * A failure during paginated search. Like {@link ShardSearchFailure} but useful for reindex from remote as well. + */ +public class PaginatedSearchFailure implements Writeable, ToXContentObject { + private final Throwable reason; + private final RestStatus status; + @Nullable + private final String index; + @Nullable + private final Integer shardId; + @Nullable + private final String nodeId; + + public static final String INDEX_FIELD = "index"; + public static final String SHARD_FIELD = "shard"; + public static final String NODE_FIELD = "node"; + public static final String REASON_FIELD = "reason"; + public static final String STATUS_FIELD = BulkItemResponse.Failure.STATUS_FIELD; + + public PaginatedSearchFailure(Throwable reason, @Nullable String index, @Nullable Integer shardId, @Nullable String nodeId) { + this(reason, index, shardId, nodeId, ExceptionsHelper.status(reason)); + } + + public PaginatedSearchFailure( + Throwable reason, + @Nullable String index, + @Nullable Integer shardId, + @Nullable String nodeId, + RestStatus status + ) { + this.index = index; + this.shardId = shardId; + this.reason = requireNonNull(reason, "reason cannot be null"); + this.nodeId = nodeId; + this.status = status; + } + + /** + * Build a search failure that doesn't have shard information available. + */ + public PaginatedSearchFailure(Throwable reason) { + this(reason, null, null, null); + } + + /** + * Read from a stream. + */ + public PaginatedSearchFailure(StreamInput in) throws IOException { + reason = in.readException(); + index = in.readOptionalString(); + shardId = in.readOptionalVInt(); + nodeId = in.readOptionalString(); + status = ExceptionsHelper.status(reason); + } + + @Override + public void writeTo(StreamOutput out) throws IOException { + out.writeException(reason); + out.writeOptionalString(index); + out.writeOptionalVInt(shardId); + out.writeOptionalString(nodeId); + } + + public String getIndex() { + return index; + } + + public Integer getShardId() { + return shardId; + } + + public RestStatus getStatus() { + return this.status; + } + + public Throwable getReason() { + return reason; + } + + @Nullable + public String getNodeId() { + return nodeId; + } + + @Override + public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { + builder.startObject(); + if (index != null) { + builder.field(INDEX_FIELD, index); + } + if (shardId != null) { + builder.field(SHARD_FIELD, shardId); + } + if (nodeId != null) { + builder.field(NODE_FIELD, nodeId); + } + builder.field(STATUS_FIELD, status.getStatus()); + builder.field(REASON_FIELD); + { + builder.startObject(); + ElasticsearchException.generateThrowableXContent(builder, params, reason); + builder.endObject(); + } + builder.endObject(); + return builder; + } + + @Override + public String toString() { + return Strings.toString(this); + } +} diff --git a/server/src/test/java/org/elasticsearch/index/reindex/BulkByScrollResponseTests.java b/server/src/test/java/org/elasticsearch/index/reindex/BulkByScrollResponseTests.java index 2b295f49fa2ad..bc6824ab0cd80 100644 --- a/server/src/test/java/org/elasticsearch/index/reindex/BulkByScrollResponseTests.java +++ b/server/src/test/java/org/elasticsearch/index/reindex/BulkByScrollResponseTests.java @@ -70,7 +70,7 @@ private static Object parseFailure(XContentParser parser) throws IOException { parser.skipChildren(); } else if (token == XContentParser.Token.START_OBJECT) { switch (name) { - case PaginatedHitSource.SearchFailure.REASON_FIELD -> searchExc = ElasticsearchException.fromXContent(parser); + case PaginatedSearchFailure.REASON_FIELD -> searchExc = ElasticsearchException.fromXContent(parser); case Failure.CAUSE_FIELD -> bulkExc = ElasticsearchException.fromXContent(parser); default -> parser.skipChildren(); } @@ -79,12 +79,12 @@ private static Object parseFailure(XContentParser parser) throws IOException { // This field is the same as SearchFailure.index case Failure.INDEX_FIELD -> index = parser.text(); case Failure.ID_FIELD -> id = parser.text(); - case PaginatedHitSource.SearchFailure.NODE_FIELD -> nodeId = parser.text(); + case PaginatedSearchFailure.NODE_FIELD -> nodeId = parser.text(); } } else if (token == XContentParser.Token.VALUE_NUMBER) { switch (name) { case Failure.STATUS_FIELD -> status = parser.intValue(); - case PaginatedHitSource.SearchFailure.SHARD_FIELD -> shardId = parser.intValue(); + case PaginatedSearchFailure.SHARD_FIELD -> shardId = parser.intValue(); } } } @@ -92,9 +92,9 @@ private static Object parseFailure(XContentParser parser) throws IOException { return new Failure(index, id, bulkExc, RestStatus.fromCode(status)); } else if (searchExc != null) { if (status == null) { - return new PaginatedHitSource.SearchFailure(searchExc, index, shardId, nodeId); + return new PaginatedSearchFailure(searchExc, index, shardId, nodeId); } else { - return new PaginatedHitSource.SearchFailure(searchExc, index, shardId, nodeId, RestStatus.fromCode(status)); + return new PaginatedSearchFailure(searchExc, index, shardId, nodeId, RestStatus.fromCode(status)); } } else { throw new ElasticsearchParseException("failed to parse failures array. At least one of {reason,cause} must be present"); @@ -111,7 +111,7 @@ private List randomIndexingFailures() { : singletonList(new Failure(randomSimpleString(random()), randomSimpleString(random()), new IllegalArgumentException("test"))); } - private List randomSearchFailures() { + private List randomSearchFailures() { if (randomBoolean()) { return emptyList(); } @@ -128,7 +128,7 @@ private List randomSearchFailures() { new ElasticsearchException("foo"), new NoNodeAvailableException("baz") ); - return singletonList(new PaginatedHitSource.SearchFailure(exception, index, shardId, nodeId)); + return singletonList(new PaginatedSearchFailure(exception, index, shardId, nodeId)); } public static void assertEqualBulkResponse( @@ -149,8 +149,8 @@ public static void assertEqualBulkResponse( } assertEquals(expected.getSearchFailures().size(), actual.getSearchFailures().size()); for (int i = 0; i < expected.getSearchFailures().size(); i++) { - PaginatedHitSource.SearchFailure expectedFailure = expected.getSearchFailures().get(i); - PaginatedHitSource.SearchFailure actualFailure = actual.getSearchFailures().get(i); + PaginatedSearchFailure expectedFailure = expected.getSearchFailures().get(i); + PaginatedSearchFailure actualFailure = actual.getSearchFailures().get(i); assertEquals(expectedFailure.getIndex(), actualFailure.getIndex()); assertEquals(expectedFailure.getShardId(), actualFailure.getShardId()); assertEquals(expectedFailure.getNodeId(), actualFailure.getNodeId()); diff --git a/server/src/test/java/org/elasticsearch/index/reindex/BulkByScrollResponseWireSerializingTests.java b/server/src/test/java/org/elasticsearch/index/reindex/BulkByScrollResponseWireSerializingTests.java index 8f4117536ea95..55ff11f3b6f12 100644 --- a/server/src/test/java/org/elasticsearch/index/reindex/BulkByScrollResponseWireSerializingTests.java +++ b/server/src/test/java/org/elasticsearch/index/reindex/BulkByScrollResponseWireSerializingTests.java @@ -156,22 +156,22 @@ static Exception randomException() { ); } - private List randomSearchFailures() { + private List randomSearchFailures() { return randomList(0, 5, this::randomSearchFailure); } - private List mutateSearchFailures(List searchFailures) { - List newFailures = new ArrayList<>(searchFailures); + private List mutateSearchFailures(List searchFailures) { + List newFailures = new ArrayList<>(searchFailures); newFailures.add(randomSearchFailure()); return newFailures; } - private PaginatedHitSource.SearchFailure randomSearchFailure() { + private PaginatedSearchFailure randomSearchFailure() { Throwable reason = randomException(); String index = randomBoolean() ? randomAlphaOfLengthBetween(1, 10) : null; Integer shardId = randomBoolean() ? randomIntBetween(0, 100) : null; String nodeId = randomBoolean() ? randomAlphaOfLengthBetween(1, 10) : null; - return new PaginatedHitSource.SearchFailure(reason, index, shardId, nodeId); + return new PaginatedSearchFailure(reason, index, shardId, nodeId); } /** @@ -271,8 +271,8 @@ private static boolean responsesEqual(BulkByScrollResponse a, BulkByScrollRespon if (a.getSearchFailures().size() != b.getSearchFailures().size()) return false; for (int i = 0; i < a.getSearchFailures().size(); i++) { - PaginatedHitSource.SearchFailure fa = a.getSearchFailures().get(i); - PaginatedHitSource.SearchFailure fb = b.getSearchFailures().get(i); + PaginatedSearchFailure fa = a.getSearchFailures().get(i); + PaginatedSearchFailure fb = b.getSearchFailures().get(i); if (Objects.equals(fa.getIndex(), fb.getIndex()) == false) return false; if (Objects.equals(fa.getShardId(), fb.getShardId()) == false) return false; if (Objects.equals(fa.getNodeId(), fb.getNodeId()) == false) return false; diff --git a/server/src/test/java/org/elasticsearch/index/reindex/SearchFailureTests.java b/server/src/test/java/org/elasticsearch/index/reindex/PaginatedSearchFailureTests.java similarity index 67% rename from server/src/test/java/org/elasticsearch/index/reindex/SearchFailureTests.java rename to server/src/test/java/org/elasticsearch/index/reindex/PaginatedSearchFailureTests.java index a65e0adc1d9a4..b1464f32fa4db 100644 --- a/server/src/test/java/org/elasticsearch/index/reindex/SearchFailureTests.java +++ b/server/src/test/java/org/elasticsearch/index/reindex/PaginatedSearchFailureTests.java @@ -13,22 +13,28 @@ import org.elasticsearch.ExceptionsHelper; import org.elasticsearch.common.Strings; import org.elasticsearch.common.xcontent.XContentHelper; -import org.elasticsearch.index.reindex.PaginatedHitSource.SearchFailure; import org.elasticsearch.test.ESTestCase; import org.elasticsearch.xcontent.XContentType; import java.util.Map; +import static org.elasticsearch.index.reindex.PaginatedSearchFailure.INDEX_FIELD; +import static org.elasticsearch.index.reindex.PaginatedSearchFailure.NODE_FIELD; +import static org.elasticsearch.index.reindex.PaginatedSearchFailure.REASON_FIELD; +import static org.elasticsearch.index.reindex.PaginatedSearchFailure.SHARD_FIELD; +import static org.elasticsearch.index.reindex.PaginatedSearchFailure.STATUS_FIELD; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasKey; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; -public class SearchFailureTests extends ESTestCase { +public class PaginatedSearchFailureTests extends ESTestCase { public void testConstructorWithReasonOnly() { Throwable reason = randomException(); - SearchFailure failure = new SearchFailure(reason); + PaginatedSearchFailure failure = new PaginatedSearchFailure(reason); assertSame(reason, failure.getReason()); assertNull(failure.getIndex()); assertNull(failure.getShardId()); @@ -41,7 +47,7 @@ public void testConstructorWithAllFields() { String index = randomAlphaOfLengthBetween(3, 10); Integer shardId = randomIntBetween(0, 100); String nodeId = randomAlphaOfLengthBetween(3, 10); - SearchFailure failure = new SearchFailure(reason, index, shardId, nodeId); + PaginatedSearchFailure failure = new PaginatedSearchFailure(reason, index, shardId, nodeId); assertSame(reason, failure.getReason()); assertEquals(index, failure.getIndex()); assertEquals(shardId, failure.getShardId()); @@ -55,29 +61,29 @@ public void testToXContentIncludesExpectedFields() { String index = randomAlphaOfLengthBetween(3, 10); Integer shardId = randomIntBetween(0, 10); String nodeId = randomAlphaOfLengthBetween(3, 10); - SearchFailure failure = new SearchFailure(reason, index, shardId, nodeId); + PaginatedSearchFailure failure = new PaginatedSearchFailure(reason, index, shardId, nodeId); String json = Strings.toString(failure); Map map = XContentHelper.convertToMap(XContentType.JSON.xContent(), json, false); - assertThat(map.get(SearchFailure.INDEX_FIELD), equalTo(index)); - assertThat(map.get(SearchFailure.SHARD_FIELD), equalTo(shardId)); - assertThat(map.get(SearchFailure.NODE_FIELD), equalTo(nodeId)); - assertThat(map.get(SearchFailure.STATUS_FIELD), equalTo(failure.getStatus().getStatus())); - assertThat(map, hasKey(SearchFailure.REASON_FIELD)); + assertThat(map.get(INDEX_FIELD), equalTo(index)); + assertThat(map.get(SHARD_FIELD), equalTo(shardId)); + assertThat(map.get(NODE_FIELD), equalTo(nodeId)); + assertThat(map.get(STATUS_FIELD), equalTo(failure.getStatus().getStatus())); + assertThat(map, hasKey(REASON_FIELD)); @SuppressWarnings("unchecked") - Map reasonMap = (Map) map.get(SearchFailure.REASON_FIELD); + Map reasonMap = (Map) map.get(REASON_FIELD); assertThat(reasonMap.get("type"), notNullValue()); assertThat(reasonMap.get("reason"), equalTo(message)); } public void testToXContentOmitsNullOptionalFields() { - SearchFailure failure = new SearchFailure(randomException()); + PaginatedSearchFailure failure = new PaginatedSearchFailure(randomException()); String json = Strings.toString(failure); Map map = XContentHelper.convertToMap(XContentType.JSON.xContent(), json, false); - assertThat(map, not(hasKey(SearchFailure.INDEX_FIELD))); - assertThat(map, not(hasKey(SearchFailure.SHARD_FIELD))); - assertThat(map, not(hasKey(SearchFailure.NODE_FIELD))); - assertThat(map, hasKey(SearchFailure.STATUS_FIELD)); - assertThat(map, hasKey(SearchFailure.REASON_FIELD)); + assertThat(map, not(hasKey(INDEX_FIELD))); + assertThat(map, not(hasKey(SHARD_FIELD))); + assertThat(map, not(hasKey(NODE_FIELD))); + assertThat(map, hasKey(STATUS_FIELD)); + assertThat(map, hasKey(REASON_FIELD)); } public static Throwable randomException() { diff --git a/server/src/test/java/org/elasticsearch/index/reindex/SearchFailureWireSerialisationTests.java b/server/src/test/java/org/elasticsearch/index/reindex/PaginatedSearchFailureWireSerialisationTests.java similarity index 63% rename from server/src/test/java/org/elasticsearch/index/reindex/SearchFailureWireSerialisationTests.java rename to server/src/test/java/org/elasticsearch/index/reindex/PaginatedSearchFailureWireSerialisationTests.java index 6c27e7f44e725..b3d8928d91a3a 100644 --- a/server/src/test/java/org/elasticsearch/index/reindex/SearchFailureWireSerialisationTests.java +++ b/server/src/test/java/org/elasticsearch/index/reindex/PaginatedSearchFailureWireSerialisationTests.java @@ -13,57 +13,56 @@ import org.elasticsearch.common.io.stream.StreamInput; import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.Writeable; -import org.elasticsearch.index.reindex.PaginatedHitSource.SearchFailure; import org.elasticsearch.test.AbstractWireSerializingTestCase; import java.io.IOException; import java.util.Objects; -import static org.elasticsearch.index.reindex.SearchFailureTests.randomException; +import static org.elasticsearch.index.reindex.PaginatedSearchFailureTests.randomException; -public class SearchFailureWireSerialisationTests extends AbstractWireSerializingTestCase< - SearchFailureWireSerialisationTests.SearchFailureWrapper> { +public class PaginatedSearchFailureWireSerialisationTests extends AbstractWireSerializingTestCase< + PaginatedSearchFailureWireSerialisationTests.PaginatedSearchFailureWrapper> { @Override - protected SearchFailureWrapper createTestInstance() { + protected PaginatedSearchFailureWrapper createTestInstance() { Throwable reason = randomException(); String index = randomBoolean() ? randomAlphaOfLengthBetween(1, 10) : null; Integer shardId = randomBoolean() ? randomIntBetween(0, 100) : null; String nodeId = randomBoolean() ? randomAlphaOfLengthBetween(1, 10) : null; - return new SearchFailureWrapper(new SearchFailure(reason, index, shardId, nodeId)); + return new PaginatedSearchFailureWrapper(new PaginatedSearchFailure(reason, index, shardId, nodeId)); } @Override - protected Writeable.Reader instanceReader() { - return SearchFailureWrapper::new; + protected Writeable.Reader instanceReader() { + return PaginatedSearchFailureWrapper::new; } @Override - protected SearchFailureWrapper mutateInstance(SearchFailureWrapper instance) { - return new SearchFailureWrapper(mutateSearchFailure(instance.failure())); + protected PaginatedSearchFailureWrapper mutateInstance(PaginatedSearchFailureWrapper instance) { + return new PaginatedSearchFailureWrapper(mutateSearchFailure(instance.failure())); } /** - * Wrapper around {@link SearchFailure} used exclusively for wire-serialization tests. + * Wrapper around {@link PaginatedSearchFailure} used exclusively for wire-serialization tests. *

* {@link AbstractWireSerializingTestCase} requires instances to be comparable via - * {@code equals}/{@code hashCode()}, but {@link SearchFailure} does not define + * {@code equals}/{@code hashCode()}, but {@link PaginatedSearchFailure} does not define * suitable semantic equality due to its embedded {@link Throwable}. *

* This wrapper provides stable, test-only equality semantics without leaking * test concerns into production code. */ - static final class SearchFailureWrapper implements Writeable { - private final SearchFailure failure; + static final class PaginatedSearchFailureWrapper implements Writeable { + private final PaginatedSearchFailure failure; - SearchFailureWrapper(SearchFailure failure) { + PaginatedSearchFailureWrapper(PaginatedSearchFailure failure) { this.failure = failure; } - SearchFailureWrapper(StreamInput in) throws IOException { - this.failure = new SearchFailure(in); + PaginatedSearchFailureWrapper(StreamInput in) throws IOException { + this.failure = new PaginatedSearchFailure(in); } - SearchFailure failure() { + PaginatedSearchFailure failure() { return failure; } @@ -76,7 +75,7 @@ public void writeTo(StreamOutput out) throws IOException { public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - SearchFailureWrapper that = (SearchFailureWrapper) o; + PaginatedSearchFailureWrapper that = (PaginatedSearchFailureWrapper) o; return failuresEqual(failure, that.failure); } @@ -92,7 +91,7 @@ public int hashCode() { ); } - private static boolean failuresEqual(SearchFailure a, SearchFailure b) { + private static boolean failuresEqual(PaginatedSearchFailure a, PaginatedSearchFailure b) { return Objects.equals(a.getIndex(), b.getIndex()) && Objects.equals(a.getShardId(), b.getShardId()) && Objects.equals(a.getNodeId(), b.getNodeId()) @@ -102,7 +101,7 @@ private static boolean failuresEqual(SearchFailure a, SearchFailure b) { } } - static SearchFailure mutateSearchFailure(SearchFailure instance) { + static PaginatedSearchFailure mutateSearchFailure(PaginatedSearchFailure instance) { int fieldToMutate = randomIntBetween(0, 3); return switch (fieldToMutate) { case 0 -> { @@ -111,7 +110,7 @@ static SearchFailure mutateSearchFailure(SearchFailure instance) { newReason = randomException(); } while (newReason.getClass().equals(instance.getReason().getClass()) && Objects.equals(newReason.getMessage(), instance.getReason().getMessage())); - yield new SearchFailure( + yield new PaginatedSearchFailure( newReason, instance.getIndex(), instance.getShardId(), @@ -123,19 +122,37 @@ yield new SearchFailure( String newIndex = instance.getIndex() == null ? randomAlphaOfLengthBetween(1, 10) : randomValueOtherThan(instance.getIndex(), () -> randomAlphaOfLengthBetween(1, 10)); - yield new SearchFailure(instance.getReason(), newIndex, instance.getShardId(), instance.getNodeId(), instance.getStatus()); + yield new PaginatedSearchFailure( + instance.getReason(), + newIndex, + instance.getShardId(), + instance.getNodeId(), + instance.getStatus() + ); } case 2 -> { Integer newShardId = instance.getShardId() == null ? randomIntBetween(0, 100) : randomValueOtherThan(instance.getShardId(), () -> randomIntBetween(0, 100)); - yield new SearchFailure(instance.getReason(), instance.getIndex(), newShardId, instance.getNodeId(), instance.getStatus()); + yield new PaginatedSearchFailure( + instance.getReason(), + instance.getIndex(), + newShardId, + instance.getNodeId(), + instance.getStatus() + ); } case 3 -> { String newNodeId = instance.getNodeId() == null ? randomAlphaOfLengthBetween(1, 10) : randomValueOtherThan(instance.getNodeId(), () -> randomAlphaOfLengthBetween(1, 10)); - yield new SearchFailure(instance.getReason(), instance.getIndex(), instance.getShardId(), newNodeId, instance.getStatus()); + yield new PaginatedSearchFailure( + instance.getReason(), + instance.getIndex(), + instance.getShardId(), + newNodeId, + instance.getStatus() + ); } default -> throw new AssertionError("Unknown field index [" + fieldToMutate + "]"); }; diff --git a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPolicyRunner.java b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPolicyRunner.java index 2f57be4da20fe..88f110b38bce2 100644 --- a/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPolicyRunner.java +++ b/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichPolicyRunner.java @@ -60,7 +60,7 @@ import org.elasticsearch.index.mapper.MapperService; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.elasticsearch.index.reindex.PaginatedHitSource; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.index.reindex.ReindexRequest; import org.elasticsearch.indices.IndicesService; import org.elasticsearch.search.builder.SearchSourceBuilder; @@ -541,7 +541,7 @@ public void onResponse(BulkByScrollResponse bulkByScrollResponse) { bulkByScrollResponse.getSearchFailures().size() ); if (logger.isDebugEnabled()) { - for (PaginatedHitSource.SearchFailure failure : bulkByScrollResponse.getSearchFailures()) { + for (PaginatedSearchFailure failure : bulkByScrollResponse.getSearchFailures()) { logger.debug( () -> format( "Policy [%s]: search failed for index [%s], shard [%s] on node [%s]", diff --git a/x-pack/plugin/migrate/src/main/java/org/elasticsearch/xpack/migrate/action/ReindexDataStreamIndexTransportAction.java b/x-pack/plugin/migrate/src/main/java/org/elasticsearch/xpack/migrate/action/ReindexDataStreamIndexTransportAction.java index a3164ae5bbf65..e1b4044557a46 100644 --- a/x-pack/plugin/migrate/src/main/java/org/elasticsearch/xpack/migrate/action/ReindexDataStreamIndexTransportAction.java +++ b/x-pack/plugin/migrate/src/main/java/org/elasticsearch/xpack/migrate/action/ReindexDataStreamIndexTransportAction.java @@ -49,7 +49,7 @@ import org.elasticsearch.core.TimeValue; import org.elasticsearch.index.IndexSettings; import org.elasticsearch.index.reindex.BulkByScrollResponse; -import org.elasticsearch.index.reindex.PaginatedHitSource; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.index.reindex.ReindexAction; import org.elasticsearch.index.reindex.ReindexRequest; import org.elasticsearch.injection.guice.Inject; @@ -300,7 +300,7 @@ void reindex(String sourceIndexName, String destIndexName, ActionListener checkForFailuresListener = ActionListener.wrap(bulkByScrollResponse -> { if (bulkByScrollResponse.getSearchFailures().isEmpty() == false) { - PaginatedHitSource.SearchFailure firstSearchFailure = bulkByScrollResponse.getSearchFailures().get(0); + PaginatedSearchFailure firstSearchFailure = bulkByScrollResponse.getSearchFailures().get(0); listener.onFailure( new ElasticsearchException( "Failure reading data from {} caused by {}", diff --git a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteForecastAction.java b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteForecastAction.java index 46bb46f3ddb6c..3b213d0d4343e 100644 --- a/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteForecastAction.java +++ b/x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/action/TransportDeleteForecastAction.java @@ -32,7 +32,7 @@ import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.DeleteByQueryAction; import org.elasticsearch.index.reindex.DeleteByQueryRequest; -import org.elasticsearch.index.reindex.PaginatedHitSource; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.injection.guice.Inject; import org.elasticsearch.persistent.PersistentTasksCustomMetadata; import org.elasticsearch.rest.RestStatus; @@ -206,7 +206,7 @@ private static Tuple getStatusAndReason(final BulkByScrol } } - for (PaginatedHitSource.SearchFailure failure : response.getSearchFailures()) { + for (PaginatedSearchFailure failure : response.getSearchFailures()) { RestStatus failureStatus = org.elasticsearch.ExceptionsHelper.status(failure.getReason()); if (failureStatus.getStatus() > status.getStatus()) { status = failureStatus; diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ExpiredTokenRemover.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ExpiredTokenRemover.java index 4206a4dcb5f2f..ed8f8d373c717 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ExpiredTokenRemover.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/ExpiredTokenRemover.java @@ -19,7 +19,7 @@ import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.DeleteByQueryAction; import org.elasticsearch.index.reindex.DeleteByQueryRequest; -import org.elasticsearch.index.reindex.PaginatedHitSource; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.threadpool.ThreadPool.Names; import org.elasticsearch.xpack.security.support.SecurityIndexManager; @@ -129,7 +129,7 @@ private static void debugDbqResponse(BulkByScrollResponse response) { failure.getCause() ); } - for (PaginatedHitSource.SearchFailure failure : response.getSearchFailures()) { + for (PaginatedSearchFailure failure : response.getSearchFailures()) { logger.debug( () -> format( "search failed for index [%s], shard [%s] on node [%s]", diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/InactiveApiKeysRemover.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/InactiveApiKeysRemover.java index 9449a2bb4ad98..a1b3646faf9ad 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/InactiveApiKeysRemover.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/InactiveApiKeysRemover.java @@ -20,7 +20,7 @@ import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.DeleteByQueryAction; import org.elasticsearch.index.reindex.DeleteByQueryRequest; -import org.elasticsearch.index.reindex.PaginatedHitSource; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.threadpool.ThreadPool; import org.elasticsearch.threadpool.ThreadPool.Names; import org.elasticsearch.xpack.security.support.SecuritySystemIndices; @@ -120,7 +120,7 @@ private static void debugDbqResponse(BulkByScrollResponse response) { failure.getCause() ); } - for (PaginatedHitSource.SearchFailure failure : response.getSearchFailures()) { + for (PaginatedSearchFailure failure : response.getSearchFailures()) { logger.debug( () -> format( "search failed for index [%s], shard [%s] on node [%s]", diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/persistence/IndexBasedTransformConfigManager.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/persistence/IndexBasedTransformConfigManager.java index 49287e8584b01..732b5d028ed00 100644 --- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/persistence/IndexBasedTransformConfigManager.java +++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/persistence/IndexBasedTransformConfigManager.java @@ -52,7 +52,7 @@ import org.elasticsearch.index.reindex.BulkByScrollResponse; import org.elasticsearch.index.reindex.DeleteByQueryAction; import org.elasticsearch.index.reindex.DeleteByQueryRequest; -import org.elasticsearch.index.reindex.PaginatedHitSource; +import org.elasticsearch.index.reindex.PaginatedSearchFailure; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.builder.SearchSourceBuilder; @@ -1023,7 +1023,7 @@ private static Tuple getStatusAndReason(final BulkByScrol } } - for (PaginatedHitSource.SearchFailure failure : response.getSearchFailures()) { + for (PaginatedSearchFailure failure : response.getSearchFailures()) { RestStatus failureStatus = org.elasticsearch.ExceptionsHelper.status(failure.getReason()); if (failureStatus.getStatus() > status.getStatus()) { status = failureStatus;