mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-04-24 23:27:25 -04:00
Create dedicated factory methods for data lifecycle (#126487)
The class `DataStreamLifecycle` is currently capturing the lifecycle configuration that currently manages all data stream indices, but soon enough it will be split into two variants, the data and the failures lifecycle. Some pre-work has been done already but as we are progressing in our POC, we see that it will be really useful if the `DataStreamLifecycle` is "aware" of the target index component. This will allow us to correctly apply global retention or to throw an error if a downsampling configuration is provided to a failure lifecycle. In this PR, we perform a small refactoring to reduce the noise in https://github.com/elastic/elasticsearch/pull/125658. Here we introduce the following: - A factory method that creates a data lifecycle, for now it's trivial but it will be more useful soon. - We rename the "empty" builder to explicitly mention the index component it refers to.
This commit is contained in:
parent
1e7c6abaf6
commit
b9917086e1
35 changed files with 225 additions and 164 deletions
|
@ -1384,7 +1384,9 @@ public class DataStreamIT extends ESIntegTestCase {
|
||||||
|
|
||||||
public void testGetDataStream() throws Exception {
|
public void testGetDataStream() throws Exception {
|
||||||
Settings settings = Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, maximumNumberOfReplicas() + 2).build();
|
Settings settings = Settings.builder().put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, maximumNumberOfReplicas() + 2).build();
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.builder().dataRetention(randomPositiveTimeValue()).buildTemplate();
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
|
.dataRetention(randomPositiveTimeValue())
|
||||||
|
.buildTemplate();
|
||||||
putComposableIndexTemplate("template_for_foo", null, List.of("metrics-foo*"), settings, null, null, lifecycle, false);
|
putComposableIndexTemplate("template_for_foo", null, List.of("metrics-foo*"), settings, null, null, lifecycle, false);
|
||||||
int numDocsFoo = randomIntBetween(2, 16);
|
int numDocsFoo = randomIntBetween(2, 16);
|
||||||
indexDocs("metrics-foo", numDocsFoo);
|
indexDocs("metrics-foo", numDocsFoo);
|
||||||
|
|
|
@ -401,17 +401,23 @@ public class SystemDataStreamIT extends ESIntegTestCase {
|
||||||
Type.EXTERNAL,
|
Type.EXTERNAL,
|
||||||
ComposableIndexTemplate.builder()
|
ComposableIndexTemplate.builder()
|
||||||
.indexPatterns(List.of(".test-failure-store"))
|
.indexPatterns(List.of(".test-failure-store"))
|
||||||
.template(Template.builder().mappings(new CompressedXContent("""
|
.template(
|
||||||
{
|
Template.builder()
|
||||||
"properties": {
|
.mappings(new CompressedXContent("""
|
||||||
"@timestamp" : {
|
{
|
||||||
"type": "date"
|
"properties": {
|
||||||
},
|
"@timestamp" : {
|
||||||
"count": {
|
"type": "date"
|
||||||
"type": "long"
|
},
|
||||||
}
|
"count": {
|
||||||
}
|
"type": "long"
|
||||||
}""")).dataStreamOptions(new DataStreamOptions.Template(new DataStreamFailureStore.Template(true))))
|
}
|
||||||
|
}
|
||||||
|
}"""))
|
||||||
|
.dataStreamOptions(
|
||||||
|
new DataStreamOptions.Template(DataStreamFailureStore.builder().enabled(true).buildTemplate())
|
||||||
|
)
|
||||||
|
)
|
||||||
.dataStreamTemplate(new ComposableIndexTemplate.DataStreamTemplate())
|
.dataStreamTemplate(new ComposableIndexTemplate.DataStreamTemplate())
|
||||||
.build(),
|
.build(),
|
||||||
Map.of(),
|
Map.of(),
|
||||||
|
|
|
@ -25,7 +25,7 @@ import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.elasticsearch.datastreams.lifecycle.DataStreamLifecycleFixtures.putComposableIndexTemplate;
|
import static org.elasticsearch.datastreams.lifecycle.DataStreamLifecycleFixtures.putComposableIndexTemplate;
|
||||||
import static org.elasticsearch.datastreams.lifecycle.DataStreamLifecycleFixtures.randomLifecycleTemplate;
|
import static org.elasticsearch.datastreams.lifecycle.DataStreamLifecycleFixtures.randomDataLifecycleTemplate;
|
||||||
import static org.hamcrest.Matchers.equalTo;
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
import static org.hamcrest.Matchers.is;
|
import static org.hamcrest.Matchers.is;
|
||||||
import static org.hamcrest.Matchers.notNullValue;
|
import static org.hamcrest.Matchers.notNullValue;
|
||||||
|
@ -39,7 +39,7 @@ public class CrudDataStreamLifecycleIT extends ESIntegTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetLifecycle() throws Exception {
|
public void testGetLifecycle() throws Exception {
|
||||||
DataStreamLifecycle.Template lifecycle = randomLifecycleTemplate();
|
DataStreamLifecycle.Template lifecycle = randomDataLifecycleTemplate();
|
||||||
putComposableIndexTemplate("id1", null, List.of("with-lifecycle*"), null, null, lifecycle);
|
putComposableIndexTemplate("id1", null, List.of("with-lifecycle*"), null, null, lifecycle);
|
||||||
putComposableIndexTemplate("id2", null, List.of("without-lifecycle*"), null, null, null);
|
putComposableIndexTemplate("id2", null, List.of("without-lifecycle*"), null, null, null);
|
||||||
{
|
{
|
||||||
|
@ -226,7 +226,9 @@ public class CrudDataStreamLifecycleIT extends ESIntegTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testDeleteLifecycle() throws Exception {
|
public void testDeleteLifecycle() throws Exception {
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.builder().dataRetention(randomPositiveTimeValue()).buildTemplate();
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
|
.dataRetention(randomPositiveTimeValue())
|
||||||
|
.buildTemplate();
|
||||||
putComposableIndexTemplate("id1", null, List.of("with-lifecycle*"), null, null, lifecycle);
|
putComposableIndexTemplate("id1", null, List.of("with-lifecycle*"), null, null, lifecycle);
|
||||||
putComposableIndexTemplate("id2", null, List.of("without-lifecycle*"), null, null, null);
|
putComposableIndexTemplate("id2", null, List.of("without-lifecycle*"), null, null, null);
|
||||||
{
|
{
|
||||||
|
|
|
@ -207,7 +207,7 @@ public class CrudSystemDataStreamLifecycleIT extends ESIntegTestCase {
|
||||||
Template.builder()
|
Template.builder()
|
||||||
.settings(Settings.EMPTY)
|
.settings(Settings.EMPTY)
|
||||||
.mappings(mappings)
|
.mappings(mappings)
|
||||||
.lifecycle(DataStreamLifecycle.builder().dataRetention(randomPositiveTimeValue()))
|
.lifecycle(DataStreamLifecycle.dataLifecycleBuilder().dataRetention(randomPositiveTimeValue()))
|
||||||
)
|
)
|
||||||
.dataStreamTemplate(new DataStreamTemplate())
|
.dataStreamTemplate(new DataStreamTemplate())
|
||||||
.build(),
|
.build(),
|
||||||
|
|
|
@ -168,7 +168,7 @@ public class DataStreamLifecycleServiceIT extends ESIntegTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testRolloverAndRetention() throws Exception {
|
public void testRolloverAndRetention() throws Exception {
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.builder().dataRetention(TimeValue.ZERO).buildTemplate();
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.ZERO).buildTemplate();
|
||||||
|
|
||||||
putComposableIndexTemplate("id1", null, List.of("metrics-foo*"), null, null, lifecycle, false);
|
putComposableIndexTemplate("id1", null, List.of("metrics-foo*"), null, null, lifecycle, false);
|
||||||
|
|
||||||
|
@ -290,7 +290,9 @@ public class DataStreamLifecycleServiceIT extends ESIntegTestCase {
|
||||||
* days ago, and one with an origination date 1 day ago. After data stream lifecycle runs, we expect the one with the old
|
* days ago, and one with an origination date 1 day ago. After data stream lifecycle runs, we expect the one with the old
|
||||||
* origination date to have been deleted, and the one with the newer origination date to remain.
|
* origination date to have been deleted, and the one with the newer origination date to remain.
|
||||||
*/
|
*/
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.builder().dataRetention(TimeValue.timeValueDays(7)).buildTemplate();
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
|
.dataRetention(TimeValue.timeValueDays(7))
|
||||||
|
.buildTemplate();
|
||||||
|
|
||||||
putComposableIndexTemplate("id1", null, List.of("metrics-foo*"), null, null, lifecycle, false);
|
putComposableIndexTemplate("id1", null, List.of("metrics-foo*"), null, null, lifecycle, false);
|
||||||
|
|
||||||
|
@ -836,7 +838,7 @@ public class DataStreamLifecycleServiceIT extends ESIntegTestCase {
|
||||||
|
|
||||||
public void testReenableDataStreamLifecycle() throws Exception {
|
public void testReenableDataStreamLifecycle() throws Exception {
|
||||||
// start with a lifecycle that's not enabled
|
// start with a lifecycle that's not enabled
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.builder().enabled(false).buildTemplate();
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.dataLifecycleBuilder().enabled(false).buildTemplate();
|
||||||
|
|
||||||
putComposableIndexTemplate("id1", null, List.of("metrics-foo*"), null, null, lifecycle, false);
|
putComposableIndexTemplate("id1", null, List.of("metrics-foo*"), null, null, lifecycle, false);
|
||||||
String dataStreamName = "metrics-foo";
|
String dataStreamName = "metrics-foo";
|
||||||
|
@ -892,7 +894,7 @@ public class DataStreamLifecycleServiceIT extends ESIntegTestCase {
|
||||||
|
|
||||||
public void testLifecycleAppliedToFailureStore() throws Exception {
|
public void testLifecycleAppliedToFailureStore() throws Exception {
|
||||||
// We configure a lifecycle with downsampling to ensure it doesn't fail
|
// We configure a lifecycle with downsampling to ensure it doesn't fail
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.builder()
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(TimeValue.timeValueSeconds(20))
|
.dataRetention(TimeValue.timeValueSeconds(20))
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
|
@ -1088,7 +1090,8 @@ public class DataStreamLifecycleServiceIT extends ESIntegTestCase {
|
||||||
Template.builder()
|
Template.builder()
|
||||||
.settings(Settings.EMPTY)
|
.settings(Settings.EMPTY)
|
||||||
.lifecycle(
|
.lifecycle(
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.timeValueDays(SYSTEM_DATA_STREAM_RETENTION_DAYS))
|
DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
|
.dataRetention(TimeValue.timeValueDays(SYSTEM_DATA_STREAM_RETENTION_DAYS))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.build(),
|
.build(),
|
||||||
|
|
|
@ -265,7 +265,7 @@ public class ExplainDataStreamLifecycleIT extends ESIntegTestCase {
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
DataStreamLifecycle.Template.DATA_DEFAULT,
|
DataStreamLifecycle.Template.DATA_DEFAULT,
|
||||||
new DataStreamOptions.Template(new DataStreamFailureStore.Template(true))
|
new DataStreamOptions.Template(DataStreamFailureStore.builder().enabled(true).buildTemplate())
|
||||||
);
|
);
|
||||||
String dataStreamName = "metrics-foo";
|
String dataStreamName = "metrics-foo";
|
||||||
CreateDataStreamAction.Request createDataStreamRequest = new CreateDataStreamAction.Request(
|
CreateDataStreamAction.Request createDataStreamRequest = new CreateDataStreamAction.Request(
|
||||||
|
@ -400,7 +400,7 @@ public class ExplainDataStreamLifecycleIT extends ESIntegTestCase {
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
lifecycle,
|
lifecycle,
|
||||||
new DataStreamOptions.Template(new DataStreamFailureStore.Template(true))
|
new DataStreamOptions.Template(DataStreamFailureStore.builder().enabled(true).buildTemplate())
|
||||||
);
|
);
|
||||||
String dataStreamName = "metrics-foo";
|
String dataStreamName = "metrics-foo";
|
||||||
CreateDataStreamAction.Request createDataStreamRequest = new CreateDataStreamAction.Request(
|
CreateDataStreamAction.Request createDataStreamRequest = new CreateDataStreamAction.Request(
|
||||||
|
@ -501,7 +501,7 @@ public class ExplainDataStreamLifecycleIT extends ESIntegTestCase {
|
||||||
List.of("metrics-foo*"),
|
List.of("metrics-foo*"),
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
DataStreamLifecycle.builder().enabled(false).buildTemplate()
|
DataStreamLifecycle.dataLifecycleBuilder().enabled(false).buildTemplate()
|
||||||
);
|
);
|
||||||
CreateDataStreamAction.Request createDataStreamRequest = new CreateDataStreamAction.Request(
|
CreateDataStreamAction.Request createDataStreamRequest = new CreateDataStreamAction.Request(
|
||||||
TEST_REQUEST_TIMEOUT,
|
TEST_REQUEST_TIMEOUT,
|
||||||
|
|
|
@ -27,7 +27,6 @@ import org.elasticsearch.cluster.health.ClusterHealthStatus;
|
||||||
import org.elasticsearch.cluster.metadata.ComposableIndexTemplate;
|
import org.elasticsearch.cluster.metadata.ComposableIndexTemplate;
|
||||||
import org.elasticsearch.cluster.metadata.DataStreamFailureStore;
|
import org.elasticsearch.cluster.metadata.DataStreamFailureStore;
|
||||||
import org.elasticsearch.cluster.metadata.DataStreamOptions;
|
import org.elasticsearch.cluster.metadata.DataStreamOptions;
|
||||||
import org.elasticsearch.cluster.metadata.ResettableValue;
|
|
||||||
import org.elasticsearch.cluster.metadata.Template;
|
import org.elasticsearch.cluster.metadata.Template;
|
||||||
import org.elasticsearch.common.compress.CompressedXContent;
|
import org.elasticsearch.common.compress.CompressedXContent;
|
||||||
import org.elasticsearch.index.mapper.extras.MapperExtrasPlugin;
|
import org.elasticsearch.index.mapper.extras.MapperExtrasPlugin;
|
||||||
|
@ -271,11 +270,9 @@ public class DataStreamsStatsTests extends ESSingleNodeTestCase {
|
||||||
|
|
||||||
private String createDataStream(boolean hidden, boolean failureStore) throws Exception {
|
private String createDataStream(boolean hidden, boolean failureStore) throws Exception {
|
||||||
String dataStreamName = randomAlphaOfLength(10).toLowerCase(Locale.getDefault());
|
String dataStreamName = randomAlphaOfLength(10).toLowerCase(Locale.getDefault());
|
||||||
ResettableValue<DataStreamOptions.Template> failureStoreOptions = failureStore == false
|
DataStreamOptions.Template failureStoreOptions = failureStore == false
|
||||||
? ResettableValue.undefined()
|
? null
|
||||||
: ResettableValue.create(
|
: new DataStreamOptions.Template(DataStreamFailureStore.builder().enabled(true).buildTemplate());
|
||||||
new DataStreamOptions.Template(ResettableValue.create(new DataStreamFailureStore.Template(ResettableValue.create(true))))
|
|
||||||
);
|
|
||||||
Template idxTemplate = new Template(null, new CompressedXContent("""
|
Template idxTemplate = new Template(null, new CompressedXContent("""
|
||||||
{"properties":{"@timestamp":{"type":"date"},"data":{"type":"keyword"}}}
|
{"properties":{"@timestamp":{"type":"date"},"data":{"type":"keyword"}}}
|
||||||
"""), null, null, failureStoreOptions);
|
"""), null, null, failureStoreOptions);
|
||||||
|
|
|
@ -144,7 +144,11 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
|
||||||
}
|
}
|
||||||
// One lifecycle results to this lifecycle as the final
|
// One lifecycle results to this lifecycle as the final
|
||||||
{
|
{
|
||||||
DataStreamLifecycle.Template lifecycle = new DataStreamLifecycle.Template(true, randomRetention(), randomDownsampling());
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.createDataLifecycleTemplate(
|
||||||
|
true,
|
||||||
|
randomRetention(),
|
||||||
|
randomDownsampling()
|
||||||
|
);
|
||||||
List<DataStreamLifecycle.Template> lifecycles = List.of(lifecycle);
|
List<DataStreamLifecycle.Template> lifecycles = List.of(lifecycle);
|
||||||
DataStreamLifecycle result = composeDataLifecycles(lifecycles).build();
|
DataStreamLifecycle result = composeDataLifecycles(lifecycles).build();
|
||||||
// Defaults to true
|
// Defaults to true
|
||||||
|
@ -155,7 +159,11 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
|
||||||
// If the last lifecycle is missing a property (apart from enabled) we keep the latest from the previous ones
|
// If the last lifecycle is missing a property (apart from enabled) we keep the latest from the previous ones
|
||||||
// Enabled is always true unless it's explicitly set to false
|
// Enabled is always true unless it's explicitly set to false
|
||||||
{
|
{
|
||||||
DataStreamLifecycle.Template lifecycle = new DataStreamLifecycle.Template(false, randomPositiveTimeValue(), randomRounds());
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.createDataLifecycleTemplate(
|
||||||
|
false,
|
||||||
|
randomPositiveTimeValue(),
|
||||||
|
randomRounds()
|
||||||
|
);
|
||||||
List<DataStreamLifecycle.Template> lifecycles = List.of(lifecycle, DataStreamLifecycle.Template.DATA_DEFAULT);
|
List<DataStreamLifecycle.Template> lifecycles = List.of(lifecycle, DataStreamLifecycle.Template.DATA_DEFAULT);
|
||||||
DataStreamLifecycle result = composeDataLifecycles(lifecycles).build();
|
DataStreamLifecycle result = composeDataLifecycles(lifecycles).build();
|
||||||
assertThat(result.enabled(), equalTo(true));
|
assertThat(result.enabled(), equalTo(true));
|
||||||
|
@ -164,8 +172,16 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
|
||||||
}
|
}
|
||||||
// If both lifecycle have all properties, then the latest one overwrites all the others
|
// If both lifecycle have all properties, then the latest one overwrites all the others
|
||||||
{
|
{
|
||||||
DataStreamLifecycle.Template lifecycle1 = new DataStreamLifecycle.Template(false, randomPositiveTimeValue(), randomRounds());
|
DataStreamLifecycle.Template lifecycle1 = DataStreamLifecycle.createDataLifecycleTemplate(
|
||||||
DataStreamLifecycle.Template lifecycle2 = new DataStreamLifecycle.Template(true, randomPositiveTimeValue(), randomRounds());
|
false,
|
||||||
|
randomPositiveTimeValue(),
|
||||||
|
randomRounds()
|
||||||
|
);
|
||||||
|
DataStreamLifecycle.Template lifecycle2 = DataStreamLifecycle.createDataLifecycleTemplate(
|
||||||
|
true,
|
||||||
|
randomPositiveTimeValue(),
|
||||||
|
randomRounds()
|
||||||
|
);
|
||||||
List<DataStreamLifecycle.Template> lifecycles = List.of(lifecycle1, lifecycle2);
|
List<DataStreamLifecycle.Template> lifecycles = List.of(lifecycle1, lifecycle2);
|
||||||
DataStreamLifecycle result = composeDataLifecycles(lifecycles).build();
|
DataStreamLifecycle result = composeDataLifecycles(lifecycles).build();
|
||||||
assertThat(result.enabled(), equalTo(lifecycle2.enabled()));
|
assertThat(result.enabled(), equalTo(lifecycle2.enabled()));
|
||||||
|
|
|
@ -153,7 +153,7 @@ public class GetDataStreamsResponseTests extends ESTestCase {
|
||||||
.setGeneration(3)
|
.setGeneration(3)
|
||||||
.setAllowCustomRouting(true)
|
.setAllowCustomRouting(true)
|
||||||
.setIndexMode(IndexMode.STANDARD)
|
.setIndexMode(IndexMode.STANDARD)
|
||||||
.setLifecycle(new DataStreamLifecycle(false, null, null))
|
.setLifecycle(DataStreamLifecycle.createDataLifecycle(false, null, null))
|
||||||
.setDataStreamOptions(DataStreamOptions.FAILURE_STORE_ENABLED)
|
.setDataStreamOptions(DataStreamOptions.FAILURE_STORE_ENABLED)
|
||||||
.setFailureIndices(DataStream.DataStreamIndices.failureIndicesBuilder(failureStores).build())
|
.setFailureIndices(DataStream.DataStreamIndices.failureIndicesBuilder(failureStores).build())
|
||||||
.build();
|
.build();
|
||||||
|
|
|
@ -128,8 +128,8 @@ public class DataStreamLifecycleFixtures {
|
||||||
assertTrue(client().execute(TransportPutComposableIndexTemplateAction.TYPE, request).actionGet().isAcknowledged());
|
assertTrue(client().execute(TransportPutComposableIndexTemplateAction.TYPE, request).actionGet().isAcknowledged());
|
||||||
}
|
}
|
||||||
|
|
||||||
static DataStreamLifecycle.Template randomLifecycleTemplate() {
|
static DataStreamLifecycle.Template randomDataLifecycleTemplate() {
|
||||||
return new DataStreamLifecycle.Template(
|
return DataStreamLifecycle.createDataLifecycleTemplate(
|
||||||
frequently(),
|
frequently(),
|
||||||
randomResettable(ESTestCase::randomTimeValue),
|
randomResettable(ESTestCase::randomTimeValue),
|
||||||
randomResettable(DataStreamLifecycleFixtures::randomDownsamplingRounds)
|
randomResettable(DataStreamLifecycleFixtures::randomDownsamplingRounds)
|
||||||
|
|
|
@ -206,7 +206,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
2,
|
2,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.ZERO).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.ZERO).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
builder.put(dataStream);
|
builder.put(dataStream);
|
||||||
|
@ -269,7 +269,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
numFailureIndices,
|
numFailureIndices,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.timeValueDays(700)).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.timeValueDays(700)).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
builder.put(dataStream);
|
builder.put(dataStream);
|
||||||
|
@ -304,7 +304,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
dataStream.copy()
|
dataStream.copy()
|
||||||
.setName(dataStreamName)
|
.setName(dataStreamName)
|
||||||
.setGeneration(dataStream.getGeneration() + 1)
|
.setGeneration(dataStream.getGeneration() + 1)
|
||||||
.setLifecycle(DataStreamLifecycle.builder().dataRetention(TimeValue.ZERO).build())
|
.setLifecycle(DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.ZERO).build())
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
clusterState = ClusterState.builder(clusterState).putProjectMetadata(builder).build();
|
clusterState = ClusterState.builder(clusterState).putProjectMetadata(builder).build();
|
||||||
|
@ -343,7 +343,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
dataStream.copy()
|
dataStream.copy()
|
||||||
.setName(dataStreamName)
|
.setName(dataStreamName)
|
||||||
.setGeneration(dataStream.getGeneration() + 1)
|
.setGeneration(dataStream.getGeneration() + 1)
|
||||||
.setLifecycle(DataStreamLifecycle.builder().build())
|
.setLifecycle(DataStreamLifecycle.dataLifecycleBuilder().build())
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
clusterState = ClusterState.builder(clusterState).putProjectMetadata(builder).build();
|
clusterState = ClusterState.builder(clusterState).putProjectMetadata(builder).build();
|
||||||
|
@ -378,7 +378,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
dataStreamName,
|
dataStreamName,
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.timeValueMillis(0)).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.timeValueMillis(0)).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
builder.put(dataStream);
|
builder.put(dataStream);
|
||||||
|
@ -456,7 +456,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
Settings.builder()
|
Settings.builder()
|
||||||
.put(IndexMetadata.LIFECYCLE_NAME, "ILM_policy")
|
.put(IndexMetadata.LIFECYCLE_NAME, "ILM_policy")
|
||||||
.put(IndexMetadata.SETTING_VERSION_CREATED, IndexVersion.current()),
|
.put(IndexMetadata.SETTING_VERSION_CREATED, IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.ZERO).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.ZERO).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
builder.put(dataStream);
|
builder.put(dataStream);
|
||||||
|
@ -548,7 +548,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
dataStreamName,
|
dataStreamName,
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.timeValueDays(700)).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.timeValueDays(700)).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
// all backing indices are in the error store
|
// all backing indices are in the error store
|
||||||
|
@ -586,7 +586,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
ilmManagedDataStreamName,
|
ilmManagedDataStreamName,
|
||||||
3,
|
3,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.timeValueDays(700)).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.timeValueDays(700)).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
// all backing indices are in the error store
|
// all backing indices are in the error store
|
||||||
|
@ -600,7 +600,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
dataStreamWithBackingIndicesInErrorState,
|
dataStreamWithBackingIndicesInErrorState,
|
||||||
5,
|
5,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.timeValueDays(700)).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.timeValueDays(700)).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
// put all backing indices in the error store
|
// put all backing indices in the error store
|
||||||
|
@ -652,7 +652,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()).put(MergePolicyConfig.INDEX_MERGE_POLICY_FLOOR_SEGMENT_SETTING.getKey(), ONE_HUNDRED_MB)
|
settings(IndexVersion.current()).put(MergePolicyConfig.INDEX_MERGE_POLICY_FLOOR_SEGMENT_SETTING.getKey(), ONE_HUNDRED_MB)
|
||||||
.put(MergePolicyConfig.INDEX_MERGE_POLICY_MERGE_FACTOR_SETTING.getKey(), TARGET_MERGE_FACTOR_VALUE),
|
.put(MergePolicyConfig.INDEX_MERGE_POLICY_MERGE_FACTOR_SETTING.getKey(), TARGET_MERGE_FACTOR_VALUE),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.MAX_VALUE).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
builder.put(dataStream);
|
builder.put(dataStream);
|
||||||
|
@ -754,7 +754,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()).put(MergePolicyConfig.INDEX_MERGE_POLICY_FLOOR_SEGMENT_SETTING.getKey(), ONE_HUNDRED_MB)
|
settings(IndexVersion.current()).put(MergePolicyConfig.INDEX_MERGE_POLICY_FLOOR_SEGMENT_SETTING.getKey(), ONE_HUNDRED_MB)
|
||||||
.put(MergePolicyConfig.INDEX_MERGE_POLICY_MERGE_FACTOR_SETTING.getKey(), TARGET_MERGE_FACTOR_VALUE),
|
.put(MergePolicyConfig.INDEX_MERGE_POLICY_MERGE_FACTOR_SETTING.getKey(), TARGET_MERGE_FACTOR_VALUE),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.MAX_VALUE).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
builder.put(dataStream);
|
builder.put(dataStream);
|
||||||
|
@ -916,7 +916,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
1L,
|
1L,
|
||||||
null,
|
null,
|
||||||
false,
|
false,
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.MAX_VALUE).build()
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build()
|
||||||
);
|
);
|
||||||
|
|
||||||
ProjectMetadata.Builder builder = ProjectMetadata.builder(randomProjectIdOrDefault()).put(newIndexMetadata, true).put(dataStream);
|
ProjectMetadata.Builder builder = ProjectMetadata.builder(randomProjectIdOrDefault()).put(newIndexMetadata, true).put(dataStream);
|
||||||
|
@ -1091,7 +1091,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
dataStreamName,
|
dataStreamName,
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.MAX_VALUE).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
builder.put(dataStream);
|
builder.put(dataStream);
|
||||||
|
@ -1173,7 +1173,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
.put(MergePolicyConfig.INDEX_MERGE_POLICY_MERGE_FACTOR_SETTING.getKey(), TARGET_MERGE_FACTOR_VALUE)
|
.put(MergePolicyConfig.INDEX_MERGE_POLICY_MERGE_FACTOR_SETTING.getKey(), TARGET_MERGE_FACTOR_VALUE)
|
||||||
.put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
|
.put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
|
||||||
.put("index.routing_path", "@timestamp"),
|
.put("index.routing_path", "@timestamp"),
|
||||||
DataStreamLifecycle.builder()
|
DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(new DownsamplingRound(TimeValue.timeValueMillis(0), new DownsampleConfig(new DateHistogramInterval("5m"))))
|
List.of(new DownsamplingRound(TimeValue.timeValueMillis(0), new DownsampleConfig(new DateHistogramInterval("5m"))))
|
||||||
)
|
)
|
||||||
|
@ -1322,7 +1322,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
.put(MergePolicyConfig.INDEX_MERGE_POLICY_MERGE_FACTOR_SETTING.getKey(), TARGET_MERGE_FACTOR_VALUE)
|
.put(MergePolicyConfig.INDEX_MERGE_POLICY_MERGE_FACTOR_SETTING.getKey(), TARGET_MERGE_FACTOR_VALUE)
|
||||||
.put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
|
.put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
|
||||||
.put("index.routing_path", "@timestamp"),
|
.put("index.routing_path", "@timestamp"),
|
||||||
DataStreamLifecycle.builder()
|
DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(new DownsamplingRound(TimeValue.timeValueMillis(0), new DownsampleConfig(new DateHistogramInterval("5m"))))
|
List.of(new DownsamplingRound(TimeValue.timeValueMillis(0), new DownsampleConfig(new DateHistogramInterval("5m"))))
|
||||||
)
|
)
|
||||||
|
@ -1512,7 +1512,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
2,
|
2,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.ZERO).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.ZERO).build(),
|
||||||
now
|
now
|
||||||
).copy().setDataStreamOptions(DataStreamOptions.FAILURE_STORE_DISABLED).build(); // failure store is managed even when disabled
|
).copy().setDataStreamOptions(DataStreamOptions.FAILURE_STORE_DISABLED).build(); // failure store is managed even when disabled
|
||||||
builder.put(dataStream);
|
builder.put(dataStream);
|
||||||
|
@ -1581,7 +1581,7 @@ public class DataStreamLifecycleServiceTests extends ESTestCase {
|
||||||
2,
|
2,
|
||||||
settings(IndexVersion.current()).put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
|
settings(IndexVersion.current()).put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
|
||||||
.put("index.routing_path", "@timestamp"),
|
.put("index.routing_path", "@timestamp"),
|
||||||
DataStreamLifecycle.builder()
|
DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(new DownsamplingRound(TimeValue.timeValueMillis(0), new DownsampleConfig(new DateHistogramInterval("5m"))))
|
List.of(new DownsamplingRound(TimeValue.timeValueMillis(0), new DownsampleConfig(new DateHistogramInterval("5m"))))
|
||||||
)
|
)
|
||||||
|
|
|
@ -95,7 +95,7 @@ public class TransportGetDataStreamLifecycleStatsActionTests extends ESTestCase
|
||||||
"dsl-managed-index",
|
"dsl-managed-index",
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.timeValueDays(10)).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.timeValueDays(10)).build(),
|
||||||
Clock.systemUTC().millis()
|
Clock.systemUTC().millis()
|
||||||
);
|
);
|
||||||
indicesInError.add(dslDataStream.getIndices().get(randomInt(numBackingIndices - 1)).getName());
|
indicesInError.add(dslDataStream.getIndices().get(randomInt(numBackingIndices - 1)).getName());
|
||||||
|
@ -131,7 +131,7 @@ public class TransportGetDataStreamLifecycleStatsActionTests extends ESTestCase
|
||||||
IndexMetadata indexMetadata = indexMetaBuilder.build();
|
IndexMetadata indexMetadata = indexMetaBuilder.build();
|
||||||
builder.put(indexMetadata, false);
|
builder.put(indexMetadata, false);
|
||||||
backingIndices.add(indexMetadata.getIndex());
|
backingIndices.add(indexMetadata.getIndex());
|
||||||
builder.put(newInstance(dataStreamName, backingIndices, 3, null, false, DataStreamLifecycle.builder().build()));
|
builder.put(newInstance(dataStreamName, backingIndices, 3, null, false, DataStreamLifecycle.dataLifecycleBuilder().build()));
|
||||||
}
|
}
|
||||||
ProjectMetadata project = builder.build();
|
ProjectMetadata project = builder.build();
|
||||||
when(errorStore.getAllIndices(project.id())).thenReturn(indicesInError);
|
when(errorStore.getAllIndices(project.id())).thenReturn(indicesInError);
|
||||||
|
|
|
@ -52,7 +52,7 @@ public class DeleteSourceAndAddDownsampleToDSTests extends ESTestCase {
|
||||||
dataStreamName,
|
dataStreamName,
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.MAX_VALUE).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
builder.put(dataStream);
|
builder.put(dataStream);
|
||||||
|
@ -80,7 +80,7 @@ public class DeleteSourceAndAddDownsampleToDSTests extends ESTestCase {
|
||||||
dataStreamName,
|
dataStreamName,
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.MAX_VALUE).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
|
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
|
||||||
|
@ -125,7 +125,7 @@ public class DeleteSourceAndAddDownsampleToDSTests extends ESTestCase {
|
||||||
dataStreamName,
|
dataStreamName,
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.MAX_VALUE).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
builder.put(dataStream);
|
builder.put(dataStream);
|
||||||
|
@ -159,7 +159,7 @@ public class DeleteSourceAndAddDownsampleToDSTests extends ESTestCase {
|
||||||
dataStreamName,
|
dataStreamName,
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.MAX_VALUE).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
|
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
|
||||||
|
@ -221,7 +221,7 @@ public class DeleteSourceAndAddDownsampleToDSTests extends ESTestCase {
|
||||||
dataStreamName,
|
dataStreamName,
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.MAX_VALUE).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
|
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
|
||||||
|
@ -272,7 +272,7 @@ public class DeleteSourceAndAddDownsampleToDSTests extends ESTestCase {
|
||||||
dataStreamName,
|
dataStreamName,
|
||||||
numBackingIndices,
|
numBackingIndices,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.MAX_VALUE).build(),
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
|
||||||
now
|
now
|
||||||
);
|
);
|
||||||
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
|
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
|
||||||
|
|
|
@ -149,7 +149,7 @@ public class PutDataStreamLifecycleAction {
|
||||||
) {
|
) {
|
||||||
super(masterNodeTimeout, ackTimeout);
|
super(masterNodeTimeout, ackTimeout);
|
||||||
this.names = names;
|
this.names = names;
|
||||||
this.lifecycle = DataStreamLifecycle.builder()
|
this.lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(dataRetention)
|
.dataRetention(dataRetention)
|
||||||
.enabled(enabled == null || enabled)
|
.enabled(enabled == null || enabled)
|
||||||
.downsampling(downsampling)
|
.downsampling(downsampling)
|
||||||
|
|
|
@ -86,7 +86,7 @@ public class DataStreamLifecycle implements SimpleDiffable<DataStreamLifecycle>,
|
||||||
Setting.Property.NodeScope
|
Setting.Property.NodeScope
|
||||||
);
|
);
|
||||||
|
|
||||||
public static final DataStreamLifecycle DEFAULT_DATA_LIFECYCLE = new DataStreamLifecycle(null, null, null);
|
public static final DataStreamLifecycle DEFAULT_DATA_LIFECYCLE = DataStreamLifecycle.createDataLifecycle(null, null, null);
|
||||||
|
|
||||||
public static final String DATA_STREAM_LIFECYCLE_ORIGIN = "data_stream_lifecycle";
|
public static final String DATA_STREAM_LIFECYCLE_ORIGIN = "data_stream_lifecycle";
|
||||||
|
|
||||||
|
@ -132,17 +132,27 @@ public class DataStreamLifecycle implements SimpleDiffable<DataStreamLifecycle>,
|
||||||
@Nullable
|
@Nullable
|
||||||
private final List<DownsamplingRound> downsampling;
|
private final List<DownsamplingRound> downsampling;
|
||||||
|
|
||||||
public DataStreamLifecycle(
|
// Visible for testing, preferably use the factory methods that are specialised by lifecycle type,
|
||||||
@Nullable Boolean enabled,
|
// for example for the data component.
|
||||||
@Nullable TimeValue dataRetention,
|
DataStreamLifecycle(@Nullable Boolean enabled, @Nullable TimeValue dataRetention, @Nullable List<DownsamplingRound> downsampling) {
|
||||||
@Nullable List<DownsamplingRound> downsampling
|
|
||||||
) {
|
|
||||||
this.enabled = enabled == null || enabled;
|
this.enabled = enabled == null || enabled;
|
||||||
this.dataRetention = dataRetention;
|
this.dataRetention = dataRetention;
|
||||||
DownsamplingRound.validateRounds(downsampling);
|
DownsamplingRound.validateRounds(downsampling);
|
||||||
this.downsampling = downsampling;
|
this.downsampling = downsampling;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This factory method creates a lifecycle applicable for the data index component of a data stream. This
|
||||||
|
* means it supports all configuration applicable for backing indices.
|
||||||
|
*/
|
||||||
|
public static DataStreamLifecycle createDataLifecycle(
|
||||||
|
@Nullable Boolean enabled,
|
||||||
|
@Nullable TimeValue dataRetention,
|
||||||
|
@Nullable List<DownsamplingRound> downsampling
|
||||||
|
) {
|
||||||
|
return new DataStreamLifecycle(enabled, dataRetention, downsampling);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true, if this data stream lifecycle configuration is enabled, false otherwise
|
* Returns true, if this data stream lifecycle configuration is enabled, false otherwise
|
||||||
*/
|
*/
|
||||||
|
@ -542,6 +552,22 @@ public class DataStreamLifecycle implements SimpleDiffable<DataStreamLifecycle>,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Template createDataLifecycleTemplate(
|
||||||
|
boolean enabled,
|
||||||
|
TimeValue dataRetention,
|
||||||
|
List<DataStreamLifecycle.DownsamplingRound> downsampling
|
||||||
|
) {
|
||||||
|
return new Template(enabled, ResettableValue.create(dataRetention), ResettableValue.create(downsampling));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Template createDataLifecycleTemplate(
|
||||||
|
boolean enabled,
|
||||||
|
ResettableValue<TimeValue> dataRetention,
|
||||||
|
ResettableValue<List<DataStreamLifecycle.DownsamplingRound>> downsampling
|
||||||
|
) {
|
||||||
|
return new Template(enabled, dataRetention, downsampling);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the template configuration of a lifecycle. It supports explicitly resettable values
|
* Represents the template configuration of a lifecycle. It supports explicitly resettable values
|
||||||
* to allow value reset during template composition.
|
* to allow value reset during template composition.
|
||||||
|
@ -552,7 +578,7 @@ public class DataStreamLifecycle implements SimpleDiffable<DataStreamLifecycle>,
|
||||||
ResettableValue<List<DataStreamLifecycle.DownsamplingRound>> downsampling
|
ResettableValue<List<DataStreamLifecycle.DownsamplingRound>> downsampling
|
||||||
) implements ToXContentObject, Writeable {
|
) implements ToXContentObject, Writeable {
|
||||||
|
|
||||||
public Template(boolean enabled, TimeValue dataRetention, List<DataStreamLifecycle.DownsamplingRound> downsampling) {
|
Template(boolean enabled, TimeValue dataRetention, List<DataStreamLifecycle.DownsamplingRound> downsampling) {
|
||||||
this(enabled, ResettableValue.create(dataRetention), ResettableValue.create(downsampling));
|
this(enabled, ResettableValue.create(dataRetention), ResettableValue.create(downsampling));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -736,8 +762,8 @@ public class DataStreamLifecycle implements SimpleDiffable<DataStreamLifecycle>,
|
||||||
return new Builder(template);
|
return new Builder(template);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Builder builder() {
|
public static Builder dataLifecycleBuilder() {
|
||||||
return new Builder((DataStreamLifecycle) null);
|
return new Builder();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -750,20 +776,18 @@ public class DataStreamLifecycle implements SimpleDiffable<DataStreamLifecycle>,
|
||||||
@Nullable
|
@Nullable
|
||||||
private List<DownsamplingRound> downsampling = null;
|
private List<DownsamplingRound> downsampling = null;
|
||||||
|
|
||||||
|
private Builder() {}
|
||||||
|
|
||||||
private Builder(DataStreamLifecycle.Template template) {
|
private Builder(DataStreamLifecycle.Template template) {
|
||||||
if (template != null) {
|
enabled = template.enabled();
|
||||||
enabled = template.enabled();
|
dataRetention = template.dataRetention().get();
|
||||||
dataRetention = template.dataRetention().get();
|
downsampling = template.downsampling().get();
|
||||||
downsampling = template.downsampling().get();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Builder(DataStreamLifecycle lifecycle) {
|
private Builder(DataStreamLifecycle lifecycle) {
|
||||||
if (lifecycle != null) {
|
enabled = lifecycle.enabled();
|
||||||
enabled = lifecycle.enabled();
|
dataRetention = lifecycle.dataRetention();
|
||||||
dataRetention = lifecycle.dataRetention();
|
downsampling = lifecycle.downsampling();
|
||||||
downsampling = lifecycle.downsampling();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Builder composeTemplate(DataStreamLifecycle.Template template) {
|
public Builder composeTemplate(DataStreamLifecycle.Template template) {
|
||||||
|
|
|
@ -61,7 +61,9 @@ public class Template implements SimpleDiffable<Template>, ToXContentObject {
|
||||||
a[4] == null ? ResettableValue.undefined() : (ResettableValue<DataStreamOptions.Template>) a[4]
|
a[4] == null ? ResettableValue.undefined() : (ResettableValue<DataStreamOptions.Template>) a[4]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
public static final DataStreamLifecycle.Template DISABLED_LIFECYCLE = DataStreamLifecycle.builder().enabled(false).buildTemplate();
|
public static final DataStreamLifecycle.Template DISABLED_LIFECYCLE = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
|
.enabled(false)
|
||||||
|
.buildTemplate();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
PARSER.declareObject(ConstructingObjectParser.optionalConstructorArg(), (p, c) -> Settings.fromXContent(p), SETTINGS);
|
PARSER.declareObject(ConstructingObjectParser.optionalConstructorArg(), (p, c) -> Settings.fromXContent(p), SETTINGS);
|
||||||
|
|
|
@ -99,7 +99,7 @@ public class GetDataStreamActionTests extends ESTestCase {
|
||||||
|
|
||||||
private static DataStream newDataStreamInstance(boolean isSystem, TimeValue retention) {
|
private static DataStream newDataStreamInstance(boolean isSystem, TimeValue retention) {
|
||||||
List<Index> indices = List.of(new Index(randomAlphaOfLength(10), randomAlphaOfLength(10)));
|
List<Index> indices = List.of(new Index(randomAlphaOfLength(10), randomAlphaOfLength(10)));
|
||||||
DataStreamLifecycle lifecycle = new DataStreamLifecycle(true, retention, null);
|
DataStreamLifecycle lifecycle = DataStreamLifecycle.createDataLifecycle(true, retention, null);
|
||||||
return DataStream.builder(randomAlphaOfLength(50), indices)
|
return DataStream.builder(randomAlphaOfLength(50), indices)
|
||||||
.setGeneration(randomLongBetween(1, 1000))
|
.setGeneration(randomLongBetween(1, 1000))
|
||||||
.setMetadata(Map.of())
|
.setMetadata(Map.of())
|
||||||
|
|
|
@ -200,7 +200,7 @@ public class ExplainIndexDataStreamLifecycleTests extends AbstractWireSerializin
|
||||||
TimeValue configuredRetention = TimeValue.timeValueDays(100);
|
TimeValue configuredRetention = TimeValue.timeValueDays(100);
|
||||||
TimeValue globalDefaultRetention = TimeValue.timeValueDays(10);
|
TimeValue globalDefaultRetention = TimeValue.timeValueDays(10);
|
||||||
TimeValue globalMaxRetention = TimeValue.timeValueDays(50);
|
TimeValue globalMaxRetention = TimeValue.timeValueDays(50);
|
||||||
DataStreamLifecycle dataStreamLifecycle = new DataStreamLifecycle(true, configuredRetention, null);
|
DataStreamLifecycle dataStreamLifecycle = DataStreamLifecycle.createDataLifecycle(true, configuredRetention, null);
|
||||||
{
|
{
|
||||||
boolean isSystemDataStream = true;
|
boolean isSystemDataStream = true;
|
||||||
ExplainIndexDataStreamLifecycle explainIndexDataStreamLifecycle = createManagedIndexDataStreamLifecycleExplanation(
|
ExplainIndexDataStreamLifecycle explainIndexDataStreamLifecycle = createManagedIndexDataStreamLifecycleExplanation(
|
||||||
|
|
|
@ -96,7 +96,7 @@ public class GetDataStreamLifecycleActionTests extends ESTestCase {
|
||||||
TimeValue globalDefaultRetention = TimeValue.timeValueDays(10);
|
TimeValue globalDefaultRetention = TimeValue.timeValueDays(10);
|
||||||
TimeValue globalMaxRetention = TimeValue.timeValueDays(50);
|
TimeValue globalMaxRetention = TimeValue.timeValueDays(50);
|
||||||
DataStreamGlobalRetention globalRetention = new DataStreamGlobalRetention(globalDefaultRetention, globalMaxRetention);
|
DataStreamGlobalRetention globalRetention = new DataStreamGlobalRetention(globalDefaultRetention, globalMaxRetention);
|
||||||
DataStreamLifecycle lifecycle = new DataStreamLifecycle(true, configuredRetention, null);
|
DataStreamLifecycle lifecycle = DataStreamLifecycle.createDataLifecycle(true, configuredRetention, null);
|
||||||
{
|
{
|
||||||
boolean isInternalDataStream = true;
|
boolean isInternalDataStream = true;
|
||||||
GetDataStreamLifecycleAction.Response.DataStreamLifecycle explainIndexDataStreamLifecycle = createDataStreamLifecycle(
|
GetDataStreamLifecycleAction.Response.DataStreamLifecycle explainIndexDataStreamLifecycle = createDataStreamLifecycle(
|
||||||
|
|
|
@ -90,7 +90,7 @@ public class ComponentTemplateTests extends SimpleDiffableSerializationTestCase<
|
||||||
templateBuilder.aliases(randomAliases());
|
templateBuilder.aliases(randomAliases());
|
||||||
}
|
}
|
||||||
if (randomBoolean() && supportsDataStreams) {
|
if (randomBoolean() && supportsDataStreams) {
|
||||||
templateBuilder.lifecycle(DataStreamLifecycleTemplateTests.randomLifecycleTemplate());
|
templateBuilder.lifecycle(DataStreamLifecycleTemplateTests.randomDataLifecycleTemplate());
|
||||||
}
|
}
|
||||||
if (randomBoolean() && supportsDataStreams) {
|
if (randomBoolean() && supportsDataStreams) {
|
||||||
templateBuilder.dataStreamOptions(randomDataStreamOptionsTemplate());
|
templateBuilder.dataStreamOptions(randomDataStreamOptionsTemplate());
|
||||||
|
@ -182,7 +182,7 @@ public class ComponentTemplateTests extends SimpleDiffableSerializationTestCase<
|
||||||
);
|
);
|
||||||
case 3 -> new ComponentTemplate(
|
case 3 -> new ComponentTemplate(
|
||||||
Template.builder(ot)
|
Template.builder(ot)
|
||||||
.lifecycle(randomValueOtherThan(ot.lifecycle(), DataStreamLifecycleTemplateTests::randomLifecycleTemplate))
|
.lifecycle(randomValueOtherThan(ot.lifecycle(), DataStreamLifecycleTemplateTests::randomDataLifecycleTemplate))
|
||||||
.build(),
|
.build(),
|
||||||
orig.version(),
|
orig.version(),
|
||||||
orig.metadata(),
|
orig.metadata(),
|
||||||
|
@ -273,7 +273,7 @@ public class ComponentTemplateTests extends SimpleDiffableSerializationTestCase<
|
||||||
Settings settings = null;
|
Settings settings = null;
|
||||||
CompressedXContent mappings = null;
|
CompressedXContent mappings = null;
|
||||||
Map<String, AliasMetadata> aliases = null;
|
Map<String, AliasMetadata> aliases = null;
|
||||||
ResettableValue<DataStreamOptions.Template> dataStreamOptions = ResettableValue.undefined();
|
DataStreamOptions.Template dataStreamOptions = null;
|
||||||
if (randomBoolean()) {
|
if (randomBoolean()) {
|
||||||
settings = randomSettings();
|
settings = randomSettings();
|
||||||
}
|
}
|
||||||
|
@ -284,7 +284,8 @@ public class ComponentTemplateTests extends SimpleDiffableSerializationTestCase<
|
||||||
aliases = randomAliases();
|
aliases = randomAliases();
|
||||||
}
|
}
|
||||||
if (randomBoolean()) {
|
if (randomBoolean()) {
|
||||||
dataStreamOptions = randomDataStreamOptionsTemplate();
|
// Do not set random lifecycle to avoid having data_retention and effective_retention in the response.
|
||||||
|
dataStreamOptions = new DataStreamOptions.Template(DataStreamFailureStore.builder().enabled(randomBoolean()).buildTemplate());
|
||||||
}
|
}
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.Template.DATA_DEFAULT;
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.Template.DATA_DEFAULT;
|
||||||
ComponentTemplate template = new ComponentTemplate(
|
ComponentTemplate template = new ComponentTemplate(
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class ComposableIndexTemplateTests extends SimpleDiffableSerializationTes
|
||||||
builder.aliases(randomAliases());
|
builder.aliases(randomAliases());
|
||||||
}
|
}
|
||||||
if (dataStreamTemplate != null && randomBoolean()) {
|
if (dataStreamTemplate != null && randomBoolean()) {
|
||||||
builder.lifecycle(DataStreamLifecycleTemplateTests.randomLifecycleTemplate());
|
builder.lifecycle(DataStreamLifecycleTemplateTests.randomDataLifecycleTemplate());
|
||||||
}
|
}
|
||||||
template = builder.build();
|
template = builder.build();
|
||||||
}
|
}
|
||||||
|
@ -174,7 +174,9 @@ public class ComposableIndexTemplateTests extends SimpleDiffableSerializationTes
|
||||||
.mappings(randomMappings(orig.getDataStreamTemplate()))
|
.mappings(randomMappings(orig.getDataStreamTemplate()))
|
||||||
.aliases(randomAliases())
|
.aliases(randomAliases())
|
||||||
.lifecycle(
|
.lifecycle(
|
||||||
orig.getDataStreamTemplate() == null ? null : DataStreamLifecycleTemplateTests.randomLifecycleTemplate()
|
orig.getDataStreamTemplate() == null
|
||||||
|
? null
|
||||||
|
: DataStreamLifecycleTemplateTests.randomDataLifecycleTemplate()
|
||||||
)
|
)
|
||||||
.build()
|
.build()
|
||||||
)
|
)
|
||||||
|
@ -221,7 +223,7 @@ public class ComposableIndexTemplateTests extends SimpleDiffableSerializationTes
|
||||||
Settings settings = null;
|
Settings settings = null;
|
||||||
CompressedXContent mappings = null;
|
CompressedXContent mappings = null;
|
||||||
Map<String, AliasMetadata> aliases = null;
|
Map<String, AliasMetadata> aliases = null;
|
||||||
ResettableValue<DataStreamOptions.Template> dataStreamOptions = ResettableValue.undefined();
|
DataStreamOptions.Template dataStreamOptions = null;
|
||||||
ComposableIndexTemplate.DataStreamTemplate dataStreamTemplate = randomDataStreamTemplate();
|
ComposableIndexTemplate.DataStreamTemplate dataStreamTemplate = randomDataStreamTemplate();
|
||||||
if (randomBoolean()) {
|
if (randomBoolean()) {
|
||||||
settings = randomSettings();
|
settings = randomSettings();
|
||||||
|
@ -233,7 +235,8 @@ public class ComposableIndexTemplateTests extends SimpleDiffableSerializationTes
|
||||||
aliases = randomAliases();
|
aliases = randomAliases();
|
||||||
}
|
}
|
||||||
if (randomBoolean()) {
|
if (randomBoolean()) {
|
||||||
dataStreamOptions = ComponentTemplateTests.randomDataStreamOptionsTemplate();
|
// Do not set random lifecycle to avoid having data_retention and effective_retention in the response.
|
||||||
|
dataStreamOptions = new DataStreamOptions.Template(DataStreamFailureStore.builder().enabled(randomBoolean()).buildTemplate());
|
||||||
}
|
}
|
||||||
// We use the empty lifecycle so the global retention can be in effect
|
// We use the empty lifecycle so the global retention can be in effect
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.Template.DATA_DEFAULT;
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.Template.DATA_DEFAULT;
|
||||||
|
|
|
@ -31,7 +31,7 @@ public class DataStreamLifecycleTemplateTests extends AbstractXContentSerializin
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DataStreamLifecycle.Template createTestInstance() {
|
protected DataStreamLifecycle.Template createTestInstance() {
|
||||||
return randomLifecycleTemplate();
|
return randomDataLifecycleTemplate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -57,7 +57,7 @@ public class DataStreamLifecycleTemplateTests extends AbstractXContentSerializin
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder()
|
() -> DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -80,7 +80,7 @@ public class DataStreamLifecycleTemplateTests extends AbstractXContentSerializin
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder()
|
() -> DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -100,7 +100,7 @@ public class DataStreamLifecycleTemplateTests extends AbstractXContentSerializin
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder()
|
() -> DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -120,14 +120,14 @@ public class DataStreamLifecycleTemplateTests extends AbstractXContentSerializin
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder().downsampling((List.of())).buildTemplate()
|
() -> DataStreamLifecycle.dataLifecycleBuilder().downsampling((List.of())).buildTemplate()
|
||||||
);
|
);
|
||||||
assertThat(exception.getMessage(), equalTo("Downsampling configuration should have at least one round configured."));
|
assertThat(exception.getMessage(), equalTo("Downsampling configuration should have at least one round configured."));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder()
|
() -> DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
Stream.iterate(1, i -> i * 2)
|
Stream.iterate(1, i -> i * 2)
|
||||||
.limit(12)
|
.limit(12)
|
||||||
|
@ -147,7 +147,7 @@ public class DataStreamLifecycleTemplateTests extends AbstractXContentSerializin
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder()
|
() -> DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -165,8 +165,8 @@ public class DataStreamLifecycleTemplateTests extends AbstractXContentSerializin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DataStreamLifecycle.Template randomLifecycleTemplate() {
|
public static DataStreamLifecycle.Template randomDataLifecycleTemplate() {
|
||||||
return new DataStreamLifecycle.Template(randomBoolean(), randomRetention(), randomDownsampling());
|
return DataStreamLifecycle.createDataLifecycleTemplate(randomBoolean(), randomRetention(), randomDownsampling());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ResettableValue<TimeValue> randomRetention() {
|
private static ResettableValue<TimeValue> randomRetention() {
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class DataStreamLifecycleTests extends AbstractXContentSerializingTestCas
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected DataStreamLifecycle createTestInstance() {
|
protected DataStreamLifecycle createTestInstance() {
|
||||||
return randomLifecycle();
|
return randomDataLifecycle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -172,7 +172,7 @@ public class DataStreamLifecycleTests extends AbstractXContentSerializingTestCas
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder()
|
() -> DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -195,7 +195,7 @@ public class DataStreamLifecycleTests extends AbstractXContentSerializingTestCas
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder()
|
() -> DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -215,7 +215,7 @@ public class DataStreamLifecycleTests extends AbstractXContentSerializingTestCas
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder()
|
() -> DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -235,14 +235,14 @@ public class DataStreamLifecycleTests extends AbstractXContentSerializingTestCas
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder().downsampling((List.of())).build()
|
() -> DataStreamLifecycle.dataLifecycleBuilder().downsampling((List.of())).build()
|
||||||
);
|
);
|
||||||
assertThat(exception.getMessage(), equalTo("Downsampling configuration should have at least one round configured."));
|
assertThat(exception.getMessage(), equalTo("Downsampling configuration should have at least one round configured."));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder()
|
() -> DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
Stream.iterate(1, i -> i * 2)
|
Stream.iterate(1, i -> i * 2)
|
||||||
.limit(12)
|
.limit(12)
|
||||||
|
@ -262,7 +262,7 @@ public class DataStreamLifecycleTests extends AbstractXContentSerializingTestCas
|
||||||
{
|
{
|
||||||
IllegalArgumentException exception = expectThrows(
|
IllegalArgumentException exception = expectThrows(
|
||||||
IllegalArgumentException.class,
|
IllegalArgumentException.class,
|
||||||
() -> DataStreamLifecycle.builder()
|
() -> DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -283,7 +283,9 @@ public class DataStreamLifecycleTests extends AbstractXContentSerializingTestCas
|
||||||
public void testEffectiveRetention() {
|
public void testEffectiveRetention() {
|
||||||
// No retention in the data stream lifecycle
|
// No retention in the data stream lifecycle
|
||||||
{
|
{
|
||||||
DataStreamLifecycle noRetentionLifecycle = DataStreamLifecycle.builder().downsampling(randomDownsampling()).build();
|
DataStreamLifecycle noRetentionLifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
|
.downsampling(randomDownsampling())
|
||||||
|
.build();
|
||||||
TimeValue maxRetention = TimeValue.timeValueDays(randomIntBetween(50, 100));
|
TimeValue maxRetention = TimeValue.timeValueDays(randomIntBetween(50, 100));
|
||||||
TimeValue defaultRetention = TimeValue.timeValueDays(randomIntBetween(1, 50));
|
TimeValue defaultRetention = TimeValue.timeValueDays(randomIntBetween(1, 50));
|
||||||
Tuple<TimeValue, DataStreamLifecycle.RetentionSource> effectiveDataRetentionWithSource = noRetentionLifecycle
|
Tuple<TimeValue, DataStreamLifecycle.RetentionSource> effectiveDataRetentionWithSource = noRetentionLifecycle
|
||||||
|
@ -316,7 +318,7 @@ public class DataStreamLifecycleTests extends AbstractXContentSerializingTestCas
|
||||||
// With retention in the data stream lifecycle
|
// With retention in the data stream lifecycle
|
||||||
{
|
{
|
||||||
TimeValue dataStreamRetention = TimeValue.timeValueDays(randomIntBetween(5, 100));
|
TimeValue dataStreamRetention = TimeValue.timeValueDays(randomIntBetween(5, 100));
|
||||||
DataStreamLifecycle lifecycleRetention = DataStreamLifecycle.builder()
|
DataStreamLifecycle lifecycleRetention = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(dataStreamRetention)
|
.dataRetention(dataStreamRetention)
|
||||||
.downsampling(randomDownsampling())
|
.downsampling(randomDownsampling())
|
||||||
.build();
|
.build();
|
||||||
|
@ -365,7 +367,7 @@ public class DataStreamLifecycleTests extends AbstractXContentSerializingTestCas
|
||||||
TimeValue.timeValueDays(7),
|
TimeValue.timeValueDays(7),
|
||||||
TimeValue.timeValueDays(90)
|
TimeValue.timeValueDays(90)
|
||||||
);
|
);
|
||||||
DataStreamLifecycle lifecycle = DataStreamLifecycle.builder().dataRetention(dataStreamRetention).build();
|
DataStreamLifecycle lifecycle = DataStreamLifecycle.dataLifecycleBuilder().dataRetention(dataStreamRetention).build();
|
||||||
|
|
||||||
// Verify that global retention should have kicked in
|
// Verify that global retention should have kicked in
|
||||||
var effectiveDataRetentionWithSource = lifecycle.getEffectiveDataRetentionWithSource(globalRetention, false);
|
var effectiveDataRetentionWithSource = lifecycle.getEffectiveDataRetentionWithSource(globalRetention, false);
|
||||||
|
@ -398,8 +400,8 @@ public class DataStreamLifecycleTests extends AbstractXContentSerializingTestCas
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DataStreamLifecycle randomLifecycle() {
|
public static DataStreamLifecycle randomDataLifecycle() {
|
||||||
return DataStreamLifecycle.builder()
|
return DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(randomBoolean() ? null : randomTimeValue(1, 365, TimeUnit.DAYS))
|
.dataRetention(randomBoolean() ? null : randomTimeValue(1, 365, TimeUnit.DAYS))
|
||||||
.downsampling(randomBoolean() ? null : randomDownsampling())
|
.downsampling(randomBoolean() ? null : randomDownsampling())
|
||||||
.enabled(randomBoolean())
|
.enabled(randomBoolean())
|
||||||
|
|
|
@ -58,13 +58,13 @@ public class DataStreamLifecycleWithRetentionWarningsTests extends ESTestCase {
|
||||||
ThreadContext threadContext = new ThreadContext(Settings.EMPTY);
|
ThreadContext threadContext = new ThreadContext(Settings.EMPTY);
|
||||||
HeaderWarning.setThreadContext(threadContext);
|
HeaderWarning.setThreadContext(threadContext);
|
||||||
|
|
||||||
DataStreamLifecycle noRetentionLifecycle = DataStreamLifecycle.builder().downsampling(randomDownsampling()).build();
|
DataStreamLifecycle noRetentionLifecycle = DataStreamLifecycle.dataLifecycleBuilder().downsampling(randomDownsampling()).build();
|
||||||
noRetentionLifecycle.addWarningHeaderIfDataRetentionNotEffective(null, randomBoolean());
|
noRetentionLifecycle.addWarningHeaderIfDataRetentionNotEffective(null, randomBoolean());
|
||||||
Map<String, List<String>> responseHeaders = threadContext.getResponseHeaders();
|
Map<String, List<String>> responseHeaders = threadContext.getResponseHeaders();
|
||||||
assertThat(responseHeaders.isEmpty(), is(true));
|
assertThat(responseHeaders.isEmpty(), is(true));
|
||||||
|
|
||||||
TimeValue dataStreamRetention = TimeValue.timeValueDays(randomIntBetween(5, 100));
|
TimeValue dataStreamRetention = TimeValue.timeValueDays(randomIntBetween(5, 100));
|
||||||
DataStreamLifecycle lifecycleWithRetention = DataStreamLifecycle.builder()
|
DataStreamLifecycle lifecycleWithRetention = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(dataStreamRetention)
|
.dataRetention(dataStreamRetention)
|
||||||
.downsampling(randomDownsampling())
|
.downsampling(randomDownsampling())
|
||||||
.build();
|
.build();
|
||||||
|
@ -81,7 +81,7 @@ public class DataStreamLifecycleWithRetentionWarningsTests extends ESTestCase {
|
||||||
ThreadContext threadContext = new ThreadContext(Settings.EMPTY);
|
ThreadContext threadContext = new ThreadContext(Settings.EMPTY);
|
||||||
HeaderWarning.setThreadContext(threadContext);
|
HeaderWarning.setThreadContext(threadContext);
|
||||||
|
|
||||||
DataStreamLifecycle noRetentionLifecycle = DataStreamLifecycle.builder().downsampling(randomDownsampling()).build();
|
DataStreamLifecycle noRetentionLifecycle = DataStreamLifecycle.dataLifecycleBuilder().downsampling(randomDownsampling()).build();
|
||||||
DataStreamGlobalRetention globalRetention = new DataStreamGlobalRetention(
|
DataStreamGlobalRetention globalRetention = new DataStreamGlobalRetention(
|
||||||
randomTimeValue(2, 10, TimeUnit.DAYS),
|
randomTimeValue(2, 10, TimeUnit.DAYS),
|
||||||
randomBoolean() ? null : TimeValue.timeValueDays(20)
|
randomBoolean() ? null : TimeValue.timeValueDays(20)
|
||||||
|
@ -103,7 +103,7 @@ public class DataStreamLifecycleWithRetentionWarningsTests extends ESTestCase {
|
||||||
ThreadContext threadContext = new ThreadContext(Settings.EMPTY);
|
ThreadContext threadContext = new ThreadContext(Settings.EMPTY);
|
||||||
HeaderWarning.setThreadContext(threadContext);
|
HeaderWarning.setThreadContext(threadContext);
|
||||||
TimeValue maxRetention = randomTimeValue(2, 100, TimeUnit.DAYS);
|
TimeValue maxRetention = randomTimeValue(2, 100, TimeUnit.DAYS);
|
||||||
DataStreamLifecycle lifecycle = DataStreamLifecycle.builder()
|
DataStreamLifecycle lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(randomBoolean() ? null : TimeValue.timeValueDays(maxRetention.days() + 1))
|
.dataRetention(randomBoolean() ? null : TimeValue.timeValueDays(maxRetention.days() + 1))
|
||||||
.downsampling(randomDownsampling())
|
.downsampling(randomDownsampling())
|
||||||
.build();
|
.build();
|
||||||
|
@ -223,7 +223,7 @@ public class DataStreamLifecycleWithRetentionWarningsTests extends ESTestCase {
|
||||||
"component-template",
|
"component-template",
|
||||||
new ComponentTemplate(
|
new ComponentTemplate(
|
||||||
Template.builder()
|
Template.builder()
|
||||||
.lifecycle(DataStreamLifecycle.builder().dataRetention(randomTimeValue(2, 100, TimeUnit.DAYS)))
|
.lifecycle(DataStreamLifecycle.dataLifecycleBuilder().dataRetention(randomTimeValue(2, 100, TimeUnit.DAYS)))
|
||||||
.build(),
|
.build(),
|
||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
|
|
|
@ -140,7 +140,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
: randomValueOtherThan(indexMode, () -> randomFrom(IndexMode.values()));
|
: randomValueOtherThan(indexMode, () -> randomFrom(IndexMode.values()));
|
||||||
case 9 -> lifecycle = randomBoolean() && lifecycle != null
|
case 9 -> lifecycle = randomBoolean() && lifecycle != null
|
||||||
? null
|
? null
|
||||||
: DataStreamLifecycle.builder().dataRetention(randomPositiveTimeValue()).build();
|
: DataStreamLifecycle.dataLifecycleBuilder().dataRetention(randomPositiveTimeValue()).build();
|
||||||
case 10 -> failureIndices = randomValueOtherThan(failureIndices, DataStreamTestHelper::randomIndexInstances);
|
case 10 -> failureIndices = randomValueOtherThan(failureIndices, DataStreamTestHelper::randomIndexInstances);
|
||||||
case 11 -> dataStreamOptions = dataStreamOptions.isEmpty() ? new DataStreamOptions(new DataStreamFailureStore(randomBoolean()))
|
case 11 -> dataStreamOptions = dataStreamOptions.isEmpty() ? new DataStreamOptions(new DataStreamFailureStore(randomBoolean()))
|
||||||
: randomBoolean() ? DataStreamOptions.EMPTY
|
: randomBoolean() ? DataStreamOptions.EMPTY
|
||||||
|
@ -1519,7 +1519,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
dataStreamName,
|
dataStreamName,
|
||||||
creationAndRolloverTimes,
|
creationAndRolloverTimes,
|
||||||
settings(IndexVersion.current()).put(IndexMetadata.LIFECYCLE_NAME, "ILM_policy"),
|
settings(IndexVersion.current()).put(IndexMetadata.LIFECYCLE_NAME, "ILM_policy"),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.ZERO).build()
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.ZERO).build()
|
||||||
);
|
);
|
||||||
Metadata metadataWithIlm = builderWithIlm.build();
|
Metadata metadataWithIlm = builderWithIlm.build();
|
||||||
|
|
||||||
|
@ -1784,7 +1784,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
creationAndRolloverTimes,
|
creationAndRolloverTimes,
|
||||||
settings(IndexVersion.current()).put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
|
settings(IndexVersion.current()).put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
|
||||||
.put("index.routing_path", "@timestamp"),
|
.put("index.routing_path", "@timestamp"),
|
||||||
DataStreamLifecycle.builder()
|
DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -1844,7 +1844,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
creationAndRolloverTimes,
|
creationAndRolloverTimes,
|
||||||
// no TSDB settings
|
// no TSDB settings
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder()
|
DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -1910,7 +1910,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
creationAndRolloverTimes,
|
creationAndRolloverTimes,
|
||||||
settings(IndexVersion.current()).put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
|
settings(IndexVersion.current()).put(IndexSettings.MODE.getKey(), IndexMode.TIME_SERIES)
|
||||||
.put("index.routing_path", "@timestamp"),
|
.put("index.routing_path", "@timestamp"),
|
||||||
DataStreamLifecycle.builder().build()
|
DataStreamLifecycle.dataLifecycleBuilder().build()
|
||||||
);
|
);
|
||||||
Metadata metadata = builder.build();
|
Metadata metadata = builder.build();
|
||||||
|
|
||||||
|
@ -1942,7 +1942,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
dataStreamName,
|
dataStreamName,
|
||||||
creationAndRolloverTimes,
|
creationAndRolloverTimes,
|
||||||
settings(IndexVersion.current()),
|
settings(IndexVersion.current()),
|
||||||
DataStreamLifecycle.builder().dataRetention(TimeValue.ZERO).build()
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.ZERO).build()
|
||||||
);
|
);
|
||||||
Metadata metadata = builder.build();
|
Metadata metadata = builder.build();
|
||||||
|
|
||||||
|
@ -2316,7 +2316,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
system,
|
system,
|
||||||
randomBoolean(),
|
randomBoolean(),
|
||||||
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
||||||
DataStreamLifecycleTests.randomLifecycle(),
|
DataStreamLifecycleTests.randomDataLifecycle(),
|
||||||
DataStreamOptions.FAILURE_STORE_DISABLED,
|
DataStreamOptions.FAILURE_STORE_DISABLED,
|
||||||
List.of(),
|
List.of(),
|
||||||
replicated == false && randomBoolean(),
|
replicated == false && randomBoolean(),
|
||||||
|
@ -2334,7 +2334,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
system,
|
system,
|
||||||
randomBoolean(),
|
randomBoolean(),
|
||||||
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
||||||
DataStreamLifecycleTests.randomLifecycle(),
|
DataStreamLifecycleTests.randomDataLifecycle(),
|
||||||
DataStreamOptions.FAILURE_STORE_ENABLED,
|
DataStreamOptions.FAILURE_STORE_ENABLED,
|
||||||
List.of(),
|
List.of(),
|
||||||
replicated == false && randomBoolean(),
|
replicated == false && randomBoolean(),
|
||||||
|
@ -2359,7 +2359,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
system,
|
system,
|
||||||
randomBoolean(),
|
randomBoolean(),
|
||||||
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
||||||
DataStreamLifecycleTests.randomLifecycle(),
|
DataStreamLifecycleTests.randomDataLifecycle(),
|
||||||
DataStreamOptions.FAILURE_STORE_ENABLED,
|
DataStreamOptions.FAILURE_STORE_ENABLED,
|
||||||
failureIndices,
|
failureIndices,
|
||||||
replicated == false && randomBoolean(),
|
replicated == false && randomBoolean(),
|
||||||
|
@ -2383,7 +2383,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
system,
|
system,
|
||||||
randomBoolean(),
|
randomBoolean(),
|
||||||
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
||||||
DataStreamLifecycleTests.randomLifecycle(),
|
DataStreamLifecycleTests.randomDataLifecycle(),
|
||||||
DataStreamOptions.FAILURE_STORE_DISABLED,
|
DataStreamOptions.FAILURE_STORE_DISABLED,
|
||||||
List.of(),
|
List.of(),
|
||||||
replicated == false && randomBoolean(),
|
replicated == false && randomBoolean(),
|
||||||
|
@ -2405,7 +2405,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
system,
|
system,
|
||||||
randomBoolean(),
|
randomBoolean(),
|
||||||
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
||||||
DataStreamLifecycleTests.randomLifecycle(),
|
DataStreamLifecycleTests.randomDataLifecycle(),
|
||||||
DataStreamOptions.FAILURE_STORE_ENABLED,
|
DataStreamOptions.FAILURE_STORE_ENABLED,
|
||||||
List.of(),
|
List.of(),
|
||||||
replicated == false && randomBoolean(),
|
replicated == false && randomBoolean(),
|
||||||
|
@ -2436,7 +2436,7 @@ public class DataStreamTests extends AbstractXContentSerializingTestCase<DataStr
|
||||||
system,
|
system,
|
||||||
randomBoolean(),
|
randomBoolean(),
|
||||||
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
randomBoolean() ? IndexMode.STANDARD : IndexMode.TIME_SERIES,
|
||||||
DataStreamLifecycleTests.randomLifecycle(),
|
DataStreamLifecycleTests.randomDataLifecycle(),
|
||||||
DataStreamOptions.FAILURE_STORE_ENABLED,
|
DataStreamOptions.FAILURE_STORE_ENABLED,
|
||||||
failureIndices,
|
failureIndices,
|
||||||
replicated == false && randomBoolean(),
|
replicated == false && randomBoolean(),
|
||||||
|
|
|
@ -474,7 +474,7 @@ public class MetadataDataStreamsServiceTests extends MapperServiceTestCase {
|
||||||
|
|
||||||
public void testUpdateLifecycle() {
|
public void testUpdateLifecycle() {
|
||||||
String dataStream = randomAlphaOfLength(5);
|
String dataStream = randomAlphaOfLength(5);
|
||||||
DataStreamLifecycle lifecycle = DataStreamLifecycle.builder().dataRetention(randomPositiveTimeValue()).build();
|
DataStreamLifecycle lifecycle = DataStreamLifecycle.dataLifecycleBuilder().dataRetention(randomPositiveTimeValue()).build();
|
||||||
final var projectId = randomProjectIdOrDefault();
|
final var projectId = randomProjectIdOrDefault();
|
||||||
ProjectMetadata before = DataStreamTestHelper.getClusterStateWithDataStreams(
|
ProjectMetadata before = DataStreamTestHelper.getClusterStateWithDataStreams(
|
||||||
projectId,
|
projectId,
|
||||||
|
|
|
@ -1490,13 +1490,13 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
|
||||||
|
|
||||||
DataStreamLifecycle.Template emptyLifecycle = DataStreamLifecycle.Template.DATA_DEFAULT;
|
DataStreamLifecycle.Template emptyLifecycle = DataStreamLifecycle.Template.DATA_DEFAULT;
|
||||||
|
|
||||||
DataStreamLifecycle.Template lifecycle30d = DataStreamLifecycle.builder()
|
DataStreamLifecycle.Template lifecycle30d = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(TimeValue.timeValueDays(30))
|
.dataRetention(TimeValue.timeValueDays(30))
|
||||||
.buildTemplate();
|
.buildTemplate();
|
||||||
String ct30d = "ct_30d";
|
String ct30d = "ct_30d";
|
||||||
project = addComponentTemplate(service, project, ct30d, lifecycle30d);
|
project = addComponentTemplate(service, project, ct30d, lifecycle30d);
|
||||||
|
|
||||||
DataStreamLifecycle.Template lifecycle45d = DataStreamLifecycle.builder()
|
DataStreamLifecycle.Template lifecycle45d = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(TimeValue.timeValueDays(45))
|
.dataRetention(TimeValue.timeValueDays(45))
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
|
@ -1510,7 +1510,7 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
|
||||||
String ct45d = "ct_45d";
|
String ct45d = "ct_45d";
|
||||||
project = addComponentTemplate(service, project, ct45d, lifecycle45d);
|
project = addComponentTemplate(service, project, ct45d, lifecycle45d);
|
||||||
|
|
||||||
DataStreamLifecycle.Template lifecycleNullRetention = new DataStreamLifecycle.Template(
|
DataStreamLifecycle.Template lifecycleNullRetention = DataStreamLifecycle.createDataLifecycleTemplate(
|
||||||
true,
|
true,
|
||||||
ResettableValue.reset(),
|
ResettableValue.reset(),
|
||||||
ResettableValue.undefined()
|
ResettableValue.undefined()
|
||||||
|
@ -1522,7 +1522,12 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
|
||||||
project = addComponentTemplate(service, project, ctEmptyLifecycle, emptyLifecycle);
|
project = addComponentTemplate(service, project, ctEmptyLifecycle, emptyLifecycle);
|
||||||
|
|
||||||
String ctDisabledLifecycle = "ct_disabled_lifecycle";
|
String ctDisabledLifecycle = "ct_disabled_lifecycle";
|
||||||
project = addComponentTemplate(service, project, ctDisabledLifecycle, DataStreamLifecycle.builder().enabled(false).buildTemplate());
|
project = addComponentTemplate(
|
||||||
|
service,
|
||||||
|
project,
|
||||||
|
ctDisabledLifecycle,
|
||||||
|
DataStreamLifecycle.dataLifecycleBuilder().enabled(false).buildTemplate()
|
||||||
|
);
|
||||||
|
|
||||||
String ctNoLifecycle = "ct_no_lifecycle";
|
String ctNoLifecycle = "ct_no_lifecycle";
|
||||||
project = addComponentTemplate(service, project, ctNoLifecycle, (DataStreamLifecycle.Template) null);
|
project = addComponentTemplate(service, project, ctNoLifecycle, (DataStreamLifecycle.Template) null);
|
||||||
|
@ -1554,7 +1559,7 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
|
||||||
project,
|
project,
|
||||||
List.of(ctEmptyLifecycle, ct45d),
|
List.of(ctEmptyLifecycle, ct45d),
|
||||||
lifecycle30d,
|
lifecycle30d,
|
||||||
DataStreamLifecycle.builder()
|
DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(lifecycle30d.dataRetention())
|
.dataRetention(lifecycle30d.dataRetention())
|
||||||
.downsampling(lifecycle45d.downsampling())
|
.downsampling(lifecycle45d.downsampling())
|
||||||
.buildTemplate()
|
.buildTemplate()
|
||||||
|
@ -1578,7 +1583,7 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
|
||||||
project,
|
project,
|
||||||
List.of(ctEmptyLifecycle, ct45d),
|
List.of(ctEmptyLifecycle, ct45d),
|
||||||
lifecycleNullRetention,
|
lifecycleNullRetention,
|
||||||
DataStreamLifecycle.builder().downsampling(lifecycle45d.downsampling()).buildTemplate()
|
DataStreamLifecycle.dataLifecycleBuilder().downsampling(lifecycle45d.downsampling()).buildTemplate()
|
||||||
);
|
);
|
||||||
|
|
||||||
// Component A: "lifecycle": {"retention": "30d"}
|
// Component A: "lifecycle": {"retention": "30d"}
|
||||||
|
@ -1589,8 +1594,8 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
|
||||||
service,
|
service,
|
||||||
project,
|
project,
|
||||||
List.of(ct30d, ct45d),
|
List.of(ct30d, ct45d),
|
||||||
DataStreamLifecycle.builder().enabled(false).buildTemplate(),
|
DataStreamLifecycle.dataLifecycleBuilder().enabled(false).buildTemplate(),
|
||||||
DataStreamLifecycle.builder()
|
DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(lifecycle45d.dataRetention())
|
.dataRetention(lifecycle45d.dataRetention())
|
||||||
.downsampling(lifecycle45d.downsampling())
|
.downsampling(lifecycle45d.downsampling())
|
||||||
.enabled(false)
|
.enabled(false)
|
||||||
|
@ -1606,7 +1611,7 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
|
||||||
project,
|
project,
|
||||||
List.of(ct30d, ctDisabledLifecycle),
|
List.of(ct30d, ctDisabledLifecycle),
|
||||||
null,
|
null,
|
||||||
DataStreamLifecycle.builder().dataRetention(lifecycle30d.dataRetention()).enabled(false).buildTemplate()
|
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(lifecycle30d.dataRetention()).enabled(false).buildTemplate()
|
||||||
);
|
);
|
||||||
|
|
||||||
// Component A: "lifecycle": {"retention": "30d"}
|
// Component A: "lifecycle": {"retention": "30d"}
|
||||||
|
@ -2007,7 +2012,7 @@ public class MetadataIndexTemplateServiceTests extends ESSingleNodeTestCase {
|
||||||
ProjectMetadata project = ProjectMetadata.builder(randomProjectIdOrDefault()).build();
|
ProjectMetadata project = ProjectMetadata.builder(randomProjectIdOrDefault()).build();
|
||||||
|
|
||||||
ComponentTemplate ct = new ComponentTemplate(
|
ComponentTemplate ct = new ComponentTemplate(
|
||||||
Template.builder().lifecycle(DataStreamLifecycle.builder().dataRetention(randomPositiveTimeValue())).build(),
|
Template.builder().lifecycle(DataStreamLifecycle.dataLifecycleBuilder().dataRetention(randomPositiveTimeValue())).build(),
|
||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
|
|
@ -363,7 +363,7 @@ public final class DataStreamTestHelper {
|
||||||
timeProvider,
|
timeProvider,
|
||||||
randomBoolean(),
|
randomBoolean(),
|
||||||
randomBoolean() ? IndexMode.STANDARD : null, // IndexMode.TIME_SERIES triggers validation that many unit tests doesn't pass
|
randomBoolean() ? IndexMode.STANDARD : null, // IndexMode.TIME_SERIES triggers validation that many unit tests doesn't pass
|
||||||
randomBoolean() ? DataStreamLifecycle.builder().dataRetention(randomPositiveTimeValue()).build() : null,
|
randomBoolean() ? DataStreamLifecycle.dataLifecycleBuilder().dataRetention(randomPositiveTimeValue()).build() : null,
|
||||||
failureStore ? DataStreamOptions.FAILURE_STORE_ENABLED : DataStreamOptions.EMPTY,
|
failureStore ? DataStreamOptions.FAILURE_STORE_ENABLED : DataStreamOptions.EMPTY,
|
||||||
DataStream.DataStreamIndices.backingIndicesBuilder(indices)
|
DataStream.DataStreamIndices.backingIndicesBuilder(indices)
|
||||||
.setRolloverOnWrite(replicated == false && randomBoolean())
|
.setRolloverOnWrite(replicated == false && randomBoolean())
|
||||||
|
|
|
@ -133,7 +133,7 @@ public class DataStreamLifecycleUsageTransportActionIT extends ESIntegTestCase {
|
||||||
boolean systemDataStream = rarely();
|
boolean systemDataStream = rarely();
|
||||||
if (hasLifecycle) {
|
if (hasLifecycle) {
|
||||||
if (randomBoolean()) {
|
if (randomBoolean()) {
|
||||||
lifecycle = new DataStreamLifecycle(null, null, null);
|
lifecycle = DataStreamLifecycle.DEFAULT_DATA_LIFECYCLE;
|
||||||
dataStreamsWithLifecycleCount.incrementAndGet();
|
dataStreamsWithLifecycleCount.incrementAndGet();
|
||||||
if (useDefaultRetention && systemDataStream == false) {
|
if (useDefaultRetention && systemDataStream == false) {
|
||||||
dataStreamsWithDefaultRetentionCount.incrementAndGet();
|
dataStreamsWithDefaultRetentionCount.incrementAndGet();
|
||||||
|
@ -155,7 +155,7 @@ public class DataStreamLifecycleUsageTransportActionIT extends ESIntegTestCase {
|
||||||
}
|
}
|
||||||
atLeastOne = true;
|
atLeastOne = true;
|
||||||
}
|
}
|
||||||
lifecycle = DataStreamLifecycle.builder()
|
lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(TimeValue.timeValueMillis(retentionMillis))
|
.dataRetention(TimeValue.timeValueMillis(retentionMillis))
|
||||||
.enabled(isEnabled)
|
.enabled(isEnabled)
|
||||||
.build();
|
.build();
|
||||||
|
|
|
@ -117,7 +117,7 @@ public class DataStreamLifecycleFeatureSetUsageTests extends AbstractWireSeriali
|
||||||
1L,
|
1L,
|
||||||
null,
|
null,
|
||||||
false,
|
false,
|
||||||
new DataStreamLifecycle(true, TimeValue.timeValueSeconds(50), null)
|
DataStreamLifecycle.createDataLifecycle(true, TimeValue.timeValueSeconds(50), null)
|
||||||
),
|
),
|
||||||
DataStreamTestHelper.newInstance(
|
DataStreamTestHelper.newInstance(
|
||||||
randomAlphaOfLength(10),
|
randomAlphaOfLength(10),
|
||||||
|
@ -125,7 +125,7 @@ public class DataStreamLifecycleFeatureSetUsageTests extends AbstractWireSeriali
|
||||||
1L,
|
1L,
|
||||||
null,
|
null,
|
||||||
false,
|
false,
|
||||||
new DataStreamLifecycle(true, TimeValue.timeValueMillis(150), null)
|
DataStreamLifecycle.createDataLifecycle(true, TimeValue.timeValueMillis(150), null)
|
||||||
),
|
),
|
||||||
DataStreamTestHelper.newInstance(
|
DataStreamTestHelper.newInstance(
|
||||||
randomAlphaOfLength(10),
|
randomAlphaOfLength(10),
|
||||||
|
@ -133,7 +133,7 @@ public class DataStreamLifecycleFeatureSetUsageTests extends AbstractWireSeriali
|
||||||
1L,
|
1L,
|
||||||
null,
|
null,
|
||||||
false,
|
false,
|
||||||
new DataStreamLifecycle(false, TimeValue.timeValueSeconds(5), null)
|
DataStreamLifecycle.createDataLifecycle(false, TimeValue.timeValueSeconds(5), null)
|
||||||
),
|
),
|
||||||
DataStreamTestHelper.newInstance(
|
DataStreamTestHelper.newInstance(
|
||||||
randomAlphaOfLength(10),
|
randomAlphaOfLength(10),
|
||||||
|
|
|
@ -59,7 +59,7 @@ public class DataStreamLifecycleDownsampleDisruptionIT extends ESIntegTestCase {
|
||||||
ensureGreen();
|
ensureGreen();
|
||||||
|
|
||||||
final String dataStreamName = "metrics-foo";
|
final String dataStreamName = "metrics-foo";
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.builder()
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
|
|
@ -54,7 +54,7 @@ public class DataStreamLifecycleDownsampleIT extends ESIntegTestCase {
|
||||||
public void testDownsampling() throws Exception {
|
public void testDownsampling() throws Exception {
|
||||||
String dataStreamName = "metrics-foo";
|
String dataStreamName = "metrics-foo";
|
||||||
|
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.builder()
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -127,7 +127,7 @@ public class DataStreamLifecycleDownsampleIT extends ESIntegTestCase {
|
||||||
public void testDownsamplingOnlyExecutesTheLastMatchingRound() throws Exception {
|
public void testDownsamplingOnlyExecutesTheLastMatchingRound() throws Exception {
|
||||||
String dataStreamName = "metrics-bar";
|
String dataStreamName = "metrics-bar";
|
||||||
|
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.builder()
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -195,7 +195,7 @@ public class DataStreamLifecycleDownsampleIT extends ESIntegTestCase {
|
||||||
// we expect the earlier round to be ignored
|
// we expect the earlier round to be ignored
|
||||||
String dataStreamName = "metrics-baz";
|
String dataStreamName = "metrics-baz";
|
||||||
|
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.builder()
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -259,7 +259,7 @@ public class DataStreamLifecycleDownsampleIT extends ESIntegTestCase {
|
||||||
// update the lifecycle so that it only has one round, for the same `after` parameter as before, but a different interval
|
// update the lifecycle so that it only has one round, for the same `after` parameter as before, but a different interval
|
||||||
// the different interval should yield a different downsample index name so we expect the data stream lifecycle to get the previous
|
// the different interval should yield a different downsample index name so we expect the data stream lifecycle to get the previous
|
||||||
// `10s` interval downsample index, downsample it to `30s` and replace it in the data stream instead of the `10s` one.
|
// `10s` interval downsample index, downsample it to `30s` and replace it in the data stream instead of the `10s` one.
|
||||||
DataStreamLifecycle updatedLifecycle = DataStreamLifecycle.builder()
|
DataStreamLifecycle updatedLifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
|
|
@ -157,7 +157,7 @@ public class DataStreamAndIndexLifecycleMixingTests extends ESIntegTestCase {
|
||||||
|
|
||||||
// we'll rollover the data stream by indexing 2 documents (like ILM expects) and assert that the rollover happens once so the
|
// we'll rollover the data stream by indexing 2 documents (like ILM expects) and assert that the rollover happens once so the
|
||||||
// data stream has 3 backing indices, two managed by ILM and one will be managed by the data stream lifecycle
|
// data stream has 3 backing indices, two managed by ILM and one will be managed by the data stream lifecycle
|
||||||
DataStreamLifecycle.Template customLifecycle = DataStreamLifecycle.builder()
|
DataStreamLifecycle.Template customLifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(randomPositiveTimeValue())
|
.dataRetention(randomPositiveTimeValue())
|
||||||
.buildTemplate();
|
.buildTemplate();
|
||||||
putComposableIndexTemplate(indexTemplateName, null, List.of(dataStreamName + "*"), Settings.EMPTY, null, customLifecycle);
|
putComposableIndexTemplate(indexTemplateName, null, List.of(dataStreamName + "*"), Settings.EMPTY, null, customLifecycle);
|
||||||
|
@ -485,7 +485,7 @@ public class DataStreamAndIndexLifecycleMixingTests extends ESIntegTestCase {
|
||||||
|
|
||||||
// we'll rollover the data stream by indexing 2 documents (like ILM expects) and assert that the rollover happens once so the
|
// we'll rollover the data stream by indexing 2 documents (like ILM expects) and assert that the rollover happens once so the
|
||||||
// data stream has 3 backing indices, 2 managed by ILM and 1 by the default data stream lifecycle
|
// data stream has 3 backing indices, 2 managed by ILM and 1 by the default data stream lifecycle
|
||||||
DataStreamLifecycle.Template customLifecycle = DataStreamLifecycle.builder()
|
DataStreamLifecycle.Template customLifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.dataRetention(randomPositiveTimeValue())
|
.dataRetention(randomPositiveTimeValue())
|
||||||
.buildTemplate();
|
.buildTemplate();
|
||||||
putComposableIndexTemplate(
|
putComposableIndexTemplate(
|
||||||
|
|
|
@ -120,7 +120,7 @@ public class DataStreamLifecycleDownsamplingSecurityIT extends SecurityIntegTest
|
||||||
public void testDownsamplingAuthorized() throws Exception {
|
public void testDownsamplingAuthorized() throws Exception {
|
||||||
String dataStreamName = "metrics-foo";
|
String dataStreamName = "metrics-foo";
|
||||||
|
|
||||||
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.builder()
|
DataStreamLifecycle.Template lifecycle = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
@ -410,7 +410,7 @@ public class DataStreamLifecycleDownsamplingSecurityIT extends SecurityIntegTest
|
||||||
|
|
||||||
public static class SystemDataStreamWithDownsamplingConfigurationPlugin extends Plugin implements SystemIndexPlugin {
|
public static class SystemDataStreamWithDownsamplingConfigurationPlugin extends Plugin implements SystemIndexPlugin {
|
||||||
|
|
||||||
public static final DataStreamLifecycle.Template LIFECYCLE = DataStreamLifecycle.builder()
|
public static final DataStreamLifecycle.Template LIFECYCLE = DataStreamLifecycle.dataLifecycleBuilder()
|
||||||
.downsampling(
|
.downsampling(
|
||||||
List.of(
|
List.of(
|
||||||
new DataStreamLifecycle.DownsamplingRound(
|
new DataStreamLifecycle.DownsamplingRound(
|
||||||
|
|
|
@ -46,6 +46,7 @@ import org.elasticsearch.xpack.security.LocalStateSecurity;
|
||||||
import org.elasticsearch.xpack.wildcard.Wildcard;
|
import org.elasticsearch.xpack.wildcard.Wildcard;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.UncheckedIOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -221,7 +222,7 @@ public class DataStreamLifecycleServiceRuntimeSecurityIT extends SecurityIntegTe
|
||||||
ExecutionException {
|
ExecutionException {
|
||||||
var dataLifecycle = retention == null
|
var dataLifecycle = retention == null
|
||||||
? DataStreamLifecycle.Template.DATA_DEFAULT
|
? DataStreamLifecycle.Template.DATA_DEFAULT
|
||||||
: new DataStreamLifecycle.Template(true, retention, null);
|
: DataStreamLifecycle.dataLifecycleBuilder().enabled(true).dataRetention(retention).buildTemplate();
|
||||||
putComposableIndexTemplate("id1", """
|
putComposableIndexTemplate("id1", """
|
||||||
{
|
{
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -357,7 +358,7 @@ public class DataStreamLifecycleServiceRuntimeSecurityIT extends SecurityIntegTe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}"""))
|
}"""))
|
||||||
.lifecycle(DataStreamLifecycle.builder().dataRetention(TimeValue.ZERO))
|
.lifecycle(DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.ZERO))
|
||||||
.dataStreamOptions(new DataStreamOptions.Template(new DataStreamFailureStore.Template(true)))
|
.dataStreamOptions(new DataStreamOptions.Template(new DataStreamFailureStore.Template(true)))
|
||||||
)
|
)
|
||||||
.dataStreamTemplate(new ComposableIndexTemplate.DataStreamTemplate())
|
.dataStreamTemplate(new ComposableIndexTemplate.DataStreamTemplate())
|
||||||
|
@ -373,11 +374,8 @@ public class DataStreamLifecycleServiceRuntimeSecurityIT extends SecurityIntegTe
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
fail(e.getMessage());
|
throw new UncheckedIOException(e);
|
||||||
}
|
}
|
||||||
throw new IllegalStateException(
|
|
||||||
"Something went wrong, it should have either returned the descriptor or it should have thrown an assertion error"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue