From 916d0c48cd7aff8116ef262c22c019d0c2c48bad Mon Sep 17 00:00:00 2001 From: Dmitri Bourlatchkov Date: Thu, 13 Mar 2025 23:20:18 -0400 Subject: [PATCH] Generify MetaStoreManagerFactory.getOrCreateSessionSupplier No functional change. * Adjust the type parameter to the Persistence supplier to cover all possible implementation types. * Remove unnecessary fields from IcebergCatalogAdapter * Adjust types at call sites of `getOrCreateSessionSupplier`. --- .../core/persistence/MetaStoreManagerFactory.java | 3 +-- .../service/quarkus/config/QuarkusProducers.java | 6 +++--- .../quarkus/task/TableCleanupTaskHandlerTest.java | 10 +++++----- .../quarkus/test/PolarisIntegrationTestFixture.java | 4 ++-- .../polaris/service/catalog/IcebergCatalogAdapter.java | 10 ++-------- .../service/context/DefaultCallContextResolver.java | 4 ++-- 6 files changed, 15 insertions(+), 22 deletions(-) diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java index b398cea914..cb2523891f 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java @@ -25,7 +25,6 @@ import org.apache.polaris.core.persistence.cache.EntityCache; import org.apache.polaris.core.persistence.dao.entity.BaseResult; import org.apache.polaris.core.persistence.dao.entity.PrincipalSecretsResult; -import org.apache.polaris.core.persistence.transactional.TransactionalPersistence; import org.apache.polaris.core.storage.cache.StorageCredentialCache; /** Configuration interface for configuring the {@link PolarisMetaStoreManager}. */ @@ -33,7 +32,7 @@ public interface MetaStoreManagerFactory { PolarisMetaStoreManager getOrCreateMetaStoreManager(RealmContext realmContext); - Supplier getOrCreateSessionSupplier(RealmContext realmContext); + Supplier getOrCreateSessionSupplier(RealmContext realmContext); StorageCredentialCache getOrCreateStorageCredentialCache(RealmContext realmContext); diff --git a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusProducers.java b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusProducers.java index c017c61354..16b7439791 100644 --- a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusProducers.java +++ b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/config/QuarkusProducers.java @@ -41,10 +41,10 @@ import org.apache.polaris.core.config.PolarisConfigurationStore; import org.apache.polaris.core.context.CallContext; import org.apache.polaris.core.context.RealmContext; +import org.apache.polaris.core.persistence.BasePersistence; import org.apache.polaris.core.persistence.MetaStoreManagerFactory; import org.apache.polaris.core.persistence.PolarisEntityManager; import org.apache.polaris.core.persistence.PolarisMetaStoreManager; -import org.apache.polaris.core.persistence.transactional.TransactionalPersistence; import org.apache.polaris.core.storage.cache.StorageCredentialCache; import org.apache.polaris.service.auth.ActiveRolesProvider; import org.apache.polaris.service.auth.Authenticator; @@ -113,7 +113,7 @@ public PolarisCallContext polarisCallContext( PolarisConfigurationStore configurationStore, MetaStoreManagerFactory metaStoreManagerFactory, Clock clock) { - TransactionalPersistence metaStoreSession = + BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSessionSupplier(realmContext).get(); return new PolarisCallContext(metaStoreSession, diagServices, configurationStore, clock); } @@ -220,7 +220,7 @@ public PolarisMetaStoreManager polarisMetaStoreManager( @Produces @RequestScoped - public TransactionalPersistence polarisMetaStoreSession( + public BasePersistence polarisMetaStoreSession( RealmContext realmContext, MetaStoreManagerFactory metaStoreManagerFactory) { return metaStoreManagerFactory.getOrCreateSessionSupplier(realmContext).get(); } diff --git a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/task/TableCleanupTaskHandlerTest.java b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/task/TableCleanupTaskHandlerTest.java index ad2d0f055c..f2a89c3448 100644 --- a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/task/TableCleanupTaskHandlerTest.java +++ b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/task/TableCleanupTaskHandlerTest.java @@ -48,9 +48,9 @@ import org.apache.polaris.core.entity.PolarisTaskConstants; import org.apache.polaris.core.entity.TableLikeEntity; import org.apache.polaris.core.entity.TaskEntity; +import org.apache.polaris.core.persistence.BasePersistence; import org.apache.polaris.core.persistence.MetaStoreManagerFactory; import org.apache.polaris.core.persistence.PolarisResolvedPathWrapper; -import org.apache.polaris.core.persistence.transactional.TransactionalPersistence; import org.apache.polaris.core.storage.PolarisStorageActions; import org.apache.polaris.service.catalog.io.FileIOFactory; import org.apache.polaris.service.task.ManifestFileCleanupTaskHandler; @@ -176,7 +176,7 @@ public void testTableCleanup() throws IOException { @Test public void testTableCleanupHandlesAlreadyDeletedMetadata() throws IOException { - TransactionalPersistence metaStoreSession = + BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSessionSupplier(realmContext).get(); FileIO fileIO = new InMemoryFileIO() { @@ -230,7 +230,7 @@ public void close() { @Test public void testTableCleanupDuplicatesTasksIfFileStillExists() throws IOException { - TransactionalPersistence metaStoreSession = + BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSessionSupplier(realmContext).get(); FileIO fileIO = new InMemoryFileIO() { @@ -346,7 +346,7 @@ public void close() { @Test public void testTableCleanupMultipleSnapshots() throws IOException { - TransactionalPersistence metaStoreSession = + BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSessionSupplier(realmContext).get(); FileIO fileIO = new InMemoryFileIO(); TableIdentifier tableIdentifier = TableIdentifier.of(Namespace.of("db1", "schema1"), "table1"); @@ -491,7 +491,7 @@ public void testTableCleanupMultipleSnapshots() throws IOException { @Test public void testTableCleanupMultipleMetadata() throws IOException { - TransactionalPersistence metaStoreSession = + BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSessionSupplier(realmContext).get(); FileIO fileIO = new InMemoryFileIO(); TableIdentifier tableIdentifier = TableIdentifier.of(Namespace.of("db1", "schema1"), "table1"); diff --git a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/test/PolarisIntegrationTestFixture.java b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/test/PolarisIntegrationTestFixture.java index 5b0f323502..a550c98d1b 100644 --- a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/test/PolarisIntegrationTestFixture.java +++ b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/test/PolarisIntegrationTestFixture.java @@ -42,10 +42,10 @@ import org.apache.polaris.core.entity.PolarisEntitySubType; import org.apache.polaris.core.entity.PolarisEntityType; import org.apache.polaris.core.entity.PolarisPrincipalSecrets; +import org.apache.polaris.core.persistence.BasePersistence; import org.apache.polaris.core.persistence.PolarisMetaStoreManager; import org.apache.polaris.core.persistence.bootstrap.RootCredentialsSet; import org.apache.polaris.core.persistence.dao.entity.EntityResult; -import org.apache.polaris.core.persistence.transactional.TransactionalPersistence; import org.apache.polaris.service.persistence.InMemoryPolarisMetaStoreManagerFactory; import org.apache.polaris.service.quarkus.auth.TokenUtils; import org.junit.jupiter.api.TestInfo; @@ -107,7 +107,7 @@ private PolarisPrincipalSecrets fetchAdminSecrets() { helper.realmContextResolver.resolveRealmContext( baseUri.toString(), "GET", "/", Map.of(REALM_PROPERTY_KEY, realm)); - TransactionalPersistence metaStoreSession = + BasePersistence metaStoreSession = helper.metaStoreManagerFactory.getOrCreateSessionSupplier(realmContext).get(); PolarisCallContext polarisContext = new PolarisCallContext( diff --git a/service/common/src/main/java/org/apache/polaris/service/catalog/IcebergCatalogAdapter.java b/service/common/src/main/java/org/apache/polaris/service/catalog/IcebergCatalogAdapter.java index eb199f0e97..0ce0c2db7b 100644 --- a/service/common/src/main/java/org/apache/polaris/service/catalog/IcebergCatalogAdapter.java +++ b/service/common/src/main/java/org/apache/polaris/service/catalog/IcebergCatalogAdapter.java @@ -62,12 +62,12 @@ import org.apache.polaris.core.context.CallContext; import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.core.entity.PolarisEntity; +import org.apache.polaris.core.persistence.BasePersistence; import org.apache.polaris.core.persistence.PolarisEntityManager; import org.apache.polaris.core.persistence.PolarisMetaStoreManager; import org.apache.polaris.core.persistence.ResolvedPolarisEntity; import org.apache.polaris.core.persistence.resolver.Resolver; import org.apache.polaris.core.persistence.resolver.ResolverStatus; -import org.apache.polaris.core.persistence.transactional.TransactionalPersistence; import org.apache.polaris.service.catalog.api.IcebergRestCatalogApiService; import org.apache.polaris.service.catalog.api.IcebergRestConfigurationApiService; import org.apache.polaris.service.context.CallContextCatalogFactory; @@ -125,9 +125,6 @@ public class IcebergCatalogAdapter private final CallContextCatalogFactory catalogFactory; private final PolarisEntityManager entityManager; private final PolarisMetaStoreManager metaStoreManager; - private final TransactionalPersistence session; - private final PolarisConfigurationStore configurationStore; - private final PolarisDiagnostics diagnostics; private final PolarisAuthorizer polarisAuthorizer; private final IcebergCatalogPrefixParser prefixParser; @@ -138,7 +135,7 @@ public IcebergCatalogAdapter( CallContextCatalogFactory catalogFactory, PolarisEntityManager entityManager, PolarisMetaStoreManager metaStoreManager, - TransactionalPersistence session, + BasePersistence session, PolarisConfigurationStore configurationStore, PolarisDiagnostics diagnostics, PolarisAuthorizer polarisAuthorizer, @@ -148,9 +145,6 @@ public IcebergCatalogAdapter( this.catalogFactory = catalogFactory; this.entityManager = entityManager; this.metaStoreManager = metaStoreManager; - this.session = session; - this.configurationStore = configurationStore; - this.diagnostics = diagnostics; this.polarisAuthorizer = polarisAuthorizer; this.prefixParser = prefixParser; diff --git a/service/common/src/main/java/org/apache/polaris/service/context/DefaultCallContextResolver.java b/service/common/src/main/java/org/apache/polaris/service/context/DefaultCallContextResolver.java index 90f381d759..8c5ae391d8 100644 --- a/service/common/src/main/java/org/apache/polaris/service/context/DefaultCallContextResolver.java +++ b/service/common/src/main/java/org/apache/polaris/service/context/DefaultCallContextResolver.java @@ -28,8 +28,8 @@ import org.apache.polaris.core.config.PolarisConfigurationStore; import org.apache.polaris.core.context.CallContext; import org.apache.polaris.core.context.RealmContext; +import org.apache.polaris.core.persistence.BasePersistence; import org.apache.polaris.core.persistence.MetaStoreManagerFactory; -import org.apache.polaris.core.persistence.transactional.TransactionalPersistence; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -64,7 +64,7 @@ public CallContext resolveCallContext( // pushed down for the metaStoreManagerFactory to inject Transactional-DB specific things // (including the MetaStoreSession" into the PolarisCallContext. The non-transactional // factories would then inject something else instead if needed. - TransactionalPersistence metaStoreSession = + BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSessionSupplier(realmContext).get(); PolarisCallContext polarisContext = new PolarisCallContext(metaStoreSession, diagnostics, configurationStore, clock);