|
|
@@ -58,7 +58,6 @@ import java.util.Collection;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
-import java.util.concurrent.ExecutionException;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
|
|
|
@@ -73,6 +72,7 @@ import static org.hamcrest.Matchers.hasItems;
|
|
|
import static org.hamcrest.Matchers.hasSize;
|
|
|
import static org.hamcrest.Matchers.is;
|
|
|
import static org.hamcrest.Matchers.not;
|
|
|
+import static org.hamcrest.Matchers.notNullValue;
|
|
|
import static org.hamcrest.Matchers.nullValue;
|
|
|
|
|
|
public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
@@ -80,6 +80,8 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
private static final Map<String, Integer> DOCUMENT_SOURCE = Collections.singletonMap("@timestamp", 123);
|
|
|
public static final String REPO = "repo";
|
|
|
public static final String SNAPSHOT = "snap";
|
|
|
+ public static final String TEMPLATE_1_ID = "t1";
|
|
|
+ public static final String TEMPLATE_2_ID = "t2";
|
|
|
private Client client;
|
|
|
|
|
|
private String dsBackingIndexName;
|
|
|
@@ -103,8 +105,8 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
Path location = randomRepoPath();
|
|
|
createRepository(REPO, "fs", location);
|
|
|
|
|
|
- DataStreamIT.putComposableIndexTemplate("t1", List.of("ds", "other-ds"));
|
|
|
- DataStreamIT.putComposableIndexTemplate("t2", """
|
|
|
+ DataStreamIT.putComposableIndexTemplate(TEMPLATE_1_ID, List.of("ds", "other-ds"));
|
|
|
+ DataStreamIT.putComposableIndexTemplate(TEMPLATE_2_ID, """
|
|
|
{
|
|
|
"properties": {
|
|
|
"@timestamp": {
|
|
|
@@ -139,18 +141,11 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
|
|
|
// Resolve backing index names after data streams have been created:
|
|
|
// (these names have a date component, and running around midnight could lead to test failures otherwise)
|
|
|
- GetDataStreamAction.Request getDataStreamRequest = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "*" });
|
|
|
- GetDataStreamAction.Response getDataStreamResponse = client.execute(GetDataStreamAction.INSTANCE, getDataStreamRequest).actionGet();
|
|
|
- dsBackingIndexName = getDataStreamResponse.getDataStreams().get(0).getDataStream().getIndices().get(0).getName();
|
|
|
- otherDsBackingIndexName = getDataStreamResponse.getDataStreams().get(1).getDataStream().getIndices().get(0).getName();
|
|
|
- fsBackingIndexName = getDataStreamResponse.getDataStreams().get(2).getDataStream().getIndices().get(0).getName();
|
|
|
- fsFailureIndexName = getDataStreamResponse.getDataStreams()
|
|
|
- .get(2)
|
|
|
- .getDataStream()
|
|
|
- .getFailureIndices()
|
|
|
- .getIndices()
|
|
|
- .get(0)
|
|
|
- .getName();
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo("*");
|
|
|
+ dsBackingIndexName = dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName();
|
|
|
+ otherDsBackingIndexName = dataStreamInfos.get(1).getDataStream().getIndices().get(0).getName();
|
|
|
+ fsBackingIndexName = dataStreamInfos.get(2).getDataStream().getIndices().get(0).getName();
|
|
|
+ fsFailureIndexName = dataStreamInfos.get(2).getDataStream().getFailureIndices().getIndices().get(0).getName();
|
|
|
|
|
|
// Will be used in some tests, to test renaming while restoring a snapshot:
|
|
|
ds2BackingIndexName = dsBackingIndexName.replace("-ds-", "-ds2-");
|
|
|
@@ -192,9 +187,7 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
|
|
|
assertEquals(Collections.singletonList(dsBackingIndexName), getSnapshot(REPO, SNAPSHOT).indices());
|
|
|
|
|
|
- assertAcked(
|
|
|
- client.execute(DeleteDataStreamAction.INSTANCE, new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "ds" }))
|
|
|
- );
|
|
|
+ assertAcked(client.execute(DeleteDataStreamAction.INSTANCE, new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, "ds")));
|
|
|
|
|
|
RestoreSnapshotResponse restoreSnapshotResponse = client.admin()
|
|
|
.cluster()
|
|
|
@@ -212,13 +205,10 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
assertEquals(DOCUMENT_SOURCE, hits[0].getSourceAsMap());
|
|
|
});
|
|
|
|
|
|
- GetDataStreamAction.Response ds = client.execute(
|
|
|
- GetDataStreamAction.INSTANCE,
|
|
|
- new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "ds" })
|
|
|
- ).get();
|
|
|
- assertEquals(1, ds.getDataStreams().size());
|
|
|
- assertEquals(1, ds.getDataStreams().get(0).getDataStream().getIndices().size());
|
|
|
- assertEquals(dsBackingIndexName, ds.getDataStreams().get(0).getDataStream().getIndices().get(0).getName());
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> ds = getDataStreamInfo("ds");
|
|
|
+ assertEquals(1, ds.size());
|
|
|
+ assertEquals(1, ds.get(0).getDataStream().getIndices().size());
|
|
|
+ assertEquals(dsBackingIndexName, ds.get(0).getDataStream().getIndices().get(0).getName());
|
|
|
|
|
|
GetAliasesResponse getAliasesResponse = client.admin().indices().getAliases(new GetAliasesRequest("my-alias")).actionGet();
|
|
|
assertThat(getAliasesResponse.getDataStreamAliases().keySet(), containsInAnyOrder("ds", "other-ds"));
|
|
|
@@ -272,19 +262,18 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
assertEquals(DOCUMENT_SOURCE, hits[0].getSourceAsMap());
|
|
|
});
|
|
|
|
|
|
- GetDataStreamAction.Request getDataSteamRequest = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "*" });
|
|
|
- GetDataStreamAction.Response ds = client.execute(GetDataStreamAction.INSTANCE, getDataSteamRequest).get();
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo("*");
|
|
|
assertThat(
|
|
|
- ds.getDataStreams().stream().map(e -> e.getDataStream().getName()).collect(Collectors.toList()),
|
|
|
+ dataStreamInfos.stream().map(e -> e.getDataStream().getName()).collect(Collectors.toList()),
|
|
|
contains(equalTo("ds"), equalTo("other-ds"), equalTo("with-fs"))
|
|
|
);
|
|
|
- List<Index> backingIndices = ds.getDataStreams().get(0).getDataStream().getIndices();
|
|
|
+ List<Index> backingIndices = dataStreamInfos.get(0).getDataStream().getIndices();
|
|
|
assertThat(backingIndices.stream().map(Index::getName).collect(Collectors.toList()), contains(dsBackingIndexName));
|
|
|
- backingIndices = ds.getDataStreams().get(1).getDataStream().getIndices();
|
|
|
+ backingIndices = dataStreamInfos.get(1).getDataStream().getIndices();
|
|
|
assertThat(backingIndices.stream().map(Index::getName).collect(Collectors.toList()), contains(otherDsBackingIndexName));
|
|
|
- backingIndices = ds.getDataStreams().get(2).getDataStream().getIndices();
|
|
|
+ backingIndices = dataStreamInfos.get(2).getDataStream().getIndices();
|
|
|
assertThat(backingIndices.stream().map(Index::getName).collect(Collectors.toList()), contains(fsBackingIndexName));
|
|
|
- List<Index> failureIndices = ds.getDataStreams().get(2).getDataStream().getFailureIndices().getIndices();
|
|
|
+ List<Index> failureIndices = dataStreamInfos.get(2).getDataStream().getFailureIndices().getIndices();
|
|
|
assertThat(failureIndices.stream().map(Index::getName).collect(Collectors.toList()), contains(fsFailureIndexName));
|
|
|
}
|
|
|
|
|
|
@@ -331,14 +320,10 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
assertEquals(DOCUMENT_SOURCE, hits[0].getSourceAsMap());
|
|
|
});
|
|
|
|
|
|
- GetDataStreamAction.Request getDataSteamRequest = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "ds" });
|
|
|
- GetDataStreamAction.Response ds = client.execute(GetDataStreamAction.INSTANCE, getDataSteamRequest).actionGet();
|
|
|
- assertThat(
|
|
|
- ds.getDataStreams().stream().map(e -> e.getDataStream().getName()).collect(Collectors.toList()),
|
|
|
- contains(equalTo("ds"))
|
|
|
- );
|
|
|
- List<Index> backingIndices = ds.getDataStreams().get(0).getDataStream().getIndices();
|
|
|
- assertThat(ds.getDataStreams().get(0).getDataStream().getIndices(), hasSize(1));
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dsInfo = getDataStreamInfo("ds");
|
|
|
+ assertThat(dsInfo.stream().map(e -> e.getDataStream().getName()).collect(Collectors.toList()), contains(equalTo("ds")));
|
|
|
+ List<Index> backingIndices = dsInfo.get(0).getDataStream().getIndices();
|
|
|
+ assertThat(dsInfo.get(0).getDataStream().getIndices(), hasSize(1));
|
|
|
assertThat(backingIndices.stream().map(Index::getName).collect(Collectors.toList()), contains(equalTo(dsBackingIndexName)));
|
|
|
|
|
|
// The backing index created as part of rollover should still exist (but just not part of the data stream)
|
|
|
@@ -351,39 +336,40 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
}
|
|
|
|
|
|
public void testFailureStoreSnapshotAndRestore() throws Exception {
|
|
|
+ String dataStreamName = "with-fs";
|
|
|
CreateSnapshotResponse createSnapshotResponse = client.admin()
|
|
|
.cluster()
|
|
|
.prepareCreateSnapshot(TEST_REQUEST_TIMEOUT, REPO, SNAPSHOT)
|
|
|
.setWaitForCompletion(true)
|
|
|
- .setIndices("with-fs")
|
|
|
+ .setIndices(dataStreamName)
|
|
|
.setIncludeGlobalState(false)
|
|
|
.get();
|
|
|
|
|
|
RestStatus status = createSnapshotResponse.getSnapshotInfo().status();
|
|
|
assertEquals(RestStatus.OK, status);
|
|
|
|
|
|
+ assertThat(getSnapshot(REPO, SNAPSHOT).dataStreams(), containsInAnyOrder(dataStreamName));
|
|
|
assertThat(getSnapshot(REPO, SNAPSHOT).indices(), containsInAnyOrder(fsBackingIndexName, fsFailureIndexName));
|
|
|
|
|
|
- assertAcked(client.execute(DeleteDataStreamAction.INSTANCE, new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, "with-fs")));
|
|
|
+ assertAcked(
|
|
|
+ client.execute(DeleteDataStreamAction.INSTANCE, new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, dataStreamName))
|
|
|
+ );
|
|
|
|
|
|
{
|
|
|
RestoreSnapshotResponse restoreSnapshotResponse = client.admin()
|
|
|
.cluster()
|
|
|
.prepareRestoreSnapshot(TEST_REQUEST_TIMEOUT, REPO, SNAPSHOT)
|
|
|
.setWaitForCompletion(true)
|
|
|
- .setIndices("with-fs")
|
|
|
+ .setIndices(dataStreamName)
|
|
|
.get();
|
|
|
|
|
|
assertEquals(2, restoreSnapshotResponse.getRestoreInfo().successfulShards());
|
|
|
|
|
|
- GetDataStreamAction.Response ds = client.execute(
|
|
|
- GetDataStreamAction.INSTANCE,
|
|
|
- new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "with-fs" })
|
|
|
- ).get();
|
|
|
- assertEquals(1, ds.getDataStreams().size());
|
|
|
- assertEquals(1, ds.getDataStreams().get(0).getDataStream().getIndices().size());
|
|
|
- assertEquals(fsBackingIndexName, ds.getDataStreams().get(0).getDataStream().getIndices().get(0).getName());
|
|
|
- assertEquals(fsFailureIndexName, ds.getDataStreams().get(0).getDataStream().getFailureIndices().getIndices().get(0).getName());
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo(dataStreamName);
|
|
|
+ assertEquals(1, dataStreamInfos.size());
|
|
|
+ assertEquals(1, dataStreamInfos.get(0).getDataStream().getIndices().size());
|
|
|
+ assertEquals(fsBackingIndexName, dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName());
|
|
|
+ assertEquals(fsFailureIndexName, dataStreamInfos.get(0).getDataStream().getFailureIndices().getIndices().get(0).getName());
|
|
|
}
|
|
|
{
|
|
|
// With rename pattern
|
|
|
@@ -391,21 +377,18 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
.cluster()
|
|
|
.prepareRestoreSnapshot(TEST_REQUEST_TIMEOUT, REPO, SNAPSHOT)
|
|
|
.setWaitForCompletion(true)
|
|
|
- .setIndices("with-fs")
|
|
|
+ .setIndices(dataStreamName)
|
|
|
.setRenamePattern("-fs")
|
|
|
.setRenameReplacement("-fs2")
|
|
|
.get();
|
|
|
|
|
|
assertEquals(2, restoreSnapshotResponse.getRestoreInfo().successfulShards());
|
|
|
|
|
|
- GetDataStreamAction.Response ds = client.execute(
|
|
|
- GetDataStreamAction.INSTANCE,
|
|
|
- new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "with-fs2" })
|
|
|
- ).get();
|
|
|
- assertEquals(1, ds.getDataStreams().size());
|
|
|
- assertEquals(1, ds.getDataStreams().get(0).getDataStream().getIndices().size());
|
|
|
- assertEquals(fs2BackingIndexName, ds.getDataStreams().get(0).getDataStream().getIndices().get(0).getName());
|
|
|
- assertEquals(fs2FailureIndexName, ds.getDataStreams().get(0).getDataStream().getFailureIndices().getIndices().get(0).getName());
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo("with-fs2");
|
|
|
+ assertEquals(1, dataStreamInfos.size());
|
|
|
+ assertEquals(1, dataStreamInfos.get(0).getDataStream().getIndices().size());
|
|
|
+ assertEquals(fs2BackingIndexName, dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName());
|
|
|
+ assertEquals(fs2FailureIndexName, dataStreamInfos.get(0).getDataStream().getFailureIndices().getIndices().get(0).getName());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -471,13 +454,10 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
assertEquals(DOCUMENT_SOURCE, hits[0].getSourceAsMap());
|
|
|
});
|
|
|
|
|
|
- GetDataStreamAction.Response ds = client.execute(
|
|
|
- GetDataStreamAction.INSTANCE,
|
|
|
- new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { dataStreamToSnapshot })
|
|
|
- ).get();
|
|
|
- assertEquals(1, ds.getDataStreams().size());
|
|
|
- assertEquals(1, ds.getDataStreams().get(0).getDataStream().getIndices().size());
|
|
|
- assertEquals(backingIndexName, ds.getDataStreams().get(0).getDataStream().getIndices().get(0).getName());
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo(dataStreamToSnapshot);
|
|
|
+ assertEquals(1, dataStreamInfos.size());
|
|
|
+ assertEquals(1, dataStreamInfos.get(0).getDataStream().getIndices().size());
|
|
|
+ assertEquals(backingIndexName, dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName());
|
|
|
|
|
|
GetAliasesResponse getAliasesResponse = client.admin().indices().getAliases(new GetAliasesRequest("my-alias")).actionGet();
|
|
|
assertThat(getAliasesResponse.getDataStreamAliases().keySet(), contains(dataStreamToSnapshot));
|
|
|
@@ -530,13 +510,10 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
assertEquals(DOCUMENT_SOURCE, hits[0].getSourceAsMap());
|
|
|
});
|
|
|
|
|
|
- GetDataStreamAction.Response ds = client.execute(
|
|
|
- GetDataStreamAction.INSTANCE,
|
|
|
- new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "*" })
|
|
|
- ).get();
|
|
|
- assertEquals(3, ds.getDataStreams().size());
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo("*");
|
|
|
+ assertEquals(3, dataStreamInfos.size());
|
|
|
assertThat(
|
|
|
- ds.getDataStreams().stream().map(i -> i.getDataStream().getName()).collect(Collectors.toList()),
|
|
|
+ dataStreamInfos.stream().map(i -> i.getDataStream().getName()).collect(Collectors.toList()),
|
|
|
containsInAnyOrder("ds", "other-ds", "with-fs")
|
|
|
);
|
|
|
|
|
|
@@ -590,19 +567,16 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
assertEquals(DOCUMENT_SOURCE, hits[0].getSourceAsMap());
|
|
|
});
|
|
|
|
|
|
- GetDataStreamAction.Response ds = client.execute(
|
|
|
- GetDataStreamAction.INSTANCE,
|
|
|
- new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "*" })
|
|
|
- ).get();
|
|
|
- assertEquals(3, ds.getDataStreams().size());
|
|
|
- assertEquals(1, ds.getDataStreams().get(0).getDataStream().getIndices().size());
|
|
|
- assertEquals(dsBackingIndexName, ds.getDataStreams().get(0).getDataStream().getIndices().get(0).getName());
|
|
|
- assertEquals(1, ds.getDataStreams().get(1).getDataStream().getIndices().size());
|
|
|
- assertEquals(otherDsBackingIndexName, ds.getDataStreams().get(1).getDataStream().getIndices().get(0).getName());
|
|
|
- assertEquals(1, ds.getDataStreams().get(2).getDataStream().getIndices().size());
|
|
|
- assertEquals(fsBackingIndexName, ds.getDataStreams().get(2).getDataStream().getIndices().get(0).getName());
|
|
|
- assertEquals(1, ds.getDataStreams().get(2).getDataStream().getFailureIndices().getIndices().size());
|
|
|
- assertEquals(fsFailureIndexName, ds.getDataStreams().get(2).getDataStream().getFailureIndices().getIndices().get(0).getName());
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo("*");
|
|
|
+ assertEquals(3, dataStreamInfos.size());
|
|
|
+ assertEquals(1, dataStreamInfos.get(0).getDataStream().getIndices().size());
|
|
|
+ assertEquals(dsBackingIndexName, dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName());
|
|
|
+ assertEquals(1, dataStreamInfos.get(1).getDataStream().getIndices().size());
|
|
|
+ assertEquals(otherDsBackingIndexName, dataStreamInfos.get(1).getDataStream().getIndices().get(0).getName());
|
|
|
+ assertEquals(1, dataStreamInfos.get(2).getDataStream().getIndices().size());
|
|
|
+ assertEquals(fsBackingIndexName, dataStreamInfos.get(2).getDataStream().getIndices().get(0).getName());
|
|
|
+ assertEquals(1, dataStreamInfos.get(2).getDataStream().getFailureIndices().getIndices().size());
|
|
|
+ assertEquals(fsFailureIndexName, dataStreamInfos.get(2).getDataStream().getFailureIndices().getIndices().get(0).getName());
|
|
|
|
|
|
GetAliasesResponse getAliasesResponse = client.admin().indices().getAliases(new GetAliasesRequest("my-alias")).actionGet();
|
|
|
assertThat(getAliasesResponse.getDataStreamAliases().keySet(), containsInAnyOrder("ds", "other-ds"));
|
|
|
@@ -661,19 +635,16 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
assertEquals(DOCUMENT_SOURCE, hits[0].getSourceAsMap());
|
|
|
});
|
|
|
|
|
|
- GetDataStreamAction.Response ds = client.execute(
|
|
|
- GetDataStreamAction.INSTANCE,
|
|
|
- new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "*" })
|
|
|
- ).get();
|
|
|
- assertEquals(3, ds.getDataStreams().size());
|
|
|
- assertEquals(1, ds.getDataStreams().get(0).getDataStream().getIndices().size());
|
|
|
- assertEquals(dsBackingIndexName, ds.getDataStreams().get(0).getDataStream().getIndices().get(0).getName());
|
|
|
- assertEquals(1, ds.getDataStreams().get(1).getDataStream().getIndices().size());
|
|
|
- assertEquals(otherDsBackingIndexName, ds.getDataStreams().get(1).getDataStream().getIndices().get(0).getName());
|
|
|
- assertEquals(1, ds.getDataStreams().get(2).getDataStream().getIndices().size());
|
|
|
- assertEquals(fsBackingIndexName, ds.getDataStreams().get(2).getDataStream().getIndices().get(0).getName());
|
|
|
- assertEquals(1, ds.getDataStreams().get(2).getDataStream().getIndices().size());
|
|
|
- assertEquals(fsFailureIndexName, ds.getDataStreams().get(2).getDataStream().getFailureIndices().getIndices().get(0).getName());
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo("*");
|
|
|
+ assertEquals(3, dataStreamInfos.size());
|
|
|
+ assertEquals(1, dataStreamInfos.get(0).getDataStream().getIndices().size());
|
|
|
+ assertEquals(dsBackingIndexName, dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName());
|
|
|
+ assertEquals(1, dataStreamInfos.get(1).getDataStream().getIndices().size());
|
|
|
+ assertEquals(otherDsBackingIndexName, dataStreamInfos.get(1).getDataStream().getIndices().get(0).getName());
|
|
|
+ assertEquals(1, dataStreamInfos.get(2).getDataStream().getIndices().size());
|
|
|
+ assertEquals(fsBackingIndexName, dataStreamInfos.get(2).getDataStream().getIndices().get(0).getName());
|
|
|
+ assertEquals(1, dataStreamInfos.get(2).getDataStream().getIndices().size());
|
|
|
+ assertEquals(fsFailureIndexName, dataStreamInfos.get(2).getDataStream().getFailureIndices().getIndices().get(0).getName());
|
|
|
|
|
|
GetAliasesResponse getAliasesResponse = client.admin().indices().getAliases(new GetAliasesRequest("*")).actionGet();
|
|
|
assertThat(getAliasesResponse.getDataStreamAliases(), anEmptyMap());
|
|
|
@@ -715,13 +686,10 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
.setRenameReplacement("ds2")
|
|
|
.get();
|
|
|
|
|
|
- GetDataStreamAction.Response ds = client.execute(
|
|
|
- GetDataStreamAction.INSTANCE,
|
|
|
- new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "ds2" })
|
|
|
- ).get();
|
|
|
- assertEquals(1, ds.getDataStreams().size());
|
|
|
- assertEquals(1, ds.getDataStreams().get(0).getDataStream().getIndices().size());
|
|
|
- assertEquals(ds2BackingIndexName, ds.getDataStreams().get(0).getDataStream().getIndices().get(0).getName());
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo("ds2");
|
|
|
+ assertEquals(1, dataStreamInfos.size());
|
|
|
+ assertEquals(1, dataStreamInfos.get(0).getDataStream().getIndices().size());
|
|
|
+ assertEquals(ds2BackingIndexName, dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName());
|
|
|
assertResponse(
|
|
|
client.prepareSearch("ds2"),
|
|
|
response -> assertEquals(DOCUMENT_SOURCE, response.getHits().getHits()[0].getSourceAsMap())
|
|
|
@@ -773,13 +741,10 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
.setRenameReplacement("other-ds2")
|
|
|
.get();
|
|
|
|
|
|
- GetDataStreamAction.Response ds = client.execute(
|
|
|
- GetDataStreamAction.INSTANCE,
|
|
|
- new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "other-ds2" })
|
|
|
- ).get();
|
|
|
- assertEquals(1, ds.getDataStreams().size());
|
|
|
- assertEquals(1, ds.getDataStreams().get(0).getDataStream().getIndices().size());
|
|
|
- assertEquals(otherDs2BackingIndexName, ds.getDataStreams().get(0).getDataStream().getIndices().get(0).getName());
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo("other-ds2");
|
|
|
+ assertEquals(1, dataStreamInfos.size());
|
|
|
+ assertEquals(1, dataStreamInfos.get(0).getDataStream().getIndices().size());
|
|
|
+ assertEquals(otherDs2BackingIndexName, dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName());
|
|
|
|
|
|
GetAliasesResponse getAliasesResponse = client.admin().indices().getAliases(new GetAliasesRequest("my-alias")).actionGet();
|
|
|
assertThat(getAliasesResponse.getDataStreamAliases().keySet(), containsInAnyOrder("ds", "other-ds", "other-ds2"));
|
|
|
@@ -843,9 +808,8 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
|
|
|
assertThat(restoreSnapshotResponse.status(), is(RestStatus.OK));
|
|
|
|
|
|
- GetDataStreamAction.Request getDSRequest = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "ds" });
|
|
|
- GetDataStreamAction.Response response = client.execute(GetDataStreamAction.INSTANCE, getDSRequest).actionGet();
|
|
|
- assertThat(response.getDataStreams().get(0).getDataStream().getIndices().get(0).getName(), is(dsBackingIndexName));
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo("ds");
|
|
|
+ assertThat(dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName(), is(dsBackingIndexName));
|
|
|
}
|
|
|
|
|
|
public void testDataStreamAndBackingIndicesAreRenamedUsingRegex() {
|
|
|
@@ -882,17 +846,15 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
assertThat(restoreSnapshotResponse.status(), is(RestStatus.OK));
|
|
|
|
|
|
// assert "ds" was restored as "test-ds" and the backing index has a valid name
|
|
|
- GetDataStreamAction.Request getRenamedDS = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "test-ds" });
|
|
|
- GetDataStreamAction.Response response = client.execute(GetDataStreamAction.INSTANCE, getRenamedDS).actionGet();
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo("test-ds");
|
|
|
assertThat(
|
|
|
- response.getDataStreams().get(0).getDataStream().getIndices().get(0).getName(),
|
|
|
+ dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName(),
|
|
|
is(DataStream.getDefaultBackingIndexName("test-ds", 1L))
|
|
|
);
|
|
|
|
|
|
// data stream "ds" should still exist in the system
|
|
|
- GetDataStreamAction.Request getDSRequest = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "ds" });
|
|
|
- response = client.execute(GetDataStreamAction.INSTANCE, getDSRequest).actionGet();
|
|
|
- assertThat(response.getDataStreams().get(0).getDataStream().getIndices().get(0).getName(), is(dsBackingIndexName));
|
|
|
+ dataStreamInfos = getDataStreamInfo("ds");
|
|
|
+ assertThat(dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName(), is(dsBackingIndexName));
|
|
|
}
|
|
|
|
|
|
public void testWildcards() throws Exception {
|
|
|
@@ -918,16 +880,13 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
|
|
|
assertEquals(RestStatus.OK, restoreSnapshotResponse.status());
|
|
|
|
|
|
- GetDataStreamAction.Response ds = client.execute(
|
|
|
- GetDataStreamAction.INSTANCE,
|
|
|
- new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "ds2" })
|
|
|
- ).get();
|
|
|
- assertEquals(1, ds.getDataStreams().size());
|
|
|
- assertEquals(1, ds.getDataStreams().get(0).getDataStream().getIndices().size());
|
|
|
- assertEquals(ds2BackingIndexName, ds.getDataStreams().get(0).getDataStream().getIndices().get(0).getName());
|
|
|
+ List<GetDataStreamAction.Response.DataStreamInfo> dataStreamInfos = getDataStreamInfo("ds2");
|
|
|
+ assertEquals(1, dataStreamInfos.size());
|
|
|
+ assertEquals(1, dataStreamInfos.get(0).getDataStream().getIndices().size());
|
|
|
+ assertEquals(ds2BackingIndexName, dataStreamInfos.get(0).getDataStream().getIndices().get(0).getName());
|
|
|
assertThat(
|
|
|
"we renamed the restored data stream to one that doesn't match any existing composable template",
|
|
|
- ds.getDataStreams().get(0).getIndexTemplate(),
|
|
|
+ dataStreamInfos.get(0).getIndexTemplate(),
|
|
|
is(nullValue())
|
|
|
);
|
|
|
}
|
|
|
@@ -949,7 +908,7 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- public void testDataStreamNotRestoredWhenIndexRequested() throws Exception {
|
|
|
+ public void testDataStreamNotRestoredWhenIndexRequested() {
|
|
|
CreateSnapshotResponse createSnapshotResponse = client.admin()
|
|
|
.cluster()
|
|
|
.prepareCreateSnapshot(TEST_REQUEST_TIMEOUT, REPO, "snap2")
|
|
|
@@ -978,7 +937,7 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
expectThrows(ResourceNotFoundException.class, client.execute(GetDataStreamAction.INSTANCE, getRequest));
|
|
|
}
|
|
|
|
|
|
- public void testDataStreamNotIncludedInLimitedSnapshot() throws ExecutionException, InterruptedException {
|
|
|
+ public void testDataStreamNotIncludedInLimitedSnapshot() {
|
|
|
final String snapshotName = "test-snap";
|
|
|
CreateSnapshotResponse createSnapshotResponse = client.admin()
|
|
|
.cluster()
|
|
|
@@ -1036,12 +995,7 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
assertDocCount(dataStream, 100L);
|
|
|
// Resolve backing index name after the data stream has been created because it has a date component,
|
|
|
// and running around midnight could lead to test failures otherwise
|
|
|
- GetDataStreamAction.Request getDataStreamRequest = new GetDataStreamAction.Request(
|
|
|
- TEST_REQUEST_TIMEOUT,
|
|
|
- new String[] { dataStream }
|
|
|
- );
|
|
|
- GetDataStreamAction.Response getDataStreamResponse = client.execute(GetDataStreamAction.INSTANCE, getDataStreamRequest).actionGet();
|
|
|
- String backingIndexName = getDataStreamResponse.getDataStreams().get(0).getDataStream().getIndices().get(0).getName();
|
|
|
+ String backingIndexName = getDataStreamInfo(dataStream).get(0).getDataStream().getIndices().get(0).getName();
|
|
|
|
|
|
logger.info("--> snapshot");
|
|
|
ActionFuture<CreateSnapshotResponse> future = client1.admin()
|
|
|
@@ -1229,7 +1183,7 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
assertEquals(restoreSnapshotResponse.failedShards(), 0);
|
|
|
}
|
|
|
|
|
|
- public void testExcludeDSFromSnapshotWhenExcludingItsIndices() {
|
|
|
+ public void testExcludeDSFromSnapshotWhenExcludingAnyOfItsIndices() {
|
|
|
final String snapshot = "test-snapshot";
|
|
|
final String indexWithoutDataStream = "test-idx-no-ds";
|
|
|
createIndexWithContent(indexWithoutDataStream);
|
|
|
@@ -1245,10 +1199,47 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
.getRestoreInfo();
|
|
|
assertThat(restoreInfo.failedShards(), is(0));
|
|
|
assertThat(restoreInfo.successfulShards(), is(1));
|
|
|
+
|
|
|
+ // Exclude only failure store indices
|
|
|
+ {
|
|
|
+ String dataStreamName = "with-fs";
|
|
|
+ CreateSnapshotResponse createSnapshotResponse = client.admin()
|
|
|
+ .cluster()
|
|
|
+ .prepareCreateSnapshot(TEST_REQUEST_TIMEOUT, REPO, SNAPSHOT)
|
|
|
+ .setWaitForCompletion(true)
|
|
|
+ .setIndices(dataStreamName + "*", "-.fs*")
|
|
|
+ .setIncludeGlobalState(false)
|
|
|
+ .get();
|
|
|
+
|
|
|
+ RestStatus status = createSnapshotResponse.getSnapshotInfo().status();
|
|
|
+ assertEquals(RestStatus.OK, status);
|
|
|
+
|
|
|
+ SnapshotInfo retrievedSnapshot = getSnapshot(REPO, SNAPSHOT);
|
|
|
+ assertThat(retrievedSnapshot.dataStreams(), contains(dataStreamName));
|
|
|
+ assertThat(retrievedSnapshot.indices(), containsInAnyOrder(fsBackingIndexName));
|
|
|
+
|
|
|
+ assertAcked(
|
|
|
+ safeGet(client.execute(DeleteDataStreamAction.INSTANCE, new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, "*")))
|
|
|
+ );
|
|
|
+
|
|
|
+ RestoreInfo restoreSnapshotResponse = clusterAdmin().prepareRestoreSnapshot(TEST_REQUEST_TIMEOUT, REPO, SNAPSHOT)
|
|
|
+ .setWaitForCompletion(true)
|
|
|
+ .setIndices(dataStreamName)
|
|
|
+ .get()
|
|
|
+ .getRestoreInfo();
|
|
|
+
|
|
|
+ assertThat(restoreSnapshotResponse, notNullValue());
|
|
|
+ assertThat(restoreSnapshotResponse.successfulShards(), equalTo(restoreSnapshotResponse.totalShards()));
|
|
|
+ assertThat(restoreSnapshotResponse.failedShards(), is(0));
|
|
|
+
|
|
|
+ GetDataStreamAction.Response.DataStreamInfo dataStream = getDataStreamInfo(dataStreamName).get(0);
|
|
|
+ assertThat(dataStream.getDataStream().getBackingIndices().getIndices(), not(empty()));
|
|
|
+ assertThat(dataStream.getDataStream().getFailureIndices().getIndices(), empty());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * This test is a copy of the {@link #testExcludeDSFromSnapshotWhenExcludingItsIndices()} the only difference
|
|
|
+ * This test is a copy of the {@link #testExcludeDSFromSnapshotWhenExcludingAnyOfItsIndices()} ()} the only difference
|
|
|
* is that one include the global state and one doesn't. In general this shouldn't matter that's why it used to be
|
|
|
* a random parameter of the test, but because of #107515 it fails when we include the global state. Keep them
|
|
|
* separate until this is fixed.
|
|
|
@@ -1278,10 +1269,7 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
createIndexWithContent(indexName);
|
|
|
createFullSnapshot(REPO, snapshotName);
|
|
|
|
|
|
- assertAcked(
|
|
|
- client.execute(DeleteDataStreamAction.INSTANCE, new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "*" }))
|
|
|
- .get()
|
|
|
- );
|
|
|
+ assertAcked(client.execute(DeleteDataStreamAction.INSTANCE, new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, "*")).get());
|
|
|
assertAcked(client.admin().indices().prepareDelete("*").setIndicesOptions(IndicesOptions.lenientExpandOpenHidden()).get());
|
|
|
|
|
|
RestoreSnapshotResponse restoreSnapshotResponse = client.admin()
|
|
|
@@ -1291,8 +1279,7 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
.get();
|
|
|
assertEquals(RestStatus.OK, restoreSnapshotResponse.status());
|
|
|
|
|
|
- GetDataStreamAction.Request getRequest = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, new String[] { "*" });
|
|
|
- assertThat(client.execute(GetDataStreamAction.INSTANCE, getRequest).get().getDataStreams(), hasSize(3));
|
|
|
+ assertThat(getDataStreamInfo("*"), hasSize(3));
|
|
|
assertNotNull(client.admin().indices().prepareGetIndex().setIndices(indexName).get());
|
|
|
}
|
|
|
|
|
|
@@ -1320,7 +1307,7 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public void testRestoreDataStreamAliasWithConflictingIndicesAlias() throws Exception {
|
|
|
+ public void testRestoreDataStreamAliasWithConflictingIndicesAlias() {
|
|
|
var snapshotName = "test-snapshot";
|
|
|
createFullSnapshot(REPO, snapshotName);
|
|
|
client.execute(DeleteDataStreamAction.INSTANCE, new DeleteDataStreamAction.Request(TEST_REQUEST_TIMEOUT, "*")).actionGet();
|
|
|
@@ -1333,4 +1320,9 @@ public class DataStreamsSnapshotsIT extends AbstractSnapshotIntegTestCase {
|
|
|
);
|
|
|
assertThat(e.getMessage(), containsString("data stream alias and indices alias have the same name (my-alias)"));
|
|
|
}
|
|
|
+
|
|
|
+ protected List<GetDataStreamAction.Response.DataStreamInfo> getDataStreamInfo(String... dataStreamNames) {
|
|
|
+ GetDataStreamAction.Request getRequest = new GetDataStreamAction.Request(TEST_REQUEST_TIMEOUT, dataStreamNames);
|
|
|
+ return safeGet(client.execute(GetDataStreamAction.INSTANCE, getRequest)).getDataStreams();
|
|
|
+ }
|
|
|
}
|