From f485ccb00236c0b9803255cf3d61191926824f7b Mon Sep 17 00:00:00 2001 From: Niels Bauman Date: Tue, 8 Jul 2025 19:07:27 -0300 Subject: [PATCH 1/2] Remove deprecated `Metadata.Builder#putProjectCustom` Replaces the deprecated method with appropriate substitute. --- .../cluster/metadata/Metadata.java | 17 ++++++----------- .../metadata/MetadataPersistentTasksTests.java | 17 ++++++++++------- .../cluster/metadata/MetadataTests.java | 1 - 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java index a6a37f8bec332..6ca9bd529fcc1 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java @@ -1210,7 +1210,7 @@ public static Metadata readFrom(StreamInput in) throws IOException { for (int i = 0; i < size; i++) { projectBuilder.put(IndexTemplateMetadata.readFrom(in)); } - readBwcCustoms(in, builder); + readBwcCustoms(in, builder, projectBuilder); int reservedStateSize = in.readVInt(); for (int i = 0; i < reservedStateSize; i++) { @@ -1229,7 +1229,7 @@ public static Metadata readFrom(StreamInput in) throws IOException { return builder.build(); } - private static void readBwcCustoms(StreamInput in, Builder builder) throws IOException { + private static void readBwcCustoms(StreamInput in, Builder builder, ProjectMetadata.Builder projectBuilder) throws IOException { final Set clusterScopedNames = in.namedWriteableRegistry().getReaders(ClusterCustom.class).keySet(); final Set projectScopedNames = in.namedWriteableRegistry().getReaders(ProjectCustom.class).keySet(); final int count = in.readVInt(); @@ -1245,9 +1245,9 @@ private static void readBwcCustoms(StreamInput in, Builder builder) throws IOExc if (custom instanceof PersistentTasksCustomMetadata persistentTasksCustomMetadata) { final var tuple = persistentTasksCustomMetadata.split(); builder.putCustom(tuple.v1().getWriteableName(), tuple.v1()); - builder.putProjectCustom(tuple.v2().getWriteableName(), tuple.v2()); + projectBuilder.putCustom(tuple.v2().getWriteableName(), tuple.v2()); } else { - builder.putProjectCustom(custom.getWriteableName(), custom); + projectBuilder.putCustom(custom.getWriteableName(), custom); } } else { throw new IllegalArgumentException("Unknown custom name [" + name + "]"); @@ -1569,7 +1569,8 @@ public Builder putCustom(String type, ClusterCustom custom) { @Deprecated(forRemoval = true) public Builder putCustom(String type, ProjectCustom custom) { - return putProjectCustom(type, custom); + getSingleProject().putCustom(type, Objects.requireNonNull(custom, type)); + return this; } public ClusterCustom getCustom(String type) { @@ -1592,12 +1593,6 @@ public Builder customs(Map clusterCustoms) { return this; } - @Deprecated(forRemoval = true) - public Builder putProjectCustom(String type, ProjectCustom custom) { - getSingleProject().putCustom(type, Objects.requireNonNull(custom, type)); - return this; - } - @Deprecated(forRemoval = true) public Builder projectCustoms(Map projectCustoms) { projectCustoms.forEach((key, value) -> Objects.requireNonNull(value, key)); diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataPersistentTasksTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataPersistentTasksTests.java index ac3644b6ecc8a..a1780c8a69b5b 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataPersistentTasksTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataPersistentTasksTests.java @@ -306,13 +306,16 @@ private Tuple randomMetadataAndUpdate() { ClusterPersistentTasksCustomMetadata::new ) ) - .putProjectCustom( - PersistentTasksCustomMetadata.TYPE, - mutatePersistentTasks( - PersistentTasksCustomMetadata.get(before.getProject(Metadata.DEFAULT_PROJECT_ID)), - MetadataPersistentTasksTests::oneProjectPersistentTask, - PersistentTasksCustomMetadata::new - ) + .put( + ProjectMetadata.builder(before.getProject(Metadata.DEFAULT_PROJECT_ID)) + .putCustom( + PersistentTasksCustomMetadata.TYPE, + mutatePersistentTasks( + PersistentTasksCustomMetadata.get(before.getProject(Metadata.DEFAULT_PROJECT_ID)), + MetadataPersistentTasksTests::oneProjectPersistentTask, + PersistentTasksCustomMetadata::new + ) + ) ) .build(); return new Tuple<>(before, after); diff --git a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java index 6eecf4921c50e..c9398a4f54676 100644 --- a/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java +++ b/server/src/test/java/org/elasticsearch/cluster/metadata/MetadataTests.java @@ -1359,7 +1359,6 @@ public void testBuilderRejectsNullCustom() { expectThrows(NullPointerException.class, () -> builder.putCustom(key, (Metadata.ClusterCustom) null)).getMessage(), containsString(key) ); - assertThat(expectThrows(NullPointerException.class, () -> builder.putProjectCustom(key, null)).getMessage(), containsString(key)); } public void testBuilderRejectsNullInCustoms() { From 3d6f0719580511321ff5b8ed274b781f3edc9d3a Mon Sep 17 00:00:00 2001 From: Niels Bauman Date: Mon, 14 Jul 2025 15:04:04 -0300 Subject: [PATCH 2/2] Retrieve project builder instead of method parameter --- .../java/org/elasticsearch/cluster/metadata/Metadata.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java index 1a3103b5f9817..76319091f4911 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/Metadata.java @@ -1210,7 +1210,7 @@ public static Metadata readFrom(StreamInput in) throws IOException { for (int i = 0; i < size; i++) { projectBuilder.put(IndexTemplateMetadata.readFrom(in)); } - readBwcCustoms(in, builder, projectBuilder); + readBwcCustoms(in, builder); int reservedStateSize = in.readVInt(); for (int i = 0; i < reservedStateSize; i++) { @@ -1229,7 +1229,8 @@ public static Metadata readFrom(StreamInput in) throws IOException { return builder.build(); } - private static void readBwcCustoms(StreamInput in, Builder builder, ProjectMetadata.Builder projectBuilder) throws IOException { + private static void readBwcCustoms(StreamInput in, Builder builder) throws IOException { + final ProjectMetadata.Builder projectBuilder = builder.getProject(ProjectId.DEFAULT); final Set clusterScopedNames = in.namedWriteableRegistry().getReaders(ClusterCustom.class).keySet(); final Set projectScopedNames = in.namedWriteableRegistry().getReaders(ProjectCustom.class).keySet(); final int count = in.readVInt();