From fbd7cf75afabdaa01923e39e91791d0e26434c26 Mon Sep 17 00:00:00 2001 From: Robert Stupp Date: Mon, 7 Apr 2025 15:09:51 +0200 Subject: [PATCH] Remove `@StaticInitSafe` annotation There was an issue around mapped configurations having the `@StaticInitSafe` annotation that led to _two_ instances (a "static" one and a "somewhet application-scoped" one) - this was fixed in Quarkus 3.21. One bug in smallrye-config is fixed for Quarkus > 3.21.0, another issue however remains. Since `@StaticInitSafe` annotated configs seem to cause some weird issues, it seems legit to remote that annotation altogether. This approach was [taken in Nessie](https://github.com/projectnessie/nessie/pull/10606) as well. Investigations (via practical experiments) have proven that there's no measurable impact (runtime + heap) when doing this - and that's also been confirmed by Quarkus + Smallrye-config maintainers. Hence this change remotes that annotation from the code base. --- extension/persistence/eclipselink/build.gradle.kts | 7 ++----- .../impl/eclipselink/EclipseLinkConfiguration.java | 2 -- .../quarkus/auth/QuarkusAuthenticationConfiguration.java | 2 -- .../quarkus/catalog/io/QuarkusFileIOConfiguration.java | 2 -- .../config/QuarkusBehaviorChangesConfiguration.java | 2 -- .../quarkus/config/QuarkusFeaturesConfiguration.java | 2 -- .../quarkus/context/QuarkusRealmContextConfiguration.java | 2 -- .../quarkus/logging/QuarkusLoggingConfiguration.java | 2 -- .../quarkus/metrics/QuarkusMetricsConfiguration.java | 2 -- .../persistence/QuarkusPersistenceConfiguration.java | 2 -- .../ratelimiter/QuarkusRateLimiterFilterConfiguration.java | 2 -- .../ratelimiter/QuarkusTokenBucketConfiguration.java | 2 -- .../quarkus/storage/QuarkusStorageConfiguration.java | 2 -- .../quarkus/task/QuarkusTaskHandlerConfiguration.java | 2 -- 14 files changed, 2 insertions(+), 31 deletions(-) diff --git a/extension/persistence/eclipselink/build.gradle.kts b/extension/persistence/eclipselink/build.gradle.kts index 80bd7c61e5..e5d4e655d1 100644 --- a/extension/persistence/eclipselink/build.gradle.kts +++ b/extension/persistence/eclipselink/build.gradle.kts @@ -34,9 +34,6 @@ dependencies { implementation(libs.eclipselink) - implementation(platform(libs.quarkus.bom)) - implementation("io.quarkus:quarkus-core") - implementation(libs.slf4j.api) val eclipseLinkDeps: String? = project.findProperty("eclipseLinkDeps") as String? @@ -58,8 +55,8 @@ dependencies { compileOnly(libs.jakarta.annotation.api) compileOnly(libs.jakarta.enterprise.cdi.api) compileOnly(libs.jakarta.inject.api) - compileOnly("io.smallrye.common:smallrye-common-annotation") // @Identifier - compileOnly("io.smallrye.config:smallrye-config-core") // @ConfigMapping + compileOnly(libs.smallrye.common.annotation) // @Identifier + compileOnly(libs.smallrye.config.core) // @ConfigMapping compileOnly(platform(libs.jackson.bom)) compileOnly("com.fasterxml.jackson.core:jackson-annotations") diff --git a/extension/persistence/eclipselink/src/main/java/org/apache/polaris/extension/persistence/impl/eclipselink/EclipseLinkConfiguration.java b/extension/persistence/eclipselink/src/main/java/org/apache/polaris/extension/persistence/impl/eclipselink/EclipseLinkConfiguration.java index cfa7b6679e..7848c7db55 100644 --- a/extension/persistence/eclipselink/src/main/java/org/apache/polaris/extension/persistence/impl/eclipselink/EclipseLinkConfiguration.java +++ b/extension/persistence/eclipselink/src/main/java/org/apache/polaris/extension/persistence/impl/eclipselink/EclipseLinkConfiguration.java @@ -18,13 +18,11 @@ */ package org.apache.polaris.extension.persistence.impl.eclipselink; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; import io.smallrye.config.WithDefault; import java.nio.file.Path; import java.util.Optional; -@StaticInitSafe @ConfigMapping(prefix = "polaris.persistence.eclipselink") public interface EclipseLinkConfiguration { diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/auth/QuarkusAuthenticationConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/auth/QuarkusAuthenticationConfiguration.java index 9ae77291df..0065763c43 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/auth/QuarkusAuthenticationConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/auth/QuarkusAuthenticationConfiguration.java @@ -18,11 +18,9 @@ */ package org.apache.polaris.service.quarkus.auth; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; import org.apache.polaris.service.auth.AuthenticationConfiguration; -@StaticInitSafe @ConfigMapping(prefix = "polaris.authentication") public interface QuarkusAuthenticationConfiguration extends AuthenticationConfiguration { diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/catalog/io/QuarkusFileIOConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/catalog/io/QuarkusFileIOConfiguration.java index cebbe76737..4057bf7992 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/catalog/io/QuarkusFileIOConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/catalog/io/QuarkusFileIOConfiguration.java @@ -18,10 +18,8 @@ */ package org.apache.polaris.service.quarkus.catalog.io; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; -@StaticInitSafe @ConfigMapping(prefix = "polaris.file-io") public interface QuarkusFileIOConfiguration { diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusBehaviorChangesConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusBehaviorChangesConfiguration.java index 852529a0cc..1e4fe946e0 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusBehaviorChangesConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusBehaviorChangesConfiguration.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; import java.util.ArrayList; import java.util.HashMap; @@ -29,7 +28,6 @@ import java.util.Map; import org.apache.polaris.service.config.FeaturesConfiguration; -@StaticInitSafe @ConfigMapping(prefix = "polaris.behavior-changes") // FIXME: this should extend FeatureConfiguration, but that causes conflicts with // QuarkusFeaturesConfiguration diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusFeaturesConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusFeaturesConfiguration.java index 85858440a3..2ae58c8fe7 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusFeaturesConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusFeaturesConfiguration.java @@ -18,12 +18,10 @@ */ package org.apache.polaris.service.quarkus.config; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; import java.util.Map; import org.apache.polaris.service.config.FeaturesConfiguration; -@StaticInitSafe @ConfigMapping(prefix = "polaris.features") public interface QuarkusFeaturesConfiguration extends FeaturesConfiguration { diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/context/QuarkusRealmContextConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/context/QuarkusRealmContextConfiguration.java index dce9894041..2c8856702d 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/context/QuarkusRealmContextConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/context/QuarkusRealmContextConfiguration.java @@ -18,11 +18,9 @@ */ package org.apache.polaris.service.quarkus.context; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; import org.apache.polaris.service.context.RealmContextConfiguration; -@StaticInitSafe @ConfigMapping(prefix = "polaris.realm-context") public interface QuarkusRealmContextConfiguration extends RealmContextConfiguration { diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/logging/QuarkusLoggingConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/logging/QuarkusLoggingConfiguration.java index 145bd740e5..171d52b617 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/logging/QuarkusLoggingConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/logging/QuarkusLoggingConfiguration.java @@ -18,11 +18,9 @@ */ package org.apache.polaris.service.quarkus.logging; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; import java.util.Map; -@StaticInitSafe @ConfigMapping(prefix = "polaris.log") public interface QuarkusLoggingConfiguration { diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/metrics/QuarkusMetricsConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/metrics/QuarkusMetricsConfiguration.java index c599e85e2d..756de6adb5 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/metrics/QuarkusMetricsConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/metrics/QuarkusMetricsConfiguration.java @@ -18,11 +18,9 @@ */ package org.apache.polaris.service.quarkus.metrics; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; import java.util.Map; -@StaticInitSafe @ConfigMapping(prefix = "polaris.metrics") public interface QuarkusMetricsConfiguration { diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/persistence/QuarkusPersistenceConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/persistence/QuarkusPersistenceConfiguration.java index 5c3223f696..e6306d8c7f 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/persistence/QuarkusPersistenceConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/persistence/QuarkusPersistenceConfiguration.java @@ -18,10 +18,8 @@ */ package org.apache.polaris.service.quarkus.persistence; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; -@StaticInitSafe @ConfigMapping(prefix = "polaris.persistence") public interface QuarkusPersistenceConfiguration { diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/ratelimiter/QuarkusRateLimiterFilterConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/ratelimiter/QuarkusRateLimiterFilterConfiguration.java index d1a1906cfd..3bb8c476bc 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/ratelimiter/QuarkusRateLimiterFilterConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/ratelimiter/QuarkusRateLimiterFilterConfiguration.java @@ -18,10 +18,8 @@ */ package org.apache.polaris.service.quarkus.ratelimiter; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; -@StaticInitSafe @ConfigMapping(prefix = "polaris.rate-limiter.filter") public interface QuarkusRateLimiterFilterConfiguration { diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/ratelimiter/QuarkusTokenBucketConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/ratelimiter/QuarkusTokenBucketConfiguration.java index 15967d7cf7..b48ae32a8d 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/ratelimiter/QuarkusTokenBucketConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/ratelimiter/QuarkusTokenBucketConfiguration.java @@ -18,11 +18,9 @@ */ package org.apache.polaris.service.quarkus.ratelimiter; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; import org.apache.polaris.service.ratelimiter.TokenBucketConfiguration; -@StaticInitSafe @ConfigMapping(prefix = "polaris.rate-limiter.token-bucket") public interface QuarkusTokenBucketConfiguration extends TokenBucketConfiguration { diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/storage/QuarkusStorageConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/storage/QuarkusStorageConfiguration.java index cf2c716bcd..975c74d22f 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/storage/QuarkusStorageConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/storage/QuarkusStorageConfiguration.java @@ -18,14 +18,12 @@ */ package org.apache.polaris.service.quarkus.storage; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; import io.smallrye.config.WithName; import java.time.Duration; import java.util.*; import org.apache.polaris.service.storage.StorageConfiguration; -@StaticInitSafe @ConfigMapping(prefix = "polaris.storage") public interface QuarkusStorageConfiguration extends StorageConfiguration { diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/task/QuarkusTaskHandlerConfiguration.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/task/QuarkusTaskHandlerConfiguration.java index ff9416f97f..a95548bd1b 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/task/QuarkusTaskHandlerConfiguration.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/task/QuarkusTaskHandlerConfiguration.java @@ -18,12 +18,10 @@ */ package org.apache.polaris.service.quarkus.task; -import io.quarkus.runtime.annotations.StaticInitSafe; import io.smallrye.config.ConfigMapping; import io.smallrye.config.WithDefault; import org.apache.polaris.service.task.TaskHandlerConfiguration; -@StaticInitSafe @ConfigMapping(prefix = "polaris.tasks") public interface QuarkusTaskHandlerConfiguration extends TaskHandlerConfiguration {