Skip to content

Commit f664cf5

Browse files
Add proper Diff support for ProjectStateRegistry (#130917)
This change introduces proper diff support for ProjectStateRegistry instead of CompleteDiff and Entry to ProjectStateRegistry, to allow addition of more project state fields in the future
1 parent 1dc6bc0 commit f664cf5

File tree

6 files changed

+234
-38
lines changed

6 files changed

+234
-38
lines changed

server/src/main/java/org/elasticsearch/TransportVersions.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ static TransportVersion def(int id) {
342342
public static final TransportVersion NODE_USAGE_STATS_FOR_THREAD_POOLS_IN_CLUSTER_INFO = def(9_121_0_00);
343343
public static final TransportVersion ESQL_CATEGORIZE_OPTIONS = def(9_122_0_00);
344344
public static final TransportVersion ML_INFERENCE_AZURE_AI_STUDIO_RERANK_ADDED = def(9_123_0_00);
345+
public static final TransportVersion PROJECT_STATE_REGISTRY_ENTRY = def(9_124_0_00);
345346

346347
/*
347348
* STOP! READ THIS FIRST! No, really,

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -835,10 +835,6 @@ private Iterator<? extends ToXContent> toXContentChunkedWithSingleProjectFormat(
835835
);
836836
}
837837

838-
private static final DiffableUtils.KeySerializer<ProjectId> PROJECT_ID_SERIALIZER = DiffableUtils.getWriteableKeySerializer(
839-
ProjectId.READER
840-
);
841-
842838
private static class MetadataDiff implements Diff<Metadata> {
843839

844840
private final long version;
@@ -880,7 +876,7 @@ private static class MetadataDiff implements Diff<Metadata> {
880876
multiProject = null;
881877
} else {
882878
singleProject = null;
883-
multiProject = DiffableUtils.diff(before.projectMetadata, after.projectMetadata, PROJECT_ID_SERIALIZER);
879+
multiProject = DiffableUtils.diff(before.projectMetadata, after.projectMetadata, ProjectId.PROJECT_ID_SERIALIZER);
884880
}
885881

886882
if (empty) {
@@ -1004,7 +1000,7 @@ private MetadataDiff(StreamInput in) throws IOException {
10041000
singleProject = null;
10051001
multiProject = DiffableUtils.readJdkMapDiff(
10061002
in,
1007-
PROJECT_ID_SERIALIZER,
1003+
ProjectId.PROJECT_ID_SERIALIZER,
10081004
ProjectMetadata::readFrom,
10091005
ProjectMetadata.ProjectMetadataDiff::new
10101006
);
@@ -1059,7 +1055,7 @@ public void writeTo(StreamOutput out) throws IOException {
10591055
if (multiProject != null) {
10601056
multiProject.writeTo(out);
10611057
} else {
1062-
DiffableUtils.singleEntryDiff(DEFAULT_PROJECT_ID, singleProject, PROJECT_ID_SERIALIZER).writeTo(out);
1058+
DiffableUtils.singleEntryDiff(DEFAULT_PROJECT_ID, singleProject, ProjectId.PROJECT_ID_SERIALIZER).writeTo(out);
10631059
}
10641060
}
10651061
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
package org.elasticsearch.cluster.metadata;
1111

12+
import org.elasticsearch.cluster.DiffableUtils;
1213
import org.elasticsearch.common.Strings;
1314
import org.elasticsearch.common.io.stream.StreamInput;
1415
import org.elasticsearch.common.io.stream.StreamOutput;
@@ -26,6 +27,7 @@ public class ProjectId implements Writeable, ToXContent {
2627
private static final String DEFAULT_STRING = "default";
2728
public static final ProjectId DEFAULT = new ProjectId(DEFAULT_STRING);
2829
public static final Reader<ProjectId> READER = ProjectId::readFrom;
30+
public static final DiffableUtils.KeySerializer<ProjectId> PROJECT_ID_SERIALIZER = DiffableUtils.getWriteableKeySerializer(READER);
2931
private static final int MAX_LENGTH = 128;
3032

3133
private final String id;

0 commit comments

Comments
 (0)