|
|
@@ -25,6 +25,7 @@ import org.elasticsearch.action.ActionRequest;
|
|
|
import org.elasticsearch.action.ActionRequestBuilder;
|
|
|
import org.elasticsearch.action.ActionResponse;
|
|
|
import org.elasticsearch.action.DocWriteResponse;
|
|
|
+import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
|
|
|
import org.elasticsearch.action.bulk.BackoffPolicy;
|
|
|
import org.elasticsearch.action.bulk.BulkItemResponse;
|
|
|
import org.elasticsearch.action.bulk.BulkItemResponse.Failure;
|
|
|
@@ -74,10 +75,12 @@ import java.util.concurrent.ExecutionException;
|
|
|
import java.util.concurrent.Executor;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
+import java.util.concurrent.atomic.AtomicReference;
|
|
|
import java.util.function.Consumer;
|
|
|
|
|
|
import static java.util.Collections.emptyList;
|
|
|
import static java.util.Collections.emptyMap;
|
|
|
+import static java.util.Collections.singleton;
|
|
|
import static org.apache.lucene.util.TestUtil.randomSimpleString;
|
|
|
import static org.elasticsearch.action.bulk.BackoffPolicy.constantBackoff;
|
|
|
import static org.elasticsearch.common.unit.TimeValue.timeValueMillis;
|
|
|
@@ -388,6 +391,32 @@ public class AsyncBulkByScrollActionTests extends ESTestCase {
|
|
|
assertEquals(defaultBackoffBeforeFailing, millis);
|
|
|
}
|
|
|
|
|
|
+ public void testRefreshIsFalseByDefault() throws Exception {
|
|
|
+ refreshTestCase(null, false);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void testRefreshFalseDoesntMakeVisible() throws Exception {
|
|
|
+ refreshTestCase(false, false);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void testRefreshTrueMakesVisible() throws Exception {
|
|
|
+ refreshTestCase(true, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void refreshTestCase(Boolean refresh, boolean shouldRefresh) {
|
|
|
+ if (refresh != null) {
|
|
|
+ mainRequest.setRefresh(refresh);
|
|
|
+ }
|
|
|
+ DummyAbstractAsyncBulkByScrollAction action = new DummyAbstractAsyncBulkByScrollAction();
|
|
|
+ action.addDestinationIndices(singleton("foo"));
|
|
|
+ action.startNormalTermination(emptyList(), emptyList(), false);
|
|
|
+ if (shouldRefresh) {
|
|
|
+ assertArrayEquals(new String[] {"foo"}, client.lastRefreshRequest.get().indices());
|
|
|
+ } else {
|
|
|
+ assertNull("No refresh was attempted", client.lastRefreshRequest.get());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void testCancelBeforeInitialSearch() throws Exception {
|
|
|
cancelTaskCase((DummyAbstractAsyncBulkByScrollAction action) -> action.initialSearch());
|
|
|
}
|
|
|
@@ -415,7 +444,7 @@ public class AsyncBulkByScrollActionTests extends ESTestCase {
|
|
|
// Refresh or not doesn't matter - we don't try to refresh.
|
|
|
mainRequest.setRefresh(usually());
|
|
|
cancelTaskCase((DummyAbstractAsyncBulkByScrollAction action) -> action.startNormalTermination(emptyList(), emptyList(), false));
|
|
|
- // This wouldn't return if we called refresh - the action would hang waiting for the refresh that we haven't mocked.
|
|
|
+ assertNull("No refresh was attempted", client.lastRefreshRequest.get());
|
|
|
}
|
|
|
|
|
|
private void cancelTaskCase(Consumer<DummyAbstractAsyncBulkByScrollAction> testMe) throws Exception {
|
|
|
@@ -463,6 +492,7 @@ public class AsyncBulkByScrollActionTests extends ESTestCase {
|
|
|
private static class MyMockClient extends FilterClient {
|
|
|
private final List<String> scrollsCleared = new ArrayList<>();
|
|
|
private final AtomicInteger bulksAttempts = new AtomicInteger();
|
|
|
+ private final AtomicReference<RefreshRequest> lastRefreshRequest = new AtomicReference<>();
|
|
|
|
|
|
private int bulksToReject = 0;
|
|
|
|
|
|
@@ -475,6 +505,11 @@ public class AsyncBulkByScrollActionTests extends ESTestCase {
|
|
|
protected <Request extends ActionRequest<Request>, Response extends ActionResponse,
|
|
|
RequestBuilder extends ActionRequestBuilder<Request, Response, RequestBuilder>> void doExecute(
|
|
|
Action<Request, Response, RequestBuilder> action, Request request, ActionListener<Response> listener) {
|
|
|
+ if (request instanceof RefreshRequest) {
|
|
|
+ lastRefreshRequest.set((RefreshRequest) request);
|
|
|
+ listener.onResponse(null);
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (request instanceof ClearScrollRequest) {
|
|
|
ClearScrollRequest clearScroll = (ClearScrollRequest) request;
|
|
|
scrollsCleared.addAll(clearScroll.getScrollIds());
|