Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public void testRolloverClusterStateForDataStream() throws Exception {
final DataStream dataStream = DataStream.builder(
dataStreamName,
List.of(new Index(DataStream.getDefaultBackingIndexName(dataStreamName, 1, now.toEpochMilli()), "uuid"))
).setIndexMode(IndexMode.TIME_SERIES).build();
).setIndexMode(IndexMode.TIME_SERIES).setTimeProvider(now::toEpochMilli).build();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bit of a nitpick not specifically about this PR but I'm interested in why we went for this TimeProvider pattern Vs using the Clock interface?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm afraid I have no idea... This time provider predates my time at Elastic

ComposableIndexTemplate template = ComposableIndexTemplate.builder()
.indexPatterns(List.of(dataStream.getName() + "*"))
.template(
Expand Down Expand Up @@ -123,8 +123,16 @@ public void testRolloverClusterStateForDataStream() throws Exception {
);
long after = testThreadPool.absoluteTimeInMillis();

String sourceIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration());
String newIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1);
String sourceIndexName = DataStream.getDefaultBackingIndexName(
dataStream.getName(),
dataStream.getGeneration(),
now.toEpochMilli()
);
String newIndexName = DataStream.getDefaultBackingIndexName(
dataStream.getName(),
dataStream.getGeneration() + 1,
now.toEpochMilli()
);
assertEquals(sourceIndexName, rolloverResult.sourceIndexName());
assertEquals(newIndexName, rolloverResult.rolloverIndexName());
ProjectMetadata rolloverMetadata = rolloverResult.clusterState().metadata().getProject(projectId);
Expand Down Expand Up @@ -219,8 +227,16 @@ public void testRolloverAndMigrateDataStream() throws Exception {
false
);

String sourceIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration());
String newIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1);
String sourceIndexName = DataStream.getDefaultBackingIndexName(
dataStream.getName(),
dataStream.getGeneration(),
now.toEpochMilli()
);
String newIndexName = DataStream.getDefaultBackingIndexName(
dataStream.getName(),
dataStream.getGeneration() + 1,
now.toEpochMilli()
);
assertEquals(sourceIndexName, rolloverResult.sourceIndexName());
assertEquals(newIndexName, rolloverResult.rolloverIndexName());
ProjectMetadata rolloverMetadata = rolloverResult.clusterState().metadata().getProject(projectId);
Expand Down Expand Up @@ -308,8 +324,16 @@ public void testChangingIndexModeFromTimeSeriesToSomethingElseNoEffectOnExisting
false
);

String sourceIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration());
String newIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1);
String sourceIndexName = DataStream.getDefaultBackingIndexName(
dataStream.getName(),
dataStream.getGeneration(),
now.toEpochMilli()
);
String newIndexName = DataStream.getDefaultBackingIndexName(
dataStream.getName(),
dataStream.getGeneration() + 1,
now.toEpochMilli()
);
assertEquals(sourceIndexName, rolloverResult.sourceIndexName());
assertEquals(newIndexName, rolloverResult.rolloverIndexName());
ProjectMetadata rolloverMetadata = rolloverResult.clusterState().metadata().getProject(projectId);
Expand Down Expand Up @@ -379,8 +403,16 @@ public void testRolloverClusterStateWithBrokenOlderTsdbDataStream() throws Excep
);
long after = testThreadPool.absoluteTimeInMillis();

String sourceIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration());
String newIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1);
String sourceIndexName = DataStream.getDefaultBackingIndexName(
dataStream.getName(),
dataStream.getGeneration(),
now.toEpochMilli()
);
String newIndexName = DataStream.getDefaultBackingIndexName(
dataStream.getName(),
dataStream.getGeneration() + 1,
now.toEpochMilli()
);
assertEquals(sourceIndexName, rolloverResult.sourceIndexName());
assertEquals(newIndexName, rolloverResult.rolloverIndexName());
ProjectMetadata rolloverMetadata = rolloverResult.clusterState().metadata().getProject(projectId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ public void testRetentionSkippedWhilstDownsamplingInProgress() {
{
ProjectMetadata.Builder newProjectBuilder = ProjectMetadata.builder(project);

String firstBackingIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
String firstBackingIndex = dataStream.getIndices().getFirst().getName();
IndexMetadata indexMetadata = project.index(firstBackingIndex);
IndexMetadata.Builder indexMetaBuilder = IndexMetadata.builder(indexMetadata);
indexMetaBuilder.settings(
Expand All @@ -419,15 +419,15 @@ public void testRetentionSkippedWhilstDownsamplingInProgress() {
assertThat(clientSeenRequests.get(1), instanceOf(DeleteIndexRequest.class));
assertThat(
((DeleteIndexRequest) clientSeenRequests.get(1)).indices()[0],
is(DataStream.getDefaultBackingIndexName(dataStreamName, 2))
DataStreamTestHelper.backingIndexEqualTo(dataStreamName, 2)
);
}

{
// a lack of downsample status (i.e. the default `UNKNOWN`) must not prevent retention
ProjectMetadata.Builder newProjectBuilder = ProjectMetadata.builder(project);

String firstBackingIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
String firstBackingIndex = dataStream.getIndices().getFirst().getName();
IndexMetadata indexMetadata = project.index(firstBackingIndex);
IndexMetadata.Builder indexMetaBuilder = IndexMetadata.builder(indexMetadata);
indexMetaBuilder.settings(
Expand All @@ -442,12 +442,12 @@ public void testRetentionSkippedWhilstDownsamplingInProgress() {
assertThat(clientSeenRequests.get(1), instanceOf(DeleteIndexRequest.class));
assertThat(
((DeleteIndexRequest) clientSeenRequests.get(1)).indices()[0],
is(DataStream.getDefaultBackingIndexName(dataStreamName, 2))
DataStreamTestHelper.backingIndexEqualTo(dataStreamName, 2)
);
assertThat(clientSeenRequests.get(2), instanceOf(DeleteIndexRequest.class));
assertThat(
((DeleteIndexRequest) clientSeenRequests.get(2)).indices()[0],
is(DataStream.getDefaultBackingIndexName(dataStreamName, 1))
DataStreamTestHelper.backingIndexEqualTo(dataStreamName, 1)
);
}
}
Expand Down Expand Up @@ -1196,8 +1196,8 @@ public void testDownsampling() throws Exception {
nodesBuilder.masterNodeId(nodeId);
ClusterState state = ClusterState.builder(ClusterName.DEFAULT).putProjectMetadata(builder).nodes(nodesBuilder).build();
setState(clusterService, state);
String firstGenIndexName = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
Index firstGenIndex = clusterService.state().metadata().getProject(projectId).index(firstGenIndexName).getIndex();
Index firstGenIndex = dataStream.getIndices().getFirst();
String firstGenIndexName = firstGenIndex.getName();
Set<Index> affectedIndices = dataStreamLifecycleService.maybeExecuteDownsampling(
clusterService.state().projectState(projectId),
dataStream,
Expand Down Expand Up @@ -1343,7 +1343,7 @@ public void testDownsamplingWhenTargetIndexNameClashYieldsException() throws Exc
DiscoveryNodes.Builder nodesBuilder = buildNodes(nodeId);
// we are the master node
nodesBuilder.masterNodeId(nodeId);
String firstGenIndexName = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
String firstGenIndexName = dataStream.getIndices().getFirst().getName();

// mark the first generation as read-only already
IndexMetadata indexMetadata = builder.get(firstGenIndexName);
Expand Down Expand Up @@ -1553,7 +1553,7 @@ public void testMaybeExecuteRetentionSuccessfulDownsampledIndex() {
ClusterState state = downsampleSetup(projectId, dataStreamName, SUCCESS);
final var project = state.metadata().getProject(projectId);
DataStream dataStream = project.dataStreams().get(dataStreamName);
String firstGenIndexName = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
String firstGenIndexName = dataStream.getIndices().getFirst().getName();
TimeValue dataRetention = dataStream.getDataLifecycle().dataRetention();

// Executing the method to be tested:
Expand Down Expand Up @@ -1592,7 +1592,7 @@ public void testMaybeExecuteRetentionDownsampledUnknown() {
ClusterState state = downsampleSetup(projectId, dataStreamName, UNKNOWN);
final var project = state.metadata().getProject(projectId);
DataStream dataStream = project.dataStreams().get(dataStreamName);
String firstGenIndexName = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
String firstGenIndexName = dataStream.getIndices().getFirst().getName();
TimeValue dataRetention = dataStream.getDataLifecycle().dataRetention();

// Executing the method to be tested:
Expand Down Expand Up @@ -1626,7 +1626,7 @@ private ClusterState downsampleSetup(ProjectId projectId, String dataStreamName,
builder.put(dataStream);

// Update the first backing index so that is appears to have been downsampled:
String firstGenIndexName = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
String firstGenIndexName = dataStream.getIndices().getFirst().getName();
var imd = builder.get(firstGenIndexName);
var imdBuilder = new IndexMetadata.Builder(imd);
imdBuilder.settings(Settings.builder().put(imd.getSettings()).put(IndexMetadata.INDEX_DOWNSAMPLE_STATUS.getKey(), status).build());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public void testDownsampleIndexMissingIsNoOp() {
builder.put(dataStream);
ClusterState previousState = ClusterState.builder(ClusterName.DEFAULT).putProjectMetadata(builder).build();

String firstGeneration = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
String firstGeneration = dataStream.getIndices().getFirst().getName();
ClusterState newState = new DeleteSourceAndAddDownsampleToDS(
Settings.EMPTY,
builder.getId(),
Expand All @@ -83,7 +83,7 @@ public void testDownsampleIsAddedToDSEvenIfSourceDeleted() {
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
now
);
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
String firstGenIndex = dataStream.getIndices().getFirst().getName();
String downsampleIndex = "downsample-1s-" + firstGenIndex;
IndexMetadata.Builder downsampleIndexMeta = IndexMetadata.builder(downsampleIndex)
.settings(settings(IndexVersion.current()))
Expand Down Expand Up @@ -129,7 +129,7 @@ public void testSourceIndexIsWriteIndexThrowsException() {
now
);
builder.put(dataStream);
String writeIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 3);
String writeIndex = dataStream.getIndices().getLast().getName();
String downsampleIndex = "downsample-1s-" + writeIndex;
IndexMetadata.Builder downsampleIndexMeta = IndexMetadata.builder(downsampleIndex)
.settings(settings(IndexVersion.current()))
Expand Down Expand Up @@ -162,7 +162,7 @@ public void testSourceIsDeleteAndDownsampleOriginationDateIsConfigured() {
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
now
);
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
String firstGenIndex = dataStream.getIndices().getFirst().getName();
String downsampleIndex = "downsample-1s-" + firstGenIndex;
IndexMetadata.Builder downsampleIndexMeta = IndexMetadata.builder(downsampleIndex)
.settings(settings(IndexVersion.current()))
Expand Down Expand Up @@ -224,7 +224,7 @@ public void testSourceWithoutLifecycleMetaAndDestWithOriginationDateAlreadyConfi
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
now
);
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
String firstGenIndex = dataStream.getIndices().getFirst().getName();
String downsampleIndex = "downsample-1s-" + firstGenIndex;
long downsampleOriginationDate = now - randomLongBetween(10_000, 12_000);
IndexMetadata.Builder downsampleIndexMeta = IndexMetadata.builder(downsampleIndex)
Expand Down Expand Up @@ -275,7 +275,7 @@ public void testSourceIndexIsDeleteEvenIfNotPartOfDSAnymore() {
DataStreamLifecycle.dataLifecycleBuilder().dataRetention(TimeValue.MAX_VALUE).build(),
now
);
String firstGenIndex = DataStream.getDefaultBackingIndexName(dataStreamName, 1);
String firstGenIndex = dataStream.getIndices().getFirst().getName();
String downsampleIndex = "downsample-1s-" + firstGenIndex;
IndexMetadata.Builder downsampleIndexMeta = IndexMetadata.builder(downsampleIndex)
.settings(settings(IndexVersion.current()))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -578,16 +578,16 @@ private void assertRolloverResult(
List<Condition<?>> metConditions,
int expectedNumberOfShards
) {
String sourceIndexName = DataStream.getDefaultBackingIndexName(
preRolloverDataStream.getName(),
preRolloverDataStream.getGeneration()
String sourceIndexName = rolloverResult.sourceIndexName();
assertThat(
sourceIndexName,
DataStreamTestHelper.backingIndexEqualTo(preRolloverDataStream.getName(), (int) preRolloverDataStream.getGeneration())
);
String newIndexName = DataStream.getDefaultBackingIndexName(
preRolloverDataStream.getName(),
preRolloverDataStream.getGeneration() + 1
String newIndexName = rolloverResult.rolloverIndexName();
assertThat(
newIndexName,
DataStreamTestHelper.backingIndexEqualTo(preRolloverDataStream.getName(), (int) preRolloverDataStream.getGeneration() + 1)
);
assertEquals(sourceIndexName, rolloverResult.sourceIndexName());
assertEquals(newIndexName, rolloverResult.rolloverIndexName());
ProjectMetadata rolloverMetadata = rolloverResult.clusterState().metadata().getProject(projectId);
assertEquals(preRolloverDataStream.getIndices().size() + 1, rolloverMetadata.indices().size());
IndexMetadata rolloverIndexMetadata = rolloverMetadata.index(newIndexName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,6 @@
import static org.hamcrest.Matchers.instanceOf;
import static org.hamcrest.Matchers.lessThanOrEqualTo;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

Expand Down Expand Up @@ -659,9 +657,9 @@ public void testRolloverClusterStateForDataStream() throws Exception {
for (String settingName : dataStream.getEffectiveSettings(clusterState.projectState(projectId).metadata()).keySet()) {
assertTrue(rolledOverIndexSettingNames.contains(settingName));
}
String newIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1);
String newIndexName = rolloverResult.rolloverIndexName();
assertEquals(sourceIndexName, rolloverResult.sourceIndexName());
assertEquals(newIndexName, rolloverResult.rolloverIndexName());
assertThat(newIndexName, DataStreamTestHelper.backingIndexEqualTo(dataStream.getName(), (int) dataStream.getGeneration() + 1));
ProjectMetadata rolloverMetadata = rolloverResult.clusterState().metadata().getProject(projectId);
assertEquals(dataStream.getIndices().size() + 1, rolloverMetadata.indices().size());
IndexMetadata rolloverIndexMetadata = rolloverMetadata.index(newIndexName);
Expand Down Expand Up @@ -770,25 +768,29 @@ public void testValidation() throws Exception {
final String sourceIndexName;
final String defaultRolloverIndexName;
final boolean useDataStream = randomBoolean();
final var now = Instant.now();
final var projectId = randomProjectIdOrDefault();
ProjectMetadata.Builder builder = ProjectMetadata.builder(projectId);
boolean isFailureStoreRollover = false;
if (useDataStream) {
DataStream dataStream = DataStreamTestHelper.randomInstance()
// ensure no replicate data stream
.promoteDataStream();
// ensure no replicate data stream
DataStream dataStream = DataStreamTestHelper.randomInstance(now::toEpochMilli).promoteDataStream();
rolloverTarget = dataStream.getName();
if (dataStream.isFailureStoreExplicitlyEnabled() && randomBoolean()) {
sourceIndexName = dataStream.getWriteFailureIndex().getName();
isFailureStoreRollover = true;
defaultRolloverIndexName = DataStream.getDefaultFailureStoreName(
dataStream.getName(),
dataStream.getGeneration() + 1,
System.currentTimeMillis()
now.toEpochMilli()
);
} else {
sourceIndexName = dataStream.getIndices().get(dataStream.getIndices().size() - 1).getName();
defaultRolloverIndexName = DataStream.getDefaultBackingIndexName(dataStream.getName(), dataStream.getGeneration() + 1);
defaultRolloverIndexName = DataStream.getDefaultBackingIndexName(
dataStream.getName(),
dataStream.getGeneration() + 1,
now.toEpochMilli()
);
}
ComposableIndexTemplate template = ComposableIndexTemplate.builder()
.indexPatterns(List.of(dataStream.getName() + "*"))
Expand Down Expand Up @@ -835,7 +837,7 @@ public void testValidation() throws Exception {
newIndexName,
new CreateIndexRequest("_na_"),
null,
Instant.now(),
now,
randomBoolean(),
true,
null,
Expand Down
Loading