|
@@ -41,9 +41,12 @@ import org.hamcrest.core.IsNull;
|
|
|
import org.junit.Before;
|
|
|
|
|
|
import java.util.Collections;
|
|
|
+import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Locale;
|
|
|
import java.util.Set;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.IntStream;
|
|
|
|
|
|
import static java.util.Collections.singleton;
|
|
|
import static java.util.Collections.singletonList;
|
|
@@ -129,6 +132,32 @@ public class MetadataDeleteIndexServiceTests extends ESTestCase {
|
|
|
DataStream.getDefaultBackingIndexName(dataStreamName, numIndexToDelete)), IsNull.nullValue());
|
|
|
}
|
|
|
|
|
|
+ public void testDeleteMultipleBackingIndexForDataStream() {
|
|
|
+ int numBackingIndices = randomIntBetween(3, 5);
|
|
|
+ int numBackingIndicesToDelete = randomIntBetween(2, numBackingIndices - 1);
|
|
|
+ String dataStreamName = randomAlphaOfLength(6).toLowerCase(Locale.ROOT);
|
|
|
+ ClusterState before = DataStreamTestHelper.getClusterStateWithDataStreams(
|
|
|
+ List.of(new Tuple<>(dataStreamName, numBackingIndices)), List.of());
|
|
|
+
|
|
|
+ List<Integer> indexNumbersToDelete =
|
|
|
+ randomSubsetOf(numBackingIndicesToDelete, IntStream.rangeClosed(1, numBackingIndices - 1).boxed().collect(Collectors.toList()));
|
|
|
+
|
|
|
+ Set<Index> indicesToDelete = new HashSet<>();
|
|
|
+ for (int k : indexNumbersToDelete) {
|
|
|
+ indicesToDelete.add(before.metadata().index(DataStream.getDefaultBackingIndexName(dataStreamName, k)).getIndex());
|
|
|
+ }
|
|
|
+ ClusterState after = service.deleteIndices(before, indicesToDelete);
|
|
|
+
|
|
|
+ DataStream dataStream = after.metadata().dataStreams().get(dataStreamName);
|
|
|
+ assertThat(dataStream, IsNull.notNullValue());
|
|
|
+ assertThat(dataStream.getIndices().size(), equalTo(numBackingIndices - indexNumbersToDelete.size()));
|
|
|
+ for (Index i : indicesToDelete) {
|
|
|
+ assertThat(after.metadata().getIndices().get(i.getName()), IsNull.nullValue());
|
|
|
+ assertFalse(dataStream.getIndices().contains(i));
|
|
|
+ }
|
|
|
+ assertThat(after.metadata().getIndices().size(), equalTo(numBackingIndices - indexNumbersToDelete.size()));
|
|
|
+ }
|
|
|
+
|
|
|
public void testDeleteCurrentWriteIndexForDataStream() {
|
|
|
int numBackingIndices = randomIntBetween(1, 5);
|
|
|
String dataStreamName = randomAlphaOfLength(6).toLowerCase(Locale.ROOT);
|