This is an automated email from the ASF dual-hosted git repository.

dimas pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/main by this push:
     new 276d71c9b Use injected RealmConfig in JdbcMetaStoreManagerFactory 
(#3412)
276d71c9b is described below

commit 276d71c9bf97f019911c1ae1d2702f8e5dfc99a5
Author: Dmitri Bourlatchkov <[email protected]>
AuthorDate: Mon Jan 19 09:39:17 2026 -0500

    Use injected RealmConfig in JdbcMetaStoreManagerFactory (#3412)
    
    * Use injected RealmConfig in JdbcMetaStoreManagerFactory
    
    * Improve code isolation by using `RealmConfig` (like most other code)
      instead of the lower-level `PolarisConfigurationStore`
    
    * This also enabled proper CDI request-scoped injection in concert with 
#3411
    
    * Additionally, this enables further code cleanup in 
`PolarisConfigurationStore`
      as discussed in #3324 with the goal of using this interface for the 
backend
      configuration code, while `RealmConfig` becomes the corresponding frontend
      interface.
    
    * Fix `ServiceProducers.realmConfig()` to make a `RealmConfigImpl` directly 
from
      its dependencies (not from `CallContext`) to avoid cycles in CDI.
---
 .../relational/jdbc/JdbcMetaStoreManagerFactory.java          | 11 +++--------
 .../apache/polaris/admintool/config/AdminToolProducers.java   | 10 ++++++++++
 .../org/apache/polaris/service/config/ServiceProducers.java   |  6 ++++--
 3 files changed, 17 insertions(+), 10 deletions(-)

diff --git 
a/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcMetaStoreManagerFactory.java
 
b/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcMetaStoreManagerFactory.java
index e46cc7277..690eb5ae3 100644
--- 
a/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcMetaStoreManagerFactory.java
+++ 
b/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcMetaStoreManagerFactory.java
@@ -33,7 +33,6 @@ import javax.sql.DataSource;
 import org.apache.polaris.core.PolarisCallContext;
 import org.apache.polaris.core.PolarisDiagnostics;
 import org.apache.polaris.core.config.BehaviorChangeConfiguration;
-import org.apache.polaris.core.config.PolarisConfigurationStore;
 import org.apache.polaris.core.config.RealmConfig;
 import org.apache.polaris.core.context.RealmContext;
 import org.apache.polaris.core.entity.PrincipalEntity;
@@ -75,7 +74,7 @@ public class JdbcMetaStoreManagerFactory implements 
MetaStoreManagerFactory {
   @Inject PolarisStorageIntegrationProvider storageIntegrationProvider;
   @Inject Instance<DataSource> dataSource;
   @Inject RelationalJdbcConfiguration relationalJdbcConfiguration;
-  @Inject PolarisConfigurationStore configurationStore;
+  @Inject RealmConfig realmConfig;
 
   protected JdbcMetaStoreManagerFactory() {}
 
@@ -103,8 +102,7 @@ public class JdbcMetaStoreManagerFactory implements 
MetaStoreManagerFactory {
     final int schemaVersion =
         JdbcBasePersistenceImpl.loadSchemaVersion(
             datasourceOperations,
-            configurationStore.getConfiguration(
-                realmContext, 
BehaviorChangeConfiguration.SCHEMA_VERSION_FALL_BACK_ON_DNE));
+            
realmConfig.getConfig(BehaviorChangeConfiguration.SCHEMA_VERSION_FALL_BACK_ON_DNE));
     sessionSupplierMap.put(
         realmId,
         () ->
@@ -155,10 +153,7 @@ public class JdbcMetaStoreManagerFactory implements 
MetaStoreManagerFactory {
       if (!metaStoreManagerMap.containsKey(realm)) {
         DatasourceOperations datasourceOperations = getDatasourceOperations();
         int currentSchemaVersion =
-            JdbcBasePersistenceImpl.loadSchemaVersion(
-                datasourceOperations,
-                configurationStore.getConfiguration(
-                    realmContext, 
BehaviorChangeConfiguration.SCHEMA_VERSION_FALL_BACK_ON_DNE));
+            JdbcBasePersistenceImpl.loadSchemaVersion(datasourceOperations, 
true);
         int requestedSchemaVersion = 
JdbcBootstrapUtils.getRequestedSchemaVersion(bootstrapOptions);
         int effectiveSchemaVersion =
             JdbcBootstrapUtils.getRealmBootstrapSchemaVersion(
diff --git 
a/runtime/admin/src/main/java/org/apache/polaris/admintool/config/AdminToolProducers.java
 
b/runtime/admin/src/main/java/org/apache/polaris/admintool/config/AdminToolProducers.java
index 28a43a6c3..236325a58 100644
--- 
a/runtime/admin/src/main/java/org/apache/polaris/admintool/config/AdminToolProducers.java
+++ 
b/runtime/admin/src/main/java/org/apache/polaris/admintool/config/AdminToolProducers.java
@@ -25,9 +25,12 @@ import jakarta.enterprise.inject.Any;
 import jakarta.enterprise.inject.Instance;
 import jakarta.enterprise.inject.Produces;
 import java.time.Clock;
+import java.util.UUID;
 import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
 import org.apache.polaris.core.PolarisDiagnostics;
 import org.apache.polaris.core.config.PolarisConfigurationStore;
+import org.apache.polaris.core.config.RealmConfig;
+import org.apache.polaris.core.config.RealmConfigImpl;
 import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
 import org.apache.polaris.core.storage.PolarisStorageConfigurationInfo;
 import org.apache.polaris.core.storage.PolarisStorageIntegration;
@@ -75,4 +78,11 @@ public class AdminToolProducers {
     // A configuration store is not required when running the admin tool.
     return new PolarisConfigurationStore() {};
   }
+
+  @Produces
+  public RealmConfig dummyRealmConfig(PolarisConfigurationStore 
configurationStore) {
+    // Use a random realm ID for RealmConfig since the 
PolarisConfigurationStore is empty anyway
+    String absentId = UUID.randomUUID().toString();
+    return new RealmConfigImpl(configurationStore, () -> absentId);
+  }
 }
diff --git 
a/runtime/service/src/main/java/org/apache/polaris/service/config/ServiceProducers.java
 
b/runtime/service/src/main/java/org/apache/polaris/service/config/ServiceProducers.java
index 840b3fb80..121eb382c 100644
--- 
a/runtime/service/src/main/java/org/apache/polaris/service/config/ServiceProducers.java
+++ 
b/runtime/service/src/main/java/org/apache/polaris/service/config/ServiceProducers.java
@@ -40,6 +40,7 @@ import org.apache.polaris.core.auth.PolarisAuthorizer;
 import org.apache.polaris.core.auth.PolarisAuthorizerFactory;
 import org.apache.polaris.core.config.PolarisConfigurationStore;
 import org.apache.polaris.core.config.RealmConfig;
+import org.apache.polaris.core.config.RealmConfigImpl;
 import org.apache.polaris.core.context.CallContext;
 import org.apache.polaris.core.context.RealmContext;
 import org.apache.polaris.core.credentials.PolarisCredentialManager;
@@ -130,8 +131,9 @@ public class ServiceProducers {
 
   @Produces
   @RequestScoped
-  public RealmConfig realmConfig(CallContext callContext) {
-    return callContext.getRealmConfig();
+  public RealmConfig realmConfig(
+      RealmContext realmContext, PolarisConfigurationStore configurationStore) 
{
+    return new RealmConfigImpl(configurationStore, realmContext);
   }
 
   @Produces

Reply via email to