|
@@ -36,6 +36,7 @@ import org.elasticsearch.common.xcontent.ChunkedToXContent;
|
|
|
import org.elasticsearch.common.xcontent.ChunkedToXContentHelper;
|
|
|
import org.elasticsearch.common.xcontent.XContentHelper;
|
|
|
import org.elasticsearch.common.xcontent.XContentParserUtils;
|
|
|
+import org.elasticsearch.core.FixForMultiProject;
|
|
|
import org.elasticsearch.core.Nullable;
|
|
|
import org.elasticsearch.index.Index;
|
|
|
import org.elasticsearch.index.IndexMode;
|
|
@@ -78,6 +79,7 @@ import java.util.stream.Stream;
|
|
|
|
|
|
import static org.elasticsearch.cluster.metadata.LifecycleExecutionState.ILM_CUSTOM_METADATA_KEY;
|
|
|
import static org.elasticsearch.cluster.metadata.Metadata.ALL;
|
|
|
+import static org.elasticsearch.cluster.project.ProjectStateRegistry.RESERVED_DIFF_VALUE_READER;
|
|
|
import static org.elasticsearch.index.IndexSettings.PREFER_ILM_SETTING;
|
|
|
|
|
|
public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<ProjectMetadata>, ChunkedToXContent {
|
|
@@ -91,7 +93,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
private final ImmutableOpenMap<String, Set<Index>> aliasedIndices;
|
|
|
private final ImmutableOpenMap<String, IndexTemplateMetadata> templates;
|
|
|
private final ImmutableOpenMap<String, Metadata.ProjectCustom> customs;
|
|
|
- private final ImmutableOpenMap<String, ReservedStateMetadata> reservedStateMetadata;
|
|
|
|
|
|
private final int totalNumberOfShards;
|
|
|
private final int totalOpenIndexShards;
|
|
@@ -125,7 +126,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
ImmutableOpenMap<String, Set<Index>> aliasedIndices,
|
|
|
ImmutableOpenMap<String, IndexTemplateMetadata> templates,
|
|
|
ImmutableOpenMap<String, Metadata.ProjectCustom> customs,
|
|
|
- ImmutableOpenMap<String, ReservedStateMetadata> reservedStateMetadata,
|
|
|
int totalNumberOfShards,
|
|
|
int totalOpenIndexShards,
|
|
|
String[] allIndices,
|
|
@@ -143,7 +143,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
this.aliasedIndices = aliasedIndices;
|
|
|
this.templates = templates;
|
|
|
this.customs = customs;
|
|
|
- this.reservedStateMetadata = reservedStateMetadata;
|
|
|
this.totalNumberOfShards = totalNumberOfShards;
|
|
|
this.totalOpenIndexShards = totalOpenIndexShards;
|
|
|
this.allIndices = allIndices;
|
|
@@ -224,7 +223,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
aliasedIndices,
|
|
|
templates,
|
|
|
customs,
|
|
|
- reservedStateMetadata,
|
|
|
totalNumberOfShards,
|
|
|
totalOpenIndexShards,
|
|
|
allIndices,
|
|
@@ -257,7 +255,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
aliasedIndices,
|
|
|
templates,
|
|
|
customs,
|
|
|
- reservedStateMetadata,
|
|
|
totalNumberOfShards,
|
|
|
totalOpenIndexShards,
|
|
|
allIndices,
|
|
@@ -291,7 +288,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
aliasedIndices,
|
|
|
templates,
|
|
|
customs,
|
|
|
- reservedStateMetadata,
|
|
|
totalNumberOfShards,
|
|
|
totalOpenIndexShards,
|
|
|
allIndices,
|
|
@@ -379,7 +375,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
updatedAliases,
|
|
|
templates,
|
|
|
customs,
|
|
|
- reservedStateMetadata,
|
|
|
totalNumberOfShards + index.getTotalNumberOfShards(),
|
|
|
totalOpenIndexShards + (index.getState() == IndexMetadata.State.OPEN ? index.getTotalNumberOfShards() : 0),
|
|
|
updatedAllIndices,
|
|
@@ -933,10 +928,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
return customs;
|
|
|
}
|
|
|
|
|
|
- public Map<String, ReservedStateMetadata> reservedStateMetadata() {
|
|
|
- return reservedStateMetadata;
|
|
|
- }
|
|
|
-
|
|
|
public Map<String, DataStream> dataStreams() {
|
|
|
return custom(DataStreamMetadata.TYPE, DataStreamMetadata.EMPTY).dataStreams();
|
|
|
}
|
|
@@ -1143,7 +1134,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
private final ImmutableOpenMap.Builder<String, IndexMetadata> indices;
|
|
|
private final ImmutableOpenMap.Builder<String, IndexTemplateMetadata> templates;
|
|
|
private final ImmutableOpenMap.Builder<String, Metadata.ProjectCustom> customs;
|
|
|
- private final ImmutableOpenMap.Builder<String, ReservedStateMetadata> reservedStateMetadata;
|
|
|
|
|
|
private SortedMap<String, IndexAbstraction> previousIndicesLookup;
|
|
|
|
|
@@ -1160,7 +1150,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
this.indices = ImmutableOpenMap.builder(projectMetadata.indices);
|
|
|
this.templates = ImmutableOpenMap.builder(projectMetadata.templates);
|
|
|
this.customs = ImmutableOpenMap.builder(projectMetadata.customs);
|
|
|
- this.reservedStateMetadata = ImmutableOpenMap.builder(projectMetadata.reservedStateMetadata);
|
|
|
this.previousIndicesLookup = projectMetadata.indicesLookup;
|
|
|
this.mappingsByHash = new HashMap<>(projectMetadata.mappingsByHash);
|
|
|
this.checkForUnusedMappings = false;
|
|
@@ -1174,7 +1163,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
indices = ImmutableOpenMap.builder(indexCountHint);
|
|
|
templates = ImmutableOpenMap.builder();
|
|
|
customs = ImmutableOpenMap.builder();
|
|
|
- reservedStateMetadata = ImmutableOpenMap.builder();
|
|
|
previousIndicesLookup = null;
|
|
|
this.mappingsByHash = new HashMap<>(mappingsByHash);
|
|
|
indexGraveyard(IndexGraveyard.builder().build()); // create new empty index graveyard to initialize
|
|
@@ -1519,21 +1507,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
return this;
|
|
|
}
|
|
|
|
|
|
- public Builder put(Map<String, ReservedStateMetadata> reservedStateMetadata) {
|
|
|
- this.reservedStateMetadata.putAllFromMap(reservedStateMetadata);
|
|
|
- return this;
|
|
|
- }
|
|
|
-
|
|
|
- public Builder put(ReservedStateMetadata metadata) {
|
|
|
- reservedStateMetadata.put(metadata.namespace(), metadata);
|
|
|
- return this;
|
|
|
- }
|
|
|
-
|
|
|
- public Builder removeReservedState(ReservedStateMetadata metadata) {
|
|
|
- reservedStateMetadata.remove(metadata.namespace());
|
|
|
- return this;
|
|
|
- }
|
|
|
-
|
|
|
public Builder indexGraveyard(final IndexGraveyard indexGraveyard) {
|
|
|
return putCustom(IndexGraveyard.TYPE, indexGraveyard);
|
|
|
}
|
|
@@ -1682,7 +1655,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
aliasedIndices,
|
|
|
templates.build(),
|
|
|
customs.build(),
|
|
|
- reservedStateMetadata.build(),
|
|
|
totalNumberOfShards,
|
|
|
totalOpenIndexShards,
|
|
|
allIndicesArray,
|
|
@@ -2087,6 +2059,7 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ @FixForMultiProject(description = "Remove reading reserved_state and settings") // ES-12795
|
|
|
public static ProjectMetadata fromXContent(XContentParser parser) throws IOException {
|
|
|
XContentParser.Token token = parser.currentToken();
|
|
|
if (token == null) {
|
|
@@ -2107,9 +2080,10 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
}
|
|
|
} else if (token == XContentParser.Token.START_OBJECT) {
|
|
|
switch (currentFieldName) {
|
|
|
+ // Remove this (ES-12795)
|
|
|
case "reserved_state" -> {
|
|
|
while (parser.nextToken() != XContentParser.Token.END_OBJECT) {
|
|
|
- projectBuilder.put(ReservedStateMetadata.fromXContent(parser));
|
|
|
+ ReservedStateMetadata.fromXContent(parser);
|
|
|
}
|
|
|
}
|
|
|
case "indices" -> {
|
|
@@ -2122,6 +2096,7 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
projectBuilder.put(IndexTemplateMetadata.Builder.fromXContent(parser, parser.currentName()));
|
|
|
}
|
|
|
}
|
|
|
+ // Remove this (ES-12795)
|
|
|
case "settings" -> {
|
|
|
Settings.fromXContent(parser);
|
|
|
}
|
|
@@ -2169,10 +2144,7 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
)
|
|
|
),
|
|
|
indices,
|
|
|
- customs,
|
|
|
- multiProject
|
|
|
- ? ChunkedToXContentHelper.object("reserved_state", reservedStateMetadata().values().iterator())
|
|
|
- : Collections.emptyIterator()
|
|
|
+ customs
|
|
|
);
|
|
|
}
|
|
|
|
|
@@ -2199,9 +2171,11 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
|
|
|
readProjectCustoms(in, builder);
|
|
|
|
|
|
- int reservedStateSize = in.readVInt();
|
|
|
- for (int i = 0; i < reservedStateSize; i++) {
|
|
|
- builder.put(ReservedStateMetadata.readFrom(in));
|
|
|
+ if (in.getTransportVersion().before(TransportVersions.PROJECT_RESERVED_STATE_MOVE_TO_REGISTRY)) {
|
|
|
+ int reservedStateSize = in.readVInt();
|
|
|
+ for (int i = 0; i < reservedStateSize; i++) {
|
|
|
+ ReservedStateMetadata.readFrom(in);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (in.getTransportVersion()
|
|
@@ -2238,7 +2212,9 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
}
|
|
|
out.writeCollection(templates.values());
|
|
|
VersionedNamedWriteable.writeVersionedWriteables(out, customs.values());
|
|
|
- out.writeCollection(reservedStateMetadata.values());
|
|
|
+ if (out.getTransportVersion().before(TransportVersions.PROJECT_RESERVED_STATE_MOVE_TO_REGISTRY)) {
|
|
|
+ out.writeCollection(Collections.emptySet());
|
|
|
+ }
|
|
|
|
|
|
if (out.getTransportVersion()
|
|
|
.between(TransportVersions.PROJECT_METADATA_SETTINGS, TransportVersions.CLUSTER_STATE_PROJECTS_SETTINGS)) {
|
|
@@ -2253,23 +2229,16 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
new DiffableUtils.DiffableValueReader<>(IndexMetadata::readFrom, IndexMetadata::readDiffFrom);
|
|
|
private static final DiffableUtils.DiffableValueReader<String, IndexTemplateMetadata> TEMPLATES_DIFF_VALUE_READER =
|
|
|
new DiffableUtils.DiffableValueReader<>(IndexTemplateMetadata::readFrom, IndexTemplateMetadata::readDiffFrom);
|
|
|
- private static final DiffableUtils.DiffableValueReader<String, ReservedStateMetadata> RESERVED_DIFF_VALUE_READER =
|
|
|
- new DiffableUtils.DiffableValueReader<>(ReservedStateMetadata::readFrom, ReservedStateMetadata::readDiffFrom);
|
|
|
|
|
|
private final DiffableUtils.MapDiff<String, IndexMetadata, ImmutableOpenMap<String, IndexMetadata>> indices;
|
|
|
private final DiffableUtils.MapDiff<String, IndexTemplateMetadata, ImmutableOpenMap<String, IndexTemplateMetadata>> templates;
|
|
|
private final DiffableUtils.MapDiff<String, Metadata.ProjectCustom, ImmutableOpenMap<String, Metadata.ProjectCustom>> customs;
|
|
|
- private final DiffableUtils.MapDiff<
|
|
|
- String,
|
|
|
- ReservedStateMetadata,
|
|
|
- ImmutableOpenMap<String, ReservedStateMetadata>> reservedStateMetadata;
|
|
|
|
|
|
private ProjectMetadataDiff(ProjectMetadata before, ProjectMetadata after) {
|
|
|
if (before == after) {
|
|
|
indices = DiffableUtils.emptyDiff();
|
|
|
templates = DiffableUtils.emptyDiff();
|
|
|
customs = DiffableUtils.emptyDiff();
|
|
|
- reservedStateMetadata = DiffableUtils.emptyDiff();
|
|
|
} else {
|
|
|
indices = DiffableUtils.diff(before.indices, after.indices, DiffableUtils.getStringKeySerializer());
|
|
|
templates = DiffableUtils.diff(before.templates, after.templates, DiffableUtils.getStringKeySerializer());
|
|
@@ -2279,35 +2248,26 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
DiffableUtils.getStringKeySerializer(),
|
|
|
PROJECT_CUSTOM_VALUE_SERIALIZER
|
|
|
);
|
|
|
- reservedStateMetadata = DiffableUtils.diff(
|
|
|
- before.reservedStateMetadata,
|
|
|
- after.reservedStateMetadata,
|
|
|
- DiffableUtils.getStringKeySerializer()
|
|
|
- );
|
|
|
}
|
|
|
}
|
|
|
|
|
|
ProjectMetadataDiff(
|
|
|
DiffableUtils.MapDiff<String, IndexMetadata, ImmutableOpenMap<String, IndexMetadata>> indices,
|
|
|
DiffableUtils.MapDiff<String, IndexTemplateMetadata, ImmutableOpenMap<String, IndexTemplateMetadata>> templates,
|
|
|
- DiffableUtils.MapDiff<String, Metadata.ProjectCustom, ImmutableOpenMap<String, Metadata.ProjectCustom>> customs,
|
|
|
- DiffableUtils.MapDiff<String, ReservedStateMetadata, ImmutableOpenMap<String, ReservedStateMetadata>> reservedStateMetadata
|
|
|
+ DiffableUtils.MapDiff<String, Metadata.ProjectCustom, ImmutableOpenMap<String, Metadata.ProjectCustom>> customs
|
|
|
) {
|
|
|
this.indices = indices;
|
|
|
this.templates = templates;
|
|
|
this.customs = customs;
|
|
|
- this.reservedStateMetadata = reservedStateMetadata;
|
|
|
}
|
|
|
|
|
|
ProjectMetadataDiff(StreamInput in) throws IOException {
|
|
|
indices = DiffableUtils.readImmutableOpenMapDiff(in, DiffableUtils.getStringKeySerializer(), INDEX_METADATA_DIFF_VALUE_READER);
|
|
|
templates = DiffableUtils.readImmutableOpenMapDiff(in, DiffableUtils.getStringKeySerializer(), TEMPLATES_DIFF_VALUE_READER);
|
|
|
customs = DiffableUtils.readImmutableOpenMapDiff(in, DiffableUtils.getStringKeySerializer(), PROJECT_CUSTOM_VALUE_SERIALIZER);
|
|
|
- reservedStateMetadata = DiffableUtils.readImmutableOpenMapDiff(
|
|
|
- in,
|
|
|
- DiffableUtils.getStringKeySerializer(),
|
|
|
- RESERVED_DIFF_VALUE_READER
|
|
|
- );
|
|
|
+ if (in.getTransportVersion().before(TransportVersions.PROJECT_RESERVED_STATE_MOVE_TO_REGISTRY)) {
|
|
|
+ DiffableUtils.readImmutableOpenMapDiff(in, DiffableUtils.getStringKeySerializer(), RESERVED_DIFF_VALUE_READER);
|
|
|
+ }
|
|
|
if (in.getTransportVersion()
|
|
|
.between(TransportVersions.PROJECT_METADATA_SETTINGS, TransportVersions.CLUSTER_STATE_PROJECTS_SETTINGS)) {
|
|
|
Settings.readSettingsDiffFromStream(in);
|
|
@@ -2326,16 +2286,14 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
return customs;
|
|
|
}
|
|
|
|
|
|
- DiffableUtils.MapDiff<String, ReservedStateMetadata, ImmutableOpenMap<String, ReservedStateMetadata>> reservedStateMetadata() {
|
|
|
- return reservedStateMetadata;
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public void writeTo(StreamOutput out) throws IOException {
|
|
|
indices.writeTo(out);
|
|
|
templates.writeTo(out);
|
|
|
customs.writeTo(out);
|
|
|
- reservedStateMetadata.writeTo(out);
|
|
|
+ if (out.getTransportVersion().before(TransportVersions.PROJECT_RESERVED_STATE_MOVE_TO_REGISTRY)) {
|
|
|
+ DiffableUtils.emptyDiff().writeTo(out);
|
|
|
+ }
|
|
|
if (out.getTransportVersion()
|
|
|
.between(TransportVersions.PROJECT_METADATA_SETTINGS, TransportVersions.CLUSTER_STATE_PROJECTS_SETTINGS)) {
|
|
|
Settings.EMPTY_DIFF.writeTo(out);
|
|
@@ -2344,7 +2302,7 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
|
|
|
@Override
|
|
|
public ProjectMetadata apply(ProjectMetadata part) {
|
|
|
- if (indices.isEmpty() && templates.isEmpty() && customs.isEmpty() && reservedStateMetadata.isEmpty()) {
|
|
|
+ if (indices.isEmpty() && templates.isEmpty() && customs.isEmpty()) {
|
|
|
// nothing to do
|
|
|
return part;
|
|
|
}
|
|
@@ -2354,7 +2312,6 @@ public class ProjectMetadata implements Iterable<IndexMetadata>, Diffable<Projec
|
|
|
builder.indices(updatedIndices);
|
|
|
builder.templates(templates.apply(part.templates));
|
|
|
builder.customs(customs.apply(part.customs));
|
|
|
- builder.put(reservedStateMetadata.apply(part.reservedStateMetadata));
|
|
|
if (part.indices == updatedIndices
|
|
|
&& builder.dataStreamMetadata() == part.custom(DataStreamMetadata.TYPE, DataStreamMetadata.EMPTY)) {
|
|
|
builder.previousIndicesLookup = part.indicesLookup;
|