Skip to content

Commit 2bda4c1

Browse files
Converting an Existing Data Stream to a System DataStream is Broken (#121392)
Adds support of converting existing data stream to a system data stream as part of existing system_index_metadata_upgrade_service task
1 parent 7326928 commit 2bda4c1

File tree

5 files changed

+344
-94
lines changed

5 files changed

+344
-94
lines changed

docs/changelog/121392.yaml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 121392
2+
summary: Include data streams when converting an existing resource to a system resource
3+
area: Infra/Core
4+
type: bug
5+
issues: []

server/src/main/java/org/elasticsearch/cluster/metadata/DataStream.java

+14-5
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,13 @@ public boolean isFailureStoreIndex(String indexName) {
301301
return failureIndices.containsIndex(indexName);
302302
}
303303

304+
/**
305+
* Returns true if the index name provided belongs to this data stream.
306+
*/
307+
public boolean containsIndex(String indexName) {
308+
return backingIndices.containsIndex(indexName) || failureIndices.containsIndex(indexName);
309+
}
310+
304311
public DataStreamOptions getDataStreamOptions() {
305312
return dataStreamOptions;
306313
}
@@ -782,8 +789,9 @@ public DataStream addBackingIndex(Metadata clusterMetadata, Index index) {
782789
// ensure that no aliases reference index
783790
ensureNoAliasesOnIndex(clusterMetadata, index);
784791

785-
List<Index> backingIndices = new ArrayList<>(this.backingIndices.indices);
786-
backingIndices.add(0, index);
792+
List<Index> backingIndices = new ArrayList<>(this.backingIndices.indices.size() + 1);
793+
backingIndices.add(index);
794+
backingIndices.addAll(this.backingIndices.indices);
787795
assert backingIndices.size() == this.backingIndices.indices.size() + 1;
788796
return copy().setBackingIndices(this.backingIndices.copy().setIndices(backingIndices).build())
789797
.setGeneration(generation + 1)
@@ -808,8 +816,9 @@ public DataStream addFailureStoreIndex(Metadata clusterMetadata, Index index) {
808816

809817
ensureNoAliasesOnIndex(clusterMetadata, index);
810818

811-
List<Index> updatedFailureIndices = new ArrayList<>(failureIndices.indices);
812-
updatedFailureIndices.add(0, index);
819+
List<Index> updatedFailureIndices = new ArrayList<>(failureIndices.indices.size() + 1);
820+
updatedFailureIndices.add(index);
821+
updatedFailureIndices.addAll(failureIndices.indices);
813822
assert updatedFailureIndices.size() == failureIndices.indices.size() + 1;
814823
return copy().setFailureIndices(failureIndices.copy().setIndices(updatedFailureIndices).build())
815824
.setGeneration(generation + 1)
@@ -1039,7 +1048,7 @@ private boolean isIndexOlderThan(
10391048
* we return false.
10401049
*/
10411050
public boolean isIndexManagedByDataStreamLifecycle(Index index, Function<String, IndexMetadata> indexMetadataSupplier) {
1042-
if (backingIndices.containsIndex(index.getName()) == false && failureIndices.containsIndex(index.getName()) == false) {
1051+
if (containsIndex(index.getName()) == false) {
10431052
return false;
10441053
}
10451054
IndexMetadata indexMetadata = indexMetadataSupplier.apply(index.getName());

0 commit comments

Comments
 (0)