diff --git a/persistence/eclipselink/src/test/java/org/apache/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkMetaStoreManagerTest.java b/persistence/eclipselink/src/test/java/org/apache/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkMetaStoreManagerTest.java index aa3a6a3d55..fd04cd4df1 100644 --- a/persistence/eclipselink/src/test/java/org/apache/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkMetaStoreManagerTest.java +++ b/persistence/eclipselink/src/test/java/org/apache/polaris/extension/persistence/impl/eclipselink/PolarisEclipseLinkMetaStoreManagerTest.java @@ -88,8 +88,8 @@ protected PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() { new PolarisEclipseLinkMetaStoreSessionImpl( store, Mockito.mock(), realmContext, null, "polaris", RANDOM_SECRETS); TransactionalMetaStoreManagerImpl metaStoreManager = - new TransactionalMetaStoreManagerImpl(clock); - PolarisCallContext callCtx = new PolarisCallContext(realmContext, session, diagServices); + new TransactionalMetaStoreManagerImpl(clock, () -> session); + PolarisCallContext callCtx = new PolarisCallContext(realmContext, diagServices); return new PolarisTestMetaStoreManager(metaStoreManager, callCtx); } 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 c8f05e3b33..7af076f5fa 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 @@ -86,8 +86,9 @@ protected PrincipalSecretsGenerator secretsGenerator( } } - protected PolarisMetaStoreManager createNewMetaStoreManager() { - return new AtomicOperationMetaStoreManager(clock); + protected PolarisMetaStoreManager createNewMetaStoreManager( + Supplier metaStoreSupplier) { + return new AtomicOperationMetaStoreManager(clock, metaStoreSupplier); } private void initializeForRealm( @@ -99,17 +100,17 @@ private void initializeForRealm( String realmId = realmContext.getRealmIdentifier(); // determine schemaVersion once per realm final int schemaVersion = JdbcBasePersistenceImpl.loadSchemaVersion(datasourceOperations); - sessionSupplierMap.put( - realmId, + Supplier metaStoreSupplier = () -> new JdbcBasePersistenceImpl( datasourceOperations, secretsGenerator(realmId, rootCredentialsSet), storageIntegrationProvider, realmId, - schemaVersion)); + schemaVersion); + sessionSupplierMap.put(realmId, metaStoreSupplier); - PolarisMetaStoreManager metaStoreManager = createNewMetaStoreManager(); + PolarisMetaStoreManager metaStoreManager = createNewMetaStoreManager(metaStoreSupplier); metaStoreManagerMap.put(realmId, metaStoreManager); } @@ -175,9 +176,8 @@ public Map purgeRealms(Iterable realms) { for (String realm : realms) { RealmContext realmContext = () -> realm; PolarisMetaStoreManager metaStoreManager = getOrCreateMetaStoreManager(realmContext); - BasePersistence session = getOrCreateSession(realmContext); - PolarisCallContext callContext = new PolarisCallContext(realmContext, session, diagnostics); + PolarisCallContext callContext = new PolarisCallContext(realmContext, diagnostics); BaseResult result = metaStoreManager.purge(callContext); results.put(realm, result); @@ -199,16 +199,6 @@ public synchronized PolarisMetaStoreManager getOrCreateMetaStoreManager( return metaStoreManagerMap.get(realmContext.getRealmIdentifier()); } - @Override - public synchronized BasePersistence getOrCreateSession(RealmContext realmContext) { - if (!sessionSupplierMap.containsKey(realmContext.getRealmIdentifier())) { - DatasourceOperations datasourceOperations = getDatasourceOperations(); - initializeForRealm(datasourceOperations, realmContext, null); - } - checkPolarisServiceBootstrappedForRealm(realmContext); - return sessionSupplierMap.get(realmContext.getRealmIdentifier()).get(); - } - @Override public synchronized EntityCache getOrCreateEntityCache( RealmContext realmContext, RealmConfig realmConfig) { @@ -232,9 +222,7 @@ private PrincipalSecretsResult bootstrapServiceAndCreatePolarisPrincipalForRealm // CallContext may not have been resolved yet. PolarisMetaStoreManager metaStoreManager = metaStoreManagerMap.get(realmContext.getRealmIdentifier()); - BasePersistence metaStore = sessionSupplierMap.get(realmContext.getRealmIdentifier()).get(); - PolarisCallContext polarisContext = - new PolarisCallContext(realmContext, metaStore, diagnostics); + PolarisCallContext polarisContext = new PolarisCallContext(realmContext, diagnostics); Optional preliminaryRootPrincipal = metaStoreManager.findRootPrincipal(polarisContext); @@ -267,9 +255,7 @@ private PrincipalSecretsResult bootstrapServiceAndCreatePolarisPrincipalForRealm private void checkPolarisServiceBootstrappedForRealm(RealmContext realmContext) { PolarisMetaStoreManager metaStoreManager = metaStoreManagerMap.get(realmContext.getRealmIdentifier()); - BasePersistence metaStore = sessionSupplierMap.get(realmContext.getRealmIdentifier()).get(); - PolarisCallContext polarisContext = - new PolarisCallContext(realmContext, metaStore, diagnostics); + PolarisCallContext polarisContext = new PolarisCallContext(realmContext, diagnostics); Optional rootPrincipal = metaStoreManager.findRootPrincipal(polarisContext); if (rootPrincipal.isEmpty()) { diff --git a/persistence/relational-jdbc/src/test/java/org/apache/polaris/persistence/relational/jdbc/AtomicMetastoreManagerWithJdbcBasePersistenceImplTest.java b/persistence/relational-jdbc/src/test/java/org/apache/polaris/persistence/relational/jdbc/AtomicMetastoreManagerWithJdbcBasePersistenceImplTest.java index c389709943..70d7af78e5 100644 --- a/persistence/relational-jdbc/src/test/java/org/apache/polaris/persistence/relational/jdbc/AtomicMetastoreManagerWithJdbcBasePersistenceImplTest.java +++ b/persistence/relational-jdbc/src/test/java/org/apache/polaris/persistence/relational/jdbc/AtomicMetastoreManagerWithJdbcBasePersistenceImplTest.java @@ -62,16 +62,16 @@ protected PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() { } RealmContext realmContext = () -> "REALM"; - JdbcBasePersistenceImpl basePersistence = + JdbcBasePersistenceImpl metaStore = new JdbcBasePersistenceImpl( datasourceOperations, RANDOM_SECRETS, Mockito.mock(), realmContext.getRealmIdentifier(), schemaVersion); - AtomicOperationMetaStoreManager metaStoreManager = new AtomicOperationMetaStoreManager(clock); - PolarisCallContext callCtx = - new PolarisCallContext(realmContext, basePersistence, diagServices); + AtomicOperationMetaStoreManager metaStoreManager = + new AtomicOperationMetaStoreManager(clock, () -> metaStore); + PolarisCallContext callCtx = new PolarisCallContext(realmContext, diagServices); return new PolarisTestMetaStoreManager(metaStoreManager, callCtx); } diff --git a/polaris-core/src/main/java/org/apache/polaris/core/PolarisCallContext.java b/polaris-core/src/main/java/org/apache/polaris/core/PolarisCallContext.java index 8878b9ef6a..49afd78837 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/PolarisCallContext.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/PolarisCallContext.java @@ -24,7 +24,6 @@ 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.persistence.BasePersistence; /** * The Call context is allocated each time a new REST request is processed. It contains instances of @@ -32,8 +31,6 @@ */ public class PolarisCallContext implements CallContext { - // meta store which is used to persist Polaris entity metadata - private final BasePersistence metaStore; private final PolarisDiagnostics diagServices; private final PolarisConfigurationStore configurationStore; private final RealmContext realmContext; @@ -41,25 +38,17 @@ public class PolarisCallContext implements CallContext { public PolarisCallContext( @Nonnull RealmContext realmContext, - @Nonnull BasePersistence metaStore, @Nonnull PolarisDiagnostics diagServices, @Nonnull PolarisConfigurationStore configurationStore) { this.realmContext = realmContext; - this.metaStore = metaStore; this.diagServices = diagServices; this.configurationStore = configurationStore; this.realmConfig = new RealmConfigImpl(this.configurationStore, this.realmContext); } public PolarisCallContext( - @Nonnull RealmContext realmContext, - @Nonnull BasePersistence metaStore, - @Nonnull PolarisDiagnostics diagServices) { - this(realmContext, metaStore, diagServices, new PolarisConfigurationStore() {}); - } - - public BasePersistence getMetaStore() { - return metaStore; + @Nonnull RealmContext realmContext, @Nonnull PolarisDiagnostics diagServices) { + this(realmContext, diagServices, new PolarisConfigurationStore() {}); } public PolarisDiagnostics getDiagServices() { @@ -90,7 +79,6 @@ public PolarisCallContext copy() { // copy of the RealmContext to ensure the access during the task executor. String realmId = this.realmContext.getRealmIdentifier(); RealmContext realmContext = () -> realmId; - return new PolarisCallContext( - realmContext, this.metaStore, this.diagServices, this.configurationStore); + return new PolarisCallContext(realmContext, this.diagServices, this.configurationStore); } } diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java index 0a09b20ea3..c53b68f521 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java @@ -32,6 +32,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Function; import java.util.function.Predicate; +import java.util.function.Supplier; import java.util.stream.Collectors; import org.apache.polaris.core.PolarisCallContext; import org.apache.polaris.core.entity.AsyncTaskType; @@ -81,13 +82,14 @@ * Implementation of PolarisMetaStoreManager which only relies on one-shot atomic operations into a * BasePersistence implementation without any kind of open-ended multi-statement transactions. */ -public class AtomicOperationMetaStoreManager extends BaseMetaStoreManager { +public class AtomicOperationMetaStoreManager extends BaseMetaStoreManager { private static final Logger LOGGER = LoggerFactory.getLogger(AtomicOperationMetaStoreManager.class); private final Clock clock; - public AtomicOperationMetaStoreManager(Clock clock) { + public AtomicOperationMetaStoreManager(Clock clock, Supplier metaStoreSupplier) { + super(metaStoreSupplier); this.clock = clock; } @@ -427,8 +429,7 @@ private void revokeGrantRecord( @Nonnull PolarisCallContext callCtx, @Nonnull PolarisBaseEntity catalog, @Nonnull List principalRoles) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // validate input callCtx.getDiagServices().checkNotNull(catalog, "unexpected_null_catalog"); @@ -571,8 +572,7 @@ private void revokeGrantRecord( /** {@inheritDoc} */ @Override public @Nonnull BaseResult bootstrapPolarisService(@Nonnull PolarisCallContext callCtx) { - // get meta store we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // Create a root container entity that can represent the securable for any top-level grants. PolarisBaseEntity rootContainer = @@ -639,8 +639,7 @@ private void revokeGrantRecord( @Override public @Nonnull BaseResult purge(@Nonnull PolarisCallContext callCtx) { - // get meta store we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); LOGGER.warn("Deleting all metadata in the metastore..."); ms.deleteAll(callCtx); @@ -658,7 +657,7 @@ private void revokeGrantRecord( @Nonnull PolarisEntityType entityType, @Nonnull PolarisEntitySubType entitySubType, @Nonnull String name) { - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // now looking the entity by name // TODO: Clean up shared logic for catalogId/parentId @@ -698,8 +697,7 @@ private void revokeGrantRecord( @Nonnull PolarisEntityType entityType, @Nonnull PolarisEntitySubType entitySubType, @Nonnull PageToken pageToken) { - // get meta store we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // return list of active entities // TODO: Clean up shared logic for catalogId/parentId @@ -732,8 +730,7 @@ private void revokeGrantRecord( @Override public @Nonnull CreatePrincipalResult createPrincipal( @Nonnull PolarisCallContext callCtx, @Nonnull PolarisBaseEntity principal) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // validate input callCtx.getDiagServices().checkNotNull(principal, "unexpected_null_principal"); @@ -834,8 +831,7 @@ private void revokeGrantRecord( @Override public @Nonnull PrincipalSecretsResult loadPrincipalSecrets( @Nonnull PolarisCallContext callCtx, @Nonnull String clientId) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); PolarisPrincipalSecrets secrets = ((IntegrationPersistence) ms).loadPrincipalSecrets(callCtx, clientId); @@ -853,8 +849,7 @@ private void revokeGrantRecord( long principalId, boolean reset, @Nonnull String oldSecretHash) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // if not found, the principal must have been dropped EntityResult loadEntityResult = @@ -910,8 +905,7 @@ private void revokeGrantRecord( @Nonnull PolarisCallContext callCtx, @Nullable List catalogPath, @Nonnull PolarisBaseEntity entity) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // entity cannot be null callCtx.getDiagServices().checkNotNull(entity, "unexpected_null_entity"); @@ -932,8 +926,7 @@ private void revokeGrantRecord( @Nonnull PolarisCallContext callCtx, @Nullable List catalogPath, @Nonnull List entities) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); List createdEntities = new ArrayList<>(entities.size()); for (PolarisBaseEntity entity : entities) { PolarisBaseEntity entityToCreate = @@ -967,8 +960,7 @@ private void revokeGrantRecord( @Nonnull PolarisCallContext callCtx, @Nullable List catalogPath, @Nonnull PolarisBaseEntity entity) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // entity cannot be null callCtx.getDiagServices().checkNotNull(entity, "unexpected_null_entity"); @@ -991,8 +983,7 @@ private void revokeGrantRecord( @Override public @Nonnull EntitiesResult updateEntitiesPropertiesIfNotChanged( @Nonnull PolarisCallContext callCtx, @Nonnull List entities) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // ensure that the entities list is not null callCtx.getDiagServices().checkNotNull(entities, "unexpected_null_entities"); @@ -1032,8 +1023,7 @@ private void revokeGrantRecord( @Nonnull PolarisBaseEntity entityToRename, @Nullable List newCatalogPath, @Nonnull PolarisEntity renamedEntity) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // entity and new name cannot be null callCtx.getDiagServices().checkNotNull(entityToRename, "unexpected_null_entityToRename"); @@ -1132,8 +1122,7 @@ private void revokeGrantRecord( @Nonnull PolarisBaseEntity entityToDrop, @Nullable Map cleanupProperties, boolean cleanup) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // entity cannot be null callCtx.getDiagServices().checkNotNull(entityToDrop, "unexpected_null_entity"); @@ -1266,8 +1255,7 @@ private void revokeGrantRecord( @Nullable PolarisEntityCore catalog, @Nonnull PolarisEntityCore role, @Nonnull PolarisEntityCore grantee) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // the usage privilege to grant PolarisPrivilege usagePriv = @@ -1291,8 +1279,7 @@ private void revokeGrantRecord( @Nullable PolarisEntityCore catalog, @Nonnull PolarisEntityCore role, @Nonnull PolarisEntityCore grantee) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // the usage privilege to revoke PolarisPrivilege usagePriv = @@ -1329,8 +1316,7 @@ private void revokeGrantRecord( @Nullable List catalogPath, @Nonnull PolarisEntityCore securable, @Nonnull PolarisPrivilege privilege) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // grant specified privilege on this securable to this role and return the grant PolarisGrantRecord grantRecord = @@ -1346,8 +1332,7 @@ private void revokeGrantRecord( @Nullable List catalogPath, @Nonnull PolarisEntityCore securable, @Nonnull PolarisPrivilege privilege) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // lookup the grants records to find this grant PolarisGrantRecord grantRecord = @@ -1380,8 +1365,7 @@ private void revokeGrantRecord( public @Nonnull LoadGrantsResult loadGrantsOnSecurable( @Nonnull PolarisCallContext callCtx, long securableCatalogId, long securableId) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // TODO: Consider whether it's necessary to look up both ends of the grant records atomically // or if it's actually safe as two independent lookups. @@ -1426,8 +1410,7 @@ private void revokeGrantRecord( public @Nonnull LoadGrantsResult loadGrantsToGrantee( @Nonnull PolarisCallContext callCtx, long granteeCatalogId, long granteeId) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // TODO: Consider whether it's necessary to look up both ends of the grant records atomically // or if it's actually safe as two independent lookups. @@ -1466,8 +1449,7 @@ private void revokeGrantRecord( @Override public @Nonnull ChangeTrackingResult loadEntitiesChangeTracking( @Nonnull PolarisCallContext callCtx, @Nonnull List entityIds) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); List changeTracking = ms.lookupEntityVersions(callCtx, entityIds); @@ -1481,8 +1463,7 @@ private void revokeGrantRecord( long entityCatalogId, long entityId, @Nonnull PolarisEntityType entityType) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // this is an easy one PolarisBaseEntity entity = @@ -1495,7 +1476,7 @@ private void revokeGrantRecord( @Override public @Nonnull EntitiesResult loadTasks( @Nonnull PolarisCallContext callCtx, String executorId, PageToken pageToken) { - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // find all available tasks Page availableTasks = @@ -1580,7 +1561,7 @@ private void revokeGrantRecord( @Nonnull Set allowedWriteLocations) { // get meta store session we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); callCtx .getDiagServices() .check( @@ -1649,8 +1630,7 @@ public Map getInternalPropertyMap(@Nonnull PolarisBaseEntity ent long entityCatalogId, long entityId, PolarisEntityType entityType) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // load that entity PolarisBaseEntity entity = @@ -1686,8 +1666,7 @@ public Map getInternalPropertyMap(@Nonnull PolarisBaseEntity ent long parentId, @Nonnull PolarisEntityType entityType, @Nonnull String entityName) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // load that entity PolarisBaseEntity entity = @@ -1764,8 +1743,7 @@ public Map getInternalPropertyMap(@Nonnull PolarisBaseEntity ent @Nonnull PolarisEntityType entityType, long entityCatalogId, long entityId) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); // load version information PolarisChangeTrackingVersions entityVersions = @@ -1816,9 +1794,9 @@ public Map getInternalPropertyMap(@Nonnull PolarisBaseEntity ent @Override public Optional> hasOverlappingSiblings( - @Nonnull PolarisCallContext callContext, T entity) { - BasePersistence ms = callContext.getMetaStore(); - return ms.hasOverlappingSiblings(callContext, entity); + @Nonnull PolarisCallContext callCtx, T entity) { + BasePersistence ms = getMetaStore(); + return ms.hasOverlappingSiblings(callCtx, entity); } @Override @@ -1829,8 +1807,7 @@ Optional> hasOverlappingSiblings( @Nonnull List policyCatalogPath, @Nonnull PolicyEntity policy, Map parameters) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); return this.persistNewPolicyMappingRecord(callCtx, ms, target, policy, parameters); } @@ -1842,8 +1819,7 @@ Optional> hasOverlappingSiblings( @Nonnull PolarisEntityCore target, @Nonnull List policyCatalogPath, @Nonnull PolicyEntity policy) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); PolarisPolicyMappingRecord mappingRecord = ms.lookupPolicyMappingRecord( @@ -1865,8 +1841,7 @@ Optional> hasOverlappingSiblings( @Override public @Nonnull LoadPolicyMappingsResult loadPoliciesOnEntity( @Nonnull PolarisCallContext callCtx, @Nonnull PolarisEntityCore target) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); PolarisBaseEntity entity = ms.lookupEntity(callCtx, target.getCatalogId(), target.getId(), target.getTypeCode()); @@ -1888,8 +1863,7 @@ Optional> hasOverlappingSiblings( @Nonnull PolarisCallContext callCtx, @Nonnull PolarisEntityCore target, @Nonnull PolicyType policyType) { - // get metastore we should be using - BasePersistence ms = callCtx.getMetaStore(); + BasePersistence ms = getMetaStore(); PolarisBaseEntity entity = ms.lookupEntity(callCtx, target.getCatalogId(), target.getId(), target.getTypeCode()); diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java index 9820d8950c..6809b9b8e1 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java @@ -21,8 +21,10 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Suppliers; import jakarta.annotation.Nonnull; import java.util.Map; +import java.util.function.Supplier; import org.apache.polaris.core.PolarisCallContext; import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.entity.PolarisBaseEntity; @@ -33,7 +35,8 @@ import org.apache.polaris.core.storage.PolarisStorageConfigurationInfo; /** Shared basic PolarisMetaStoreManager logic for transactional and non-transactional impls. */ -public abstract class BaseMetaStoreManager implements PolarisMetaStoreManager { +public abstract class BaseMetaStoreManager + implements PolarisMetaStoreManager { /** mapper, allows to serialize/deserialize properties to/from JSON */ private static final ObjectMapper MAPPER = new ObjectMapper(); @@ -53,6 +56,16 @@ public static PolarisStorageConfigurationInfo extractStorageConfiguration( return PolarisStorageConfigurationInfo.deserialize(storageConfigInfoStr); } + private final Supplier metaStoreSupplier; + + public BaseMetaStoreManager(Supplier metaStoreSupplier) { + this.metaStoreSupplier = Suppliers.memoize(metaStoreSupplier::get); + } + + public MS getMetaStore() { + return metaStoreSupplier.get(); + } + /** * Given the internal property as a map of key/value pairs, serialize it to a String * @@ -205,8 +218,7 @@ protected PolarisBaseEntity prepareToPersistNewEntity( /** {@inheritDoc} */ @Override public @Nonnull GenerateEntityIdResult generateNewEntityId(@Nonnull PolarisCallContext callCtx) { - // get meta store we should be using - BasePersistence ms = callCtx.getMetaStore(); + MS ms = getMetaStore(); return new GenerateEntityIdResult(ms.generateNewId(callCtx)); } diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/LocalPolarisMetaStoreManagerFactory.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/LocalPolarisMetaStoreManagerFactory.java index ea247fdfb5..7aa2b41a0c 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/LocalPolarisMetaStoreManagerFactory.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/LocalPolarisMetaStoreManagerFactory.java @@ -88,18 +88,20 @@ protected PrincipalSecretsGenerator secretsGenerator( * Subclasses can override this to inject different implementations of PolarisMetaStoreManager * into the existing realm-based setup flow. */ - protected PolarisMetaStoreManager createNewMetaStoreManager(Clock clock) { - return new TransactionalMetaStoreManagerImpl(clock); + protected PolarisMetaStoreManager createNewMetaStoreManager( + Clock clock, Supplier metaStoreSupplier) { + return new TransactionalMetaStoreManagerImpl(clock, metaStoreSupplier); } private void initializeForRealm( RealmContext realmContext, RootCredentialsSet rootCredentialsSet) { final StoreType backingStore = createBackingStore(diagnostics); - sessionSupplierMap.put( - realmContext.getRealmIdentifier(), - () -> createMetaStoreSession(backingStore, realmContext, rootCredentialsSet, diagnostics)); + Supplier transactionalPersistenceSupplier = + () -> createMetaStoreSession(backingStore, realmContext, rootCredentialsSet, diagnostics); + sessionSupplierMap.put(realmContext.getRealmIdentifier(), transactionalPersistenceSupplier); - PolarisMetaStoreManager metaStoreManager = createNewMetaStoreManager(clock); + PolarisMetaStoreManager metaStoreManager = + createNewMetaStoreManager(clock, transactionalPersistenceSupplier); metaStoreManagerMap.put(realmContext.getRealmIdentifier(), metaStoreManager); } @@ -128,9 +130,8 @@ public Map purgeRealms(Iterable realms) { for (String realm : realms) { RealmContext realmContext = () -> realm; PolarisMetaStoreManager metaStoreManager = getOrCreateMetaStoreManager(realmContext); - TransactionalPersistence session = getOrCreateSession(realmContext); - PolarisCallContext callContext = new PolarisCallContext(realmContext, session, diagnostics); + PolarisCallContext callContext = new PolarisCallContext(realmContext, diagnostics); BaseResult result = metaStoreManager.purge(callContext); results.put(realm, result); @@ -152,15 +153,6 @@ public synchronized PolarisMetaStoreManager getOrCreateMetaStoreManager( return metaStoreManagerMap.get(realmContext.getRealmIdentifier()); } - @Override - public synchronized TransactionalPersistence getOrCreateSession(RealmContext realmContext) { - if (!sessionSupplierMap.containsKey(realmContext.getRealmIdentifier())) { - initializeForRealm(realmContext, null); - } - checkPolarisServiceBootstrappedForRealm(realmContext); - return sessionSupplierMap.get(realmContext.getRealmIdentifier()).get(); - } - @Override public synchronized EntityCache getOrCreateEntityCache( RealmContext realmContext, RealmConfig realmConfig) { @@ -184,9 +176,7 @@ private PrincipalSecretsResult bootstrapServiceAndCreatePolarisPrincipalForRealm // CallContext may not have been resolved yet. PolarisMetaStoreManager metaStoreManager = metaStoreManagerMap.get(realmContext.getRealmIdentifier()); - BasePersistence metaStore = sessionSupplierMap.get(realmContext.getRealmIdentifier()).get(); - PolarisCallContext polarisContext = - new PolarisCallContext(realmContext, metaStore, diagnostics); + PolarisCallContext polarisContext = new PolarisCallContext(realmContext, diagnostics); Optional preliminaryRootPrincipal = metaStoreManager.findRootPrincipal(polarisContext); @@ -219,9 +209,7 @@ private PrincipalSecretsResult bootstrapServiceAndCreatePolarisPrincipalForRealm private void checkPolarisServiceBootstrappedForRealm(RealmContext realmContext) { PolarisMetaStoreManager metaStoreManager = metaStoreManagerMap.get(realmContext.getRealmIdentifier()); - BasePersistence metaStore = sessionSupplierMap.get(realmContext.getRealmIdentifier()).get(); - PolarisCallContext polarisContext = - new PolarisCallContext(realmContext, metaStore, diagnostics); + PolarisCallContext polarisContext = new PolarisCallContext(realmContext, diagnostics); Optional rootPrincipal = metaStoreManager.findRootPrincipal(polarisContext); if (rootPrincipal.isEmpty()) { 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 4a32a88591..2458811d12 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 @@ -32,8 +32,6 @@ public interface MetaStoreManagerFactory { PolarisMetaStoreManager getOrCreateMetaStoreManager(RealmContext realmContext); - BasePersistence getOrCreateSession(RealmContext realmContext); - EntityCache getOrCreateEntityCache(RealmContext realmContext, RealmConfig realmConfig); Map bootstrapRealms( diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java index 34e2396227..b8552a2f34 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java @@ -32,6 +32,7 @@ import java.util.Set; import java.util.function.Function; import java.util.function.Predicate; +import java.util.function.Supplier; import java.util.stream.Collectors; import org.apache.polaris.core.PolarisCallContext; import org.apache.polaris.core.entity.AsyncTaskType; @@ -87,13 +88,16 @@ * and retrieve all Polaris metadata */ @SuppressFBWarnings("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE") -public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { +public class TransactionalMetaStoreManagerImpl + extends BaseMetaStoreManager { private static final Logger LOGGER = LoggerFactory.getLogger(TransactionalMetaStoreManagerImpl.class); private final Clock clock; - public TransactionalMetaStoreManagerImpl(Clock clock) { + public TransactionalMetaStoreManagerImpl( + Clock clock, Supplier metaStoreSupplier) { + super(metaStoreSupplier); this.clock = clock; } @@ -610,8 +614,7 @@ private void bootstrapPolarisService( /** {@inheritDoc} */ @Override public @Nonnull BaseResult bootstrapPolarisService(@Nonnull PolarisCallContext callCtx) { - // get meta store we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // run operation in a read/write transaction ms.runActionInTransaction(callCtx, () -> this.bootstrapPolarisService(callCtx, ms)); @@ -622,8 +625,7 @@ private void bootstrapPolarisService( @Override public @Nonnull BaseResult purge(@Nonnull PolarisCallContext callCtx) { - // get meta store we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // run operation in a read/write transaction LOGGER.warn("Deleting all metadata in the metastore..."); @@ -683,8 +685,7 @@ private void bootstrapPolarisService( @Nonnull PolarisEntityType entityType, @Nonnull PolarisEntitySubType entitySubType, @Nonnull String name) { - // get meta store we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // run operation in a read/write transaction return ms.runInReadTransaction( @@ -738,8 +739,7 @@ private void bootstrapPolarisService( @Nonnull PolarisEntityType entityType, @Nonnull PolarisEntitySubType entitySubType, @Nonnull PageToken pageToken) { - // get meta store we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // run operation in a read transaction return ms.runInReadTransaction( @@ -851,8 +851,7 @@ private void bootstrapPolarisService( @Override public @Nonnull CreatePrincipalResult createPrincipal( @Nonnull PolarisCallContext callCtx, @Nonnull PolarisBaseEntity principal) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction return ms.runInTransaction(callCtx, () -> this.createPrincipal(callCtx, ms, principal)); @@ -868,8 +867,7 @@ private void bootstrapPolarisService( @Override public @Nonnull PrincipalSecretsResult loadPrincipalSecrets( @Nonnull PolarisCallContext callCtx, @Nonnull String clientId) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction PolarisPrincipalSecrets secrets = @@ -943,8 +941,7 @@ private void bootstrapPolarisService( long principalId, boolean reset, @Nonnull String oldSecretHash) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction PolarisPrincipalSecrets secrets = @@ -965,8 +962,7 @@ private void bootstrapPolarisService( @Nonnull PolarisCallContext callCtx, @Nonnull PolarisBaseEntity catalog, @Nonnull List principalRoles) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); Map internalProp = getInternalPropertyMap(catalog); String integrationIdentifierOrId = @@ -1049,8 +1045,7 @@ private void bootstrapPolarisService( @Nonnull PolarisCallContext callCtx, @Nullable List catalogPath, @Nonnull PolarisBaseEntity entity) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction return ms.runInTransaction( @@ -1062,8 +1057,7 @@ private void bootstrapPolarisService( @Nonnull PolarisCallContext callCtx, @Nullable List catalogPath, @Nonnull List entities) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction return ms.runInTransaction( @@ -1147,8 +1141,7 @@ private void bootstrapPolarisService( @Nonnull PolarisCallContext callCtx, @Nullable List catalogPath, @Nonnull PolarisBaseEntity entity) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction return ms.runInTransaction( @@ -1192,8 +1185,7 @@ private void bootstrapPolarisService( @Override public @Nonnull EntitiesResult updateEntitiesPropertiesIfNotChanged( @Nonnull PolarisCallContext callCtx, @Nonnull List entities) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction return ms.runInTransaction( @@ -1318,8 +1310,7 @@ private void bootstrapPolarisService( @Nonnull PolarisBaseEntity entityToRename, @Nullable List newCatalogPath, @Nonnull PolarisEntity renamedEntity) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction return ms.runInTransaction( @@ -1467,8 +1458,7 @@ private void bootstrapPolarisService( @Nonnull PolarisBaseEntity entityToDrop, @Nullable Map cleanupProperties, boolean cleanup) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction return ms.runInTransaction( @@ -1605,8 +1595,7 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( @Nullable PolarisEntityCore catalog, @Nonnull PolarisEntityCore role, @Nonnull PolarisEntityCore grantee) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction return ms.runInTransaction( @@ -1667,8 +1656,7 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( @Nullable PolarisEntityCore catalog, @Nonnull PolarisEntityCore role, @Nonnull PolarisEntityCore grantee) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction return ms.runInTransaction( @@ -1710,8 +1698,7 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( @Nullable List catalogPath, @Nonnull PolarisEntityCore securable, @Nonnull PolarisPrivilege privilege) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction return ms.runInTransaction( @@ -1772,8 +1759,7 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( @Nullable List catalogPath, @Nonnull PolarisEntityCore securable, @Nonnull PolarisPrivilege privilege) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read/write transaction return ms.runInTransaction( @@ -1830,8 +1816,7 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( public @Nonnull LoadGrantsResult loadGrantsOnSecurable( @Nonnull PolarisCallContext callCtx, long securableCatalogId, long securableId) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read transaction return ms.runInReadTransaction( @@ -1885,8 +1870,7 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( public @Nonnull LoadGrantsResult loadGrantsToGrantee( @Nonnull PolarisCallContext callCtx, long granteeCatalogId, long granteeId) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read transaction return ms.runInReadTransaction( @@ -1907,8 +1891,7 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( @Override public @Nonnull ChangeTrackingResult loadEntitiesChangeTracking( @Nonnull PolarisCallContext callCtx, @Nonnull List entityIds) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read transaction return ms.runInReadTransaction( @@ -1937,8 +1920,7 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( long entityCatalogId, long entityId, @Nonnull PolarisEntityType entityType) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read transaction return ms.runInReadTransaction( @@ -2016,7 +1998,7 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( @Override public @Nonnull EntitiesResult loadTasks( @Nonnull PolarisCallContext callCtx, String executorId, PageToken pageToken) { - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); return ms.runInTransaction(callCtx, () -> this.loadTasks(callCtx, ms, executorId, pageToken)); } @@ -2032,7 +2014,7 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( @Nonnull Set allowedWriteLocations) { // get meta store session we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); callCtx .getDiagServices() .check( @@ -2130,8 +2112,7 @@ public Map getInternalPropertyMap(@Nonnull PolarisBaseEntity ent long entityCatalogId, long entityId, PolarisEntityType entityType) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read transaction return ms.runInReadTransaction( @@ -2186,8 +2167,7 @@ public Map getInternalPropertyMap(@Nonnull PolarisBaseEntity ent long parentId, @Nonnull PolarisEntityType entityType, @Nonnull String entityName) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read transaction ResolvedEntityResult result = @@ -2309,8 +2289,7 @@ public Map getInternalPropertyMap(@Nonnull PolarisBaseEntity ent @Nonnull PolarisEntityType entityType, long entityCatalogId, long entityId) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); // need to run inside a read transaction return ms.runInReadTransaction( @@ -2330,13 +2309,9 @@ public Map getInternalPropertyMap(@Nonnull PolarisBaseEntity ent @Override public Optional> hasOverlappingSiblings( - @Nonnull PolarisCallContext callContext, T entity) { - TransactionalPersistence ms = ((TransactionalPersistence) callContext.getMetaStore()); - return ms.runInTransaction( - callContext, - () -> { - return callContext.getMetaStore().hasOverlappingSiblings(callContext, entity); - }); + @Nonnull PolarisCallContext callCtx, T entity) { + TransactionalPersistence ms = getMetaStore(); + return ms.runInTransaction(callCtx, () -> ms.hasOverlappingSiblings(callCtx, entity)); } /** {@inheritDoc} */ @@ -2348,8 +2323,7 @@ Optional> hasOverlappingSiblings( @Nonnull List policyCatalogPath, @Nonnull PolicyEntity policy, Map parameters) { - // get metastore we should be using - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); return ms.runInTransaction( callCtx, @@ -2389,7 +2363,7 @@ Optional> hasOverlappingSiblings( @Nonnull PolarisEntityCore target, @Nonnull List policyCatalogPath, @Nonnull PolicyEntity policy) { - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); return ms.runInTransaction( callCtx, () -> @@ -2437,7 +2411,7 @@ private PolicyAttachmentResult doDetachPolicyFromEntity( @Override public @Nonnull LoadPolicyMappingsResult loadPoliciesOnEntity( @Nonnull PolarisCallContext callCtx, @Nonnull PolarisEntityCore target) { - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); return ms.runInReadTransaction(callCtx, () -> this.doLoadPoliciesOnEntity(callCtx, ms, target)); } @@ -2468,7 +2442,7 @@ private LoadPolicyMappingsResult doLoadPoliciesOnEntity( @Nonnull PolarisCallContext callCtx, @Nonnull PolarisEntityCore target, @Nonnull PolicyType policyType) { - TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); + TransactionalPersistence ms = getMetaStore(); return ms.runInReadTransaction( callCtx, () -> this.doLoadPoliciesOnEntityByType(callCtx, ms, target, policyType)); } diff --git a/polaris-core/src/test/java/org/apache/polaris/core/persistence/PolarisTreeMapAtomicOperationMetaStoreManagerTest.java b/polaris-core/src/test/java/org/apache/polaris/core/persistence/PolarisTreeMapAtomicOperationMetaStoreManagerTest.java index ee103ab103..f4ae523109 100644 --- a/polaris-core/src/test/java/org/apache/polaris/core/persistence/PolarisTreeMapAtomicOperationMetaStoreManagerTest.java +++ b/polaris-core/src/test/java/org/apache/polaris/core/persistence/PolarisTreeMapAtomicOperationMetaStoreManagerTest.java @@ -33,12 +33,11 @@ public class PolarisTreeMapAtomicOperationMetaStoreManagerTest public PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() { PolarisDiagnostics diagServices = new PolarisDefaultDiagServiceImpl(); TreeMapMetaStore store = new TreeMapMetaStore(diagServices); - AtomicOperationMetaStoreManager metaStoreManager = new AtomicOperationMetaStoreManager(clock); - PolarisCallContext callCtx = - new PolarisCallContext( - () -> "testRealm", - new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), RANDOM_SECRETS), - diagServices); + TreeMapTransactionalPersistenceImpl metaStore = + new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), RANDOM_SECRETS); + AtomicOperationMetaStoreManager metaStoreManager = + new AtomicOperationMetaStoreManager(clock, () -> metaStore); + PolarisCallContext callCtx = new PolarisCallContext(() -> "testRealm", diagServices); return new PolarisTestMetaStoreManager(metaStoreManager, callCtx); } } diff --git a/polaris-core/src/test/java/org/apache/polaris/core/persistence/PolarisTreeMapMetaStoreManagerTest.java b/polaris-core/src/test/java/org/apache/polaris/core/persistence/PolarisTreeMapMetaStoreManagerTest.java index 41030b0146..cab320d2fb 100644 --- a/polaris-core/src/test/java/org/apache/polaris/core/persistence/PolarisTreeMapMetaStoreManagerTest.java +++ b/polaris-core/src/test/java/org/apache/polaris/core/persistence/PolarisTreeMapMetaStoreManagerTest.java @@ -33,13 +33,11 @@ public class PolarisTreeMapMetaStoreManagerTest extends BasePolarisMetaStoreMana public PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() { PolarisDiagnostics diagServices = new PolarisDefaultDiagServiceImpl(); TreeMapMetaStore store = new TreeMapMetaStore(diagServices); + TreeMapTransactionalPersistenceImpl metaStore = + new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), RANDOM_SECRETS); TransactionalMetaStoreManagerImpl metaStoreManager = - new TransactionalMetaStoreManagerImpl(clock); - PolarisCallContext callCtx = - new PolarisCallContext( - () -> "testRealm", - new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), RANDOM_SECRETS), - diagServices); + new TransactionalMetaStoreManagerImpl(clock, () -> metaStore); + PolarisCallContext callCtx = new PolarisCallContext(() -> "testRealm", diagServices); return new PolarisTestMetaStoreManager(metaStoreManager, callCtx); } } diff --git a/polaris-core/src/test/java/org/apache/polaris/core/persistence/ResolverTest.java b/polaris-core/src/test/java/org/apache/polaris/core/persistence/ResolverTest.java index ba7b202fef..e11779514f 100644 --- a/polaris-core/src/test/java/org/apache/polaris/core/persistence/ResolverTest.java +++ b/polaris-core/src/test/java/org/apache/polaris/core/persistence/ResolverTest.java @@ -23,6 +23,7 @@ import java.time.Clock; import org.apache.polaris.core.PolarisCallContext; import org.apache.polaris.core.PolarisDefaultDiagServiceImpl; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.persistence.transactional.TransactionalMetaStoreManagerImpl; import org.apache.polaris.core.persistence.transactional.TreeMapMetaStore; import org.apache.polaris.core.persistence.transactional.TreeMapTransactionalPersistenceImpl; @@ -31,6 +32,7 @@ public class ResolverTest extends BaseResolverTest { private final Clock clock = Clock.systemUTC(); + private final PolarisDiagnostics DIAGNOSTICS = new PolarisDefaultDiagServiceImpl(); private PolarisCallContext callCtx; private PolarisTestMetaStoreManager tm; private TransactionalMetaStoreManagerImpl metaStoreManager; @@ -38,11 +40,7 @@ public class ResolverTest extends BaseResolverTest { @Override protected PolarisCallContext callCtx() { if (callCtx == null) { - PolarisDefaultDiagServiceImpl diagServices = new PolarisDefaultDiagServiceImpl(); - TreeMapMetaStore store = new TreeMapMetaStore(diagServices); - TreeMapTransactionalPersistenceImpl metaStore = - new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), RANDOM_SECRETS); - callCtx = new PolarisCallContext(() -> "testRealm", metaStore, diagServices); + callCtx = new PolarisCallContext(() -> "testRealm", DIAGNOSTICS); } return callCtx; } @@ -50,7 +48,10 @@ protected PolarisCallContext callCtx() { @Override protected PolarisMetaStoreManager metaStoreManager() { if (metaStoreManager == null) { - metaStoreManager = new TransactionalMetaStoreManagerImpl(clock); + TreeMapMetaStore store = new TreeMapMetaStore(DIAGNOSTICS); + TreeMapTransactionalPersistenceImpl metaStore = + new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), RANDOM_SECRETS); + metaStoreManager = new TransactionalMetaStoreManagerImpl(clock, () -> metaStore); } return metaStoreManager; } @@ -58,7 +59,6 @@ protected PolarisMetaStoreManager metaStoreManager() { @Override protected PolarisTestMetaStoreManager tm() { if (tm == null) { - // bootstrap the meta store with our test schema tm = new PolarisTestMetaStoreManager(metaStoreManager(), callCtx()); } return tm; diff --git a/polaris-core/src/test/java/org/apache/polaris/core/persistence/cache/InMemoryEntityCacheTest.java b/polaris-core/src/test/java/org/apache/polaris/core/persistence/cache/InMemoryEntityCacheTest.java index 1184e55a0f..406b12d273 100644 --- a/polaris-core/src/test/java/org/apache/polaris/core/persistence/cache/InMemoryEntityCacheTest.java +++ b/polaris-core/src/test/java/org/apache/polaris/core/persistence/cache/InMemoryEntityCacheTest.java @@ -80,8 +80,8 @@ public InMemoryEntityCacheTest() { TreeMapMetaStore store = new TreeMapMetaStore(diagServices); TransactionalPersistence metaStore = new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), RANDOM_SECRETS); - metaStoreManager = new TransactionalMetaStoreManagerImpl(Clock.systemUTC()); - callCtx = new PolarisCallContext(() -> "testRealm", metaStore, diagServices); + metaStoreManager = new TransactionalMetaStoreManagerImpl(Clock.systemUTC(), () -> metaStore); + callCtx = new PolarisCallContext(() -> "testRealm", diagServices); // bootstrap the meta store with our test schema tm = new PolarisTestMetaStoreManager(metaStoreManager, callCtx); diff --git a/polaris-core/src/test/java/org/apache/polaris/core/storage/cache/StorageCredentialCacheTest.java b/polaris-core/src/test/java/org/apache/polaris/core/storage/cache/StorageCredentialCacheTest.java index 5364fa8433..8819455ebc 100644 --- a/polaris-core/src/test/java/org/apache/polaris/core/storage/cache/StorageCredentialCacheTest.java +++ b/polaris-core/src/test/java/org/apache/polaris/core/storage/cache/StorageCredentialCacheTest.java @@ -18,8 +18,6 @@ */ package org.apache.polaris.core.storage.cache; -import static org.apache.polaris.core.persistence.PrincipalSecretsGenerator.RANDOM_SECRETS; - import jakarta.annotation.Nonnull; import java.util.ArrayList; import java.util.Arrays; @@ -39,9 +37,6 @@ import org.apache.polaris.core.persistence.PolarisObjectMapperUtil; import org.apache.polaris.core.persistence.dao.entity.BaseResult; import org.apache.polaris.core.persistence.dao.entity.ScopedCredentialsResult; -import org.apache.polaris.core.persistence.transactional.TransactionalPersistence; -import org.apache.polaris.core.persistence.transactional.TreeMapMetaStore; -import org.apache.polaris.core.persistence.transactional.TreeMapTransactionalPersistenceImpl; import org.apache.polaris.core.storage.AccessConfig; import org.apache.polaris.core.storage.StorageAccessProperty; import org.assertj.core.api.Assertions; @@ -58,14 +53,8 @@ public class StorageCredentialCacheTest { private StorageCredentialCache storageCredentialCache; public StorageCredentialCacheTest() { - // diag services PolarisDiagnostics diagServices = new PolarisDefaultDiagServiceImpl(); - // the entity store, use treemap implementation - TreeMapMetaStore store = new TreeMapMetaStore(diagServices); - // to interact with the metastore - TransactionalPersistence metaStore = - new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), RANDOM_SECRETS); - callCtx = new PolarisCallContext(() -> "testRealm", metaStore, diagServices); + callCtx = new PolarisCallContext(() -> "testRealm", diagServices); storageCredentialCacheConfig = () -> 10_000; metaStoreManager = Mockito.mock(PolarisMetaStoreManager.class); storageCredentialCache = newStorageCredentialCache(); diff --git a/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/BaseResolverTest.java b/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/BaseResolverTest.java index c02dc4155a..e04a34a0a0 100644 --- a/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/BaseResolverTest.java +++ b/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/BaseResolverTest.java @@ -100,7 +100,7 @@ public void setupTest() { // polaris call context protected abstract PolarisCallContext callCtx(); - // utility to bootstrap the mata store + // utility to bootstrap the test meta store manager protected abstract PolarisTestMetaStoreManager tm(); // the meta store manager diff --git a/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/PolarisTestMetaStoreManager.java b/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/PolarisTestMetaStoreManager.java index f4aa7aa46c..2fe8b0ec4a 100644 --- a/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/PolarisTestMetaStoreManager.java +++ b/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/PolarisTestMetaStoreManager.java @@ -63,10 +63,7 @@ /** Test the Polaris persistence layer */ public class PolarisTestMetaStoreManager { - // call context final PolarisCallContext polarisCallContext; - - // call metastore manager final PolarisMetaStoreManager polarisMetaStoreManager; // the start time @@ -2903,9 +2900,10 @@ void testPolicyMappingCleanup() { // Drop N1_N2_T1, the corresponding policy mapping should be cleaned-up this.dropEntity(List.of(catalog, N1, N1_N2), N1_N2_T3); - BasePersistence ms = polarisCallContext.getMetaStore(); + // hackish way to inspect internal metastore + BasePersistence metaStore = ((BaseMetaStoreManager) polarisMetaStoreManager).getMetaStore(); Assertions.assertThat( - ms.loadAllTargetsOnPolicy( + metaStore.loadAllTargetsOnPolicy( polarisCallContext, N1_P1.getCatalogId(), N1_P1.getId(), N1_P1.getPolicyTypeCode())) .isEmpty(); 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 b83b68c0f6..9b7b8ee675 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 @@ -44,7 +44,6 @@ import org.apache.polaris.core.config.RealmConfig; 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.PolarisMetaStoreManager; import org.apache.polaris.core.persistence.bootstrap.RootCredentialsSet; @@ -157,11 +156,9 @@ public RealmContext realmContext(@Context ContainerRequestContext request) { @RequestScoped public CallContext polarisCallContext( RealmContext realmContext, - PolarisDiagnostics diagServices, - PolarisConfigurationStore configurationStore, - MetaStoreManagerFactory metaStoreManagerFactory) { - BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSession(realmContext); - return new PolarisCallContext(realmContext, metaStoreSession, diagServices, configurationStore); + PolarisDiagnostics diagnostics, + PolarisConfigurationStore configurationStore) { + return new PolarisCallContext(realmContext, diagnostics, configurationStore); } @Produces diff --git a/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryAtomicOperationMetaStoreManagerFactory.java b/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryAtomicOperationMetaStoreManagerFactory.java index 703ad1e380..93a5667a1b 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryAtomicOperationMetaStoreManagerFactory.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryAtomicOperationMetaStoreManagerFactory.java @@ -22,9 +22,11 @@ import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import java.time.Clock; +import java.util.function.Supplier; import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.persistence.AtomicOperationMetaStoreManager; import org.apache.polaris.core.persistence.PolarisMetaStoreManager; +import org.apache.polaris.core.persistence.transactional.TransactionalPersistence; import org.apache.polaris.core.storage.PolarisStorageIntegrationProvider; /** @@ -50,7 +52,8 @@ public InMemoryAtomicOperationMetaStoreManagerFactory( } @Override - protected PolarisMetaStoreManager createNewMetaStoreManager(Clock clock) { - return new AtomicOperationMetaStoreManager(clock); + protected PolarisMetaStoreManager createNewMetaStoreManager( + Clock clock, Supplier metaStoreSupplier) { + return new AtomicOperationMetaStoreManager(clock, metaStoreSupplier::get); } } diff --git a/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java b/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java index fb846aef52..7daf0c33d1 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java @@ -86,15 +86,6 @@ public synchronized PolarisMetaStoreManager getOrCreateMetaStoreManager( return super.getOrCreateMetaStoreManager(realmContext); } - @Override - public synchronized TransactionalPersistence getOrCreateSession(RealmContext realmContext) { - String realmId = realmContext.getRealmIdentifier(); - if (!bootstrappedRealms.contains(realmId)) { - bootstrapRealmsFromEnvironment(List.of(realmId)); - } - return super.getOrCreateSession(realmContext); - } - private void bootstrapRealmsFromEnvironment(List realms) { RootCredentialsSet rootCredentialsSet = RootCredentialsSet.fromEnvironment(); this.bootstrapRealms(realms, rootCredentialsSet); diff --git a/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAuthzTestBase.java b/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAuthzTestBase.java index 5e2b349d16..d821f5d712 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAuthzTestBase.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAuthzTestBase.java @@ -226,12 +226,7 @@ public void before(TestInfo testInfo) { polarisAuthorizer = new PolarisAuthorizerImpl(); - polarisContext = - new PolarisCallContext( - realmContext, - managerFactory.getOrCreateSession(realmContext), - diagServices, - configurationStore); + polarisContext = new PolarisCallContext(realmContext, diagServices, configurationStore); callContext = polarisContext; diff --git a/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTRSAKeyPairTest.java b/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTRSAKeyPairTest.java index 778a271972..be42765980 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTRSAKeyPairTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTRSAKeyPairTest.java @@ -53,8 +53,7 @@ public void testSuccessfulTokenGeneration() throws Exception { final String clientId = "test-client-id"; final String scope = "PRINCIPAL_ROLE:TEST"; - PolarisCallContext polarisCallContext = - new PolarisCallContext(null, null, null, configurationStore); + PolarisCallContext polarisCallContext = new PolarisCallContext(null, null, configurationStore); PolarisMetaStoreManager metastoreManager = Mockito.mock(PolarisMetaStoreManager.class); String mainSecret = "client-secret"; PolarisPrincipalSecrets principalSecrets = diff --git a/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTSymmetricKeyGeneratorTest.java b/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTSymmetricKeyGeneratorTest.java index ac870e6f8d..43efedb6ab 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTSymmetricKeyGeneratorTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTSymmetricKeyGeneratorTest.java @@ -41,7 +41,7 @@ public class JWTSymmetricKeyGeneratorTest { /** Sanity test to verify that we can generate a token */ @Test public void testJWTSymmetricKeyGenerator() { - PolarisCallContext polarisCallContext = new PolarisCallContext(null, null, null, null); + PolarisCallContext polarisCallContext = new PolarisCallContext(null, null, null); PolarisMetaStoreManager metastoreManager = Mockito.mock(PolarisMetaStoreManager.class); String mainSecret = "test_secret"; String clientId = "test_client_id"; diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogTest.java index b37447616a..1a4617630d 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogTest.java @@ -273,12 +273,7 @@ public void before(TestInfo testInfo) { QuarkusMock.installMockForType(realmContext, RealmContext.class); metaStoreManager = metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext); userSecretsManager = userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext); - polarisContext = - new PolarisCallContext( - realmContext, - metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, - configurationStore); + polarisContext = new PolarisCallContext(realmContext, diagServices, configurationStore); EntityCache entityCache = createEntityCache(polarisContext.getRealmConfig(), metaStoreManager); resolverFactory = diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogViewTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogViewTest.java index b7ad589300..a19594bd07 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogViewTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogViewTest.java @@ -154,12 +154,7 @@ public void before(TestInfo testInfo) { metaStoreManager = metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext); userSecretsManager = userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext); - polarisContext = - new PolarisCallContext( - realmContext, - metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, - configurationStore); + polarisContext = new PolarisCallContext(realmContext, diagServices, configurationStore); PrincipalEntity rootPrincipal = metaStoreManager.findRootPrincipal(polarisContext).orElseThrow(); diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolarisGenericTableCatalogTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolarisGenericTableCatalogTest.java index f2524798f9..77528f97ee 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolarisGenericTableCatalogTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolarisGenericTableCatalogTest.java @@ -146,12 +146,7 @@ public void before(TestInfo testInfo) { QuarkusMock.installMockForType(realmContext, RealmContext.class); metaStoreManager = metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext); userSecretsManager = userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext); - polarisContext = - new PolarisCallContext( - realmContext, - metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, - configurationStore); + polarisContext = new PolarisCallContext(realmContext, diagServices, configurationStore); PrincipalEntity rootPrincipal = metaStoreManager.findRootPrincipal(polarisContext).orElseThrow(); diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolicyCatalogTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolicyCatalogTest.java index dbfab7da25..939523a356 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolicyCatalogTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolicyCatalogTest.java @@ -122,8 +122,8 @@ public abstract class AbstractPolicyCatalogTest { PolicyAttachmentTarget.TypeEnum.TABLE_LIKE, List.of(TABLE.toString().split("\\."))); @Inject MetaStoreManagerFactory metaStoreManagerFactory; - @Inject UserSecretsManagerFactory userSecretsManagerFactory; @Inject PolarisConfigurationStore configurationStore; + @Inject UserSecretsManagerFactory userSecretsManagerFactory; @Inject StorageCredentialCache storageCredentialCache; @Inject PolarisStorageIntegrationProvider storageIntegrationProvider; @Inject PolarisDiagnostics diagServices; @@ -169,12 +169,7 @@ public void before(TestInfo testInfo) { QuarkusMock.installMockForType(realmContext, RealmContext.class); metaStoreManager = metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext); userSecretsManager = userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext); - polarisContext = - new PolarisCallContext( - realmContext, - metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, - configurationStore); + polarisContext = new PolarisCallContext(realmContext, diagServices, configurationStore); callContext = polarisContext; diff --git a/runtime/service/src/test/java/org/apache/polaris/service/entity/CatalogEntityTest.java b/runtime/service/src/test/java/org/apache/polaris/service/entity/CatalogEntityTest.java index a9969d04a7..ff17d89a97 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/entity/CatalogEntityTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/entity/CatalogEntityTest.java @@ -22,7 +22,6 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import java.time.Clock; import java.util.List; import java.util.stream.Stream; import org.apache.polaris.core.PolarisCallContext; @@ -38,9 +37,6 @@ import org.apache.polaris.core.context.CallContext; import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.core.entity.CatalogEntity; -import org.apache.polaris.core.persistence.BasePersistence; -import org.apache.polaris.core.persistence.MetaStoreManagerFactory; -import org.apache.polaris.service.persistence.InMemoryPolarisMetaStoreManagerFactory; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -52,17 +48,13 @@ public class CatalogEntityTest { private static final ObjectMapper MAPPER = new ObjectMapper(); - private final Clock clock = Clock.systemUTC(); private final PolarisDiagnostics diagnostics = new PolarisDefaultDiagServiceImpl(); private CallContext callContext; @BeforeEach public void setup() { RealmContext realmContext = () -> "realm"; - MetaStoreManagerFactory metaStoreManagerFactory = - new InMemoryPolarisMetaStoreManagerFactory(clock, diagnostics, null); - BasePersistence metaStore = metaStoreManagerFactory.getOrCreateSession(realmContext); - this.callContext = new PolarisCallContext(realmContext, metaStore, diagnostics); + this.callContext = new PolarisCallContext(realmContext, diagnostics); } @ParameterizedTest diff --git a/runtime/service/src/test/java/org/apache/polaris/service/task/BatchFileCleanupTaskHandlerTest.java b/runtime/service/src/test/java/org/apache/polaris/service/task/BatchFileCleanupTaskHandlerTest.java index 2ab24c396a..431b75104c 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/task/BatchFileCleanupTaskHandlerTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/task/BatchFileCleanupTaskHandlerTest.java @@ -47,15 +47,12 @@ import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.core.entity.AsyncTaskType; 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.service.TestFileIOFactory; import org.junit.jupiter.api.Test; @QuarkusTest public class BatchFileCleanupTaskHandlerTest { @Inject PolarisDiagnostics diagnostics; - @Inject MetaStoreManagerFactory metaStoreManagerFactory; private final RealmContext realmContext = () -> "realmName"; private TaskFileIOSupplier buildTaskFileIOSupplier(FileIO fileIO) { @@ -63,8 +60,7 @@ private TaskFileIOSupplier buildTaskFileIOSupplier(FileIO fileIO) { } private PolarisCallContext newCallContext() { - BasePersistence metaStore = metaStoreManagerFactory.getOrCreateSession(realmContext); - return new PolarisCallContext(realmContext, metaStore, diagnostics); + return new PolarisCallContext(realmContext, diagnostics); } @Test diff --git a/runtime/service/src/test/java/org/apache/polaris/service/task/ManifestFileCleanupTaskHandlerTest.java b/runtime/service/src/test/java/org/apache/polaris/service/task/ManifestFileCleanupTaskHandlerTest.java index 53afeecfaf..8a9df4b0ab 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/task/ManifestFileCleanupTaskHandlerTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/task/ManifestFileCleanupTaskHandlerTest.java @@ -45,15 +45,12 @@ import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.core.entity.AsyncTaskType; 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.service.TestFileIOFactory; import org.junit.jupiter.api.Test; @QuarkusTest class ManifestFileCleanupTaskHandlerTest { @Inject PolarisDiagnostics diagnostics; - @Inject MetaStoreManagerFactory metaStoreManagerFactory; private final RealmContext realmContext = () -> "realmName"; @@ -62,8 +59,7 @@ private TaskFileIOSupplier buildTaskFileIOSupplier(FileIO fileIO) { } private PolarisCallContext newCallContext() { - BasePersistence metaStore = metaStoreManagerFactory.getOrCreateSession(realmContext); - return new PolarisCallContext(realmContext, metaStore, diagnostics); + return new PolarisCallContext(realmContext, diagnostics); } @Test diff --git a/runtime/service/src/test/java/org/apache/polaris/service/task/TableCleanupTaskHandlerTest.java b/runtime/service/src/test/java/org/apache/polaris/service/task/TableCleanupTaskHandlerTest.java index 3663c8a229..f15638e2f2 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/task/TableCleanupTaskHandlerTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/task/TableCleanupTaskHandlerTest.java @@ -79,12 +79,7 @@ private TableCleanupTaskHandler newTableCleanupTaskHandler(FileIO fileIO) { void setup() { QuarkusMock.installMockForType(realmContext, RealmContext.class); - callContext = - new PolarisCallContext( - realmContext, - metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, - configurationStore); + callContext = new PolarisCallContext(realmContext, diagServices, configurationStore); } @Test diff --git a/runtime/service/src/test/java/org/apache/polaris/service/test/PolarisIntegrationTestFixture.java b/runtime/service/src/test/java/org/apache/polaris/service/test/PolarisIntegrationTestFixture.java index eb5dd948dc..ed534cd519 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/test/PolarisIntegrationTestFixture.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/test/PolarisIntegrationTestFixture.java @@ -39,7 +39,6 @@ import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.core.entity.PolarisPrincipalSecrets; import org.apache.polaris.core.entity.PrincipalEntity; -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.service.auth.TokenUtils; @@ -106,11 +105,8 @@ private PolarisPrincipalSecrets fetchAdminSecrets() { .toCompletableFuture() .join(); - BasePersistence metaStoreSession = - helper.metaStoreManagerFactory.getOrCreateSession(realmContext); PolarisCallContext polarisContext = - new PolarisCallContext( - realmContext, metaStoreSession, helper.diagServices, helper.configurationStore); + new PolarisCallContext(realmContext, helper.diagServices, helper.configurationStore); PolarisMetaStoreManager metaStoreManager = helper.metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext); PrincipalEntity principal = metaStoreManager.findRootPrincipal(polarisContext).orElseThrow(); diff --git a/runtime/service/src/testFixtures/java/org/apache/polaris/service/TestServices.java b/runtime/service/src/testFixtures/java/org/apache/polaris/service/TestServices.java index d8ec777889..10af78e569 100644 --- a/runtime/service/src/testFixtures/java/org/apache/polaris/service/TestServices.java +++ b/runtime/service/src/testFixtures/java/org/apache/polaris/service/TestServices.java @@ -41,7 +41,6 @@ import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.core.entity.PolarisEntity; import org.apache.polaris.core.entity.PrincipalEntity; -import org.apache.polaris.core.persistence.BasePersistence; import org.apache.polaris.core.persistence.MetaStoreManagerFactory; import org.apache.polaris.core.persistence.PolarisMetaStoreManager; import org.apache.polaris.core.persistence.cache.EntityCache; @@ -170,10 +169,8 @@ public TestServices build() { UserSecretsManagerFactory userSecretsManagerFactory = new UnsafeInMemorySecretsManagerFactory(); - BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSession(realmContext); CallContext callContext = - new PolarisCallContext( - realmContext, metaStoreSession, polarisDiagnostics, configurationStore); + new PolarisCallContext(realmContext, polarisDiagnostics, configurationStore); PolarisMetaStoreManager metaStoreManager = metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext); @@ -299,7 +296,6 @@ public String getAuthenticationScheme() { } public PolarisCallContext newCallContext() { - BasePersistence metaStore = metaStoreManagerFactory.getOrCreateSession(realmContext); - return new PolarisCallContext(realmContext, metaStore, polarisDiagnostics, configurationStore); + return new PolarisCallContext(realmContext, polarisDiagnostics, configurationStore); } }