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