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 e46cc7277e..690eb5ae3f 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 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; @Inject RelationalJdbcConfiguration relationalJdbcConfiguration; - @Inject PolarisConfigurationStore configurationStore; + @Inject RealmConfig realmConfig; protected JdbcMetaStoreManagerFactory() {} @@ -103,8 +102,7 @@ private void initializeForRealm( 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 synchronized Map bootstrapRealms( 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 28a43a6c37..236325a588 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.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 PolarisConfigurationStore configurationStore() { // 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 840b3fb80a..121eb382c1 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.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 CallContext polarisCallContext( @Produces @RequestScoped - public RealmConfig realmConfig(CallContext callContext) { - return callContext.getRealmConfig(); + public RealmConfig realmConfig( + RealmContext realmContext, PolarisConfigurationStore configurationStore) { + return new RealmConfigImpl(configurationStore, realmContext); } @Produces