|
@@ -26,6 +26,7 @@ import org.elasticsearch.common.io.stream.StreamOutput;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.core.TimeValue;
|
|
|
import org.elasticsearch.common.util.concurrent.AtomicArray;
|
|
|
+import org.elasticsearch.index.seqno.SequenceNumbers;
|
|
|
import org.elasticsearch.xcontent.ObjectParser;
|
|
|
import org.elasticsearch.xcontent.XContentBuilder;
|
|
|
import org.elasticsearch.index.IndexSettings;
|
|
@@ -59,6 +60,7 @@ import org.elasticsearch.tasks.TaskId;
|
|
|
import org.elasticsearch.test.ESIntegTestCase;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.Collection;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
@@ -257,20 +259,47 @@ public class TransportSearchIT extends ESIntegTestCase {
|
|
|
public void testWaitForRefreshIndexValidation() throws Exception {
|
|
|
int numberOfShards = randomIntBetween(3, 10);
|
|
|
assertAcked(prepareCreate("test1").setSettings(Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, numberOfShards)));
|
|
|
+ assertAcked(prepareCreate("test2").setSettings(Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, numberOfShards)));
|
|
|
+ assertAcked(prepareCreate("test3").setSettings(Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, numberOfShards)));
|
|
|
client().admin().indices().prepareAliases().addAlias("test1", "testAlias").get();
|
|
|
+ client().admin().indices().prepareAliases().addAlias(new String[] {"test2", "test3"}, "testFailedAlias").get();
|
|
|
+
|
|
|
+ long[] validCheckpoints = new long[numberOfShards];
|
|
|
+ Arrays.fill(validCheckpoints, SequenceNumbers.UNASSIGNED_SEQ_NO);
|
|
|
|
|
|
// no exception
|
|
|
- client().prepareSearch("testAlias").get();
|
|
|
+ client().prepareSearch("testAlias").setWaitForCheckpoints(Collections.singletonMap("testAlias", validCheckpoints)).get();
|
|
|
+
|
|
|
|
|
|
IllegalArgumentException e = expectThrows(IllegalArgumentException.class,
|
|
|
- () -> client().prepareSearch("testAlias").setWaitForCheckpoints(Collections.singletonMap("testAlias", new long[0])).get());
|
|
|
- assertThat(e.getMessage(), containsString("Index configured with wait_for_checkpoints must be a concrete index resolved in this " +
|
|
|
- "search. Index [testAlias] is not a concrete index resolved in this search."));
|
|
|
+ () -> client().prepareSearch("testFailedAlias")
|
|
|
+ .setWaitForCheckpoints(Collections.singletonMap("testFailedAlias", validCheckpoints))
|
|
|
+ .get());
|
|
|
+ assertThat(e.getMessage(), containsString("Failed to resolve wait_for_checkpoints target [testFailedAlias]. Configured target " +
|
|
|
+ "must resolve to a single open index."));
|
|
|
|
|
|
IllegalArgumentException e2 = expectThrows(IllegalArgumentException.class,
|
|
|
- () -> client().prepareSearch("test1").setWaitForCheckpoints(Collections.singletonMap("test1", new long[2])).get());
|
|
|
- assertThat(e2.getMessage(), containsString("Index configured with wait_for_checkpoints must search the same number of shards as " +
|
|
|
- "checkpoints provided. [2] checkpoints provided. Index [test1] has [" + numberOfShards + "] shards."));
|
|
|
+ () -> client().prepareSearch("test1")
|
|
|
+ .setWaitForCheckpoints(Collections.singletonMap("test1", new long[2]))
|
|
|
+ .get());
|
|
|
+ assertThat(e2.getMessage(), containsString("Target configured with wait_for_checkpoints must search the same number of shards as " +
|
|
|
+ "checkpoints provided. [2] checkpoints provided. Target [test1] which resolved to index [test1] has [" + numberOfShards +
|
|
|
+ "] shards."));
|
|
|
+
|
|
|
+ IllegalArgumentException e3 = expectThrows(IllegalArgumentException.class,
|
|
|
+ () -> client().prepareSearch("testAlias")
|
|
|
+ .setWaitForCheckpoints(Collections.singletonMap("testAlias", new long[2]))
|
|
|
+ .get());
|
|
|
+ assertThat(e3.getMessage(), containsString("Target configured with wait_for_checkpoints must search the same number of shards as " +
|
|
|
+ "checkpoints provided. [2] checkpoints provided. Target [testAlias] which resolved to index [test1] has [" + numberOfShards +
|
|
|
+ "] shards."));
|
|
|
+
|
|
|
+ IllegalArgumentException e4 = expectThrows(IllegalArgumentException.class,
|
|
|
+ () -> client().prepareSearch("testAlias")
|
|
|
+ .setWaitForCheckpoints(Collections.singletonMap("test2", validCheckpoints))
|
|
|
+ .get());
|
|
|
+ assertThat(e4.getMessage(), containsString("Target configured with wait_for_checkpoints must be a concrete index resolved in " +
|
|
|
+ "this search. Target [test2] is not a concrete index resolved in this search."));
|
|
|
}
|
|
|
|
|
|
public void testShardCountLimit() throws Exception {
|