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 6b4f8e1fc Remove PolarisCallContext.getDiagServices (#2415) 6b4f8e1fc is described below commit 6b4f8e1fc5c8b5f0d7d645fc66fc9127888a1811 Author: Christopher Lambert <xn...@gmx.de> AuthorDate: Tue Sep 2 19:40:39 2025 +0200 Remove PolarisCallContext.getDiagServices (#2415) * Remove PolarisCallContext.getDiagServices usage * Remove diagnostics from PolarisCallContext --- .../PolarisEclipseLinkMetaStoreManagerTest.java | 2 +- .../relational/jdbc/JdbcBasePersistenceImpl.java | 34 ++++++------ .../jdbc/JdbcMetaStoreManagerFactory.java | 11 ++-- ...toreManagerWithJdbcBasePersistenceImplTest.java | 4 +- .../apache/polaris/core/PolarisCallContext.java | 16 +----- .../LocalPolarisMetaStoreManagerFactory.java | 10 ++-- .../TransactionWorkspaceMetaStoreManager.java | 2 +- .../persistence/cache/InMemoryEntityCache.java | 43 ++++++--------- .../resolver/PolarisResolutionManifest.java | 3 +- .../resolver/ResolutionManifestFactoryImpl.java | 8 ++- .../core/persistence/resolver/Resolver.java | 3 +- .../transactional/PolarisEntityResolver.java | 64 +++++++++++----------- .../TransactionalMetaStoreManagerImpl.java | 39 ++++++++----- .../core/storage/cache/StorageCredentialCache.java | 11 ++-- ...TreeMapAtomicOperationMetaStoreManagerTest.java | 2 +- .../PolarisTreeMapMetaStoreManagerTest.java | 2 +- .../polaris/core/persistence/ResolverTest.java | 4 +- .../persistence/cache/InMemoryEntityCacheTest.java | 4 +- .../storage/cache/StorageCredentialCacheTest.java | 8 +-- .../polaris/core/persistence/BaseResolverTest.java | 6 +- .../polaris/service/admin/PolarisAdminService.java | 8 +-- .../polaris/service/admin/PolarisServiceImpl.java | 5 ++ .../service/auth/DefaultActiveRolesProvider.java | 14 ++--- .../service/catalog/common/CatalogHandler.java | 3 +- .../generic/GenericTableCatalogAdapter.java | 5 ++ .../generic/GenericTableCatalogHandler.java | 3 + .../service/catalog/iceberg/IcebergCatalog.java | 46 ++++++++-------- .../catalog/iceberg/IcebergCatalogAdapter.java | 5 ++ .../catalog/iceberg/IcebergCatalogHandler.java | 3 + .../catalog/policy/PolicyCatalogAdapter.java | 5 ++ .../catalog/policy/PolicyCatalogHandler.java | 3 + .../polaris/service/config/ServiceProducers.java | 14 +++-- .../catalog/PolarisCallContextCatalogFactory.java | 5 ++ .../service/admin/ManagementServiceTest.java | 1 + .../admin/PolarisAdminServiceAuthzTest.java | 1 + .../service/admin/PolarisAdminServiceTest.java | 6 +- .../service/admin/PolarisAuthzTestBase.java | 11 ++-- .../service/admin/PolarisServiceImplTest.java | 4 ++ .../polaris/service/auth/JWTRSAKeyPairTest.java | 3 +- .../service/auth/JWTSymmetricKeyGeneratorTest.java | 2 +- .../AbstractPolarisGenericTableCatalogTest.java | 3 +- ...PolarisGenericTableCatalogHandlerAuthzTest.java | 1 + .../iceberg/AbstractIcebergCatalogTest.java | 12 ++-- .../iceberg/AbstractIcebergCatalogViewTest.java | 3 +- .../iceberg/IcebergCatalogHandlerAuthzTest.java | 4 ++ .../IcebergCatalogRelationalNoEntityCacheTest.java | 5 +- ...cebergCatalogRelationalWithEntityCacheTest.java | 7 ++- .../service/catalog/io/FileIOFactoryTest.java | 1 + .../catalog/policy/AbstractPolicyCatalogTest.java | 3 +- .../policy/PolicyCatalogHandlerAuthzTest.java | 1 + .../task/BatchFileCleanupTaskHandlerTest.java | 4 +- .../task/ManifestFileCleanupTaskHandlerTest.java | 4 +- .../service/task/TableCleanupTaskHandlerTest.java | 3 - .../test/PolarisIntegrationTestFixture.java | 3 +- .../org/apache/polaris/service/TestServices.java | 19 ++++--- 55 files changed, 279 insertions(+), 217 deletions(-) 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 ab768ba83..bf358cca0 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 @@ -89,7 +89,7 @@ public class PolarisEclipseLinkMetaStoreManagerTest extends BasePolarisMetaStore diagServices, store, Mockito.mock(), realmContext, null, "polaris", RANDOM_SECRETS); TransactionalMetaStoreManagerImpl metaStoreManager = new TransactionalMetaStoreManagerImpl(clock, diagServices); - PolarisCallContext callCtx = new PolarisCallContext(realmContext, session, diagServices); + PolarisCallContext callCtx = new PolarisCallContext(realmContext, session); return new PolarisTestMetaStoreManager(metaStoreManager, callCtx); } diff --git a/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcBasePersistenceImpl.java b/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcBasePersistenceImpl.java index 71f1d2e7a..e43f6dbc8 100644 --- a/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcBasePersistenceImpl.java +++ b/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcBasePersistenceImpl.java @@ -37,6 +37,7 @@ import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors; import org.apache.polaris.core.PolarisCallContext; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.entity.EntityNameLookupRecord; import org.apache.polaris.core.entity.LocationBasedEntity; import org.apache.polaris.core.entity.PolarisBaseEntity; @@ -77,6 +78,7 @@ public class JdbcBasePersistenceImpl implements BasePersistence, IntegrationPers private static final Logger LOGGER = LoggerFactory.getLogger(JdbcBasePersistenceImpl.class); + private final PolarisDiagnostics diagnostics; private final DatasourceOperations datasourceOperations; private final PrincipalSecretsGenerator secretsGenerator; private final PolarisStorageIntegrationProvider storageIntegrationProvider; @@ -87,11 +89,13 @@ public class JdbcBasePersistenceImpl implements BasePersistence, IntegrationPers private static final int MAX_LOCATION_COMPONENTS = 40; public JdbcBasePersistenceImpl( + PolarisDiagnostics diagnostics, DatasourceOperations databaseOperations, PrincipalSecretsGenerator secretsGenerator, PolarisStorageIntegrationProvider storageIntegrationProvider, String realmId, int schemaVersion) { + this.diagnostics = diagnostics; this.datasourceOperations = databaseOperations; this.secretsGenerator = secretsGenerator; this.storageIntegrationProvider = storageIntegrationProvider; @@ -785,24 +789,20 @@ public class JdbcBasePersistenceImpl implements BasePersistence, IntegrationPers PolarisPrincipalSecrets principalSecrets = loadPrincipalSecrets(callCtx, clientId); // should be found - callCtx - .getDiagServices() - .checkNotNull( - principalSecrets, - "cannot_find_secrets", - "client_id={} principalId={}", - clientId, - principalId); + diagnostics.checkNotNull( + principalSecrets, + "cannot_find_secrets", + "client_id={} principalId={}", + clientId, + principalId); // ensure principal id is matching - callCtx - .getDiagServices() - .check( - principalId == principalSecrets.getPrincipalId(), - "principal_id_mismatch", - "expectedId={} id={}", - principalId, - principalSecrets.getPrincipalId()); + diagnostics.check( + principalId == principalSecrets.getPrincipalId(), + "principal_id_mismatch", + "expectedId={} id={}", + principalId, + principalSecrets.getPrincipalId()); // rotate the secrets principalSecrets.rotateSecrets(oldSecretHash); @@ -1119,7 +1119,7 @@ public class JdbcBasePersistenceImpl implements BasePersistence, IntegrationPers PolarisStorageIntegration<T> loadPolarisStorageIntegration( @Nonnull PolarisCallContext callContext, @Nonnull PolarisBaseEntity entity) { PolarisStorageConfigurationInfo storageConfig = - BaseMetaStoreManager.extractStorageConfiguration(callContext.getDiagServices(), entity); + BaseMetaStoreManager.extractStorageConfiguration(diagnostics, entity); return storageIntegrationProvider.getStorageIntegrationForConfig(storageConfig); } 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 20acc3e03..09640c259 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 @@ -103,6 +103,7 @@ public class JdbcMetaStoreManagerFactory implements MetaStoreManagerFactory { realmId, () -> new JdbcBasePersistenceImpl( + diagnostics, datasourceOperations, secretsGenerator(realmId, rootCredentialsSet), storageIntegrationProvider, @@ -177,7 +178,7 @@ public class JdbcMetaStoreManagerFactory implements MetaStoreManagerFactory { PolarisMetaStoreManager metaStoreManager = getOrCreateMetaStoreManager(realmContext); BasePersistence session = getOrCreateSession(realmContext); - PolarisCallContext callContext = new PolarisCallContext(realmContext, session, diagnostics); + PolarisCallContext callContext = new PolarisCallContext(realmContext, session); BaseResult result = metaStoreManager.purge(callContext); results.put(realm, result); @@ -216,7 +217,7 @@ public class JdbcMetaStoreManagerFactory implements MetaStoreManagerFactory { PolarisMetaStoreManager metaStoreManager = getOrCreateMetaStoreManager(realmContext); entityCacheMap.put( realmContext.getRealmIdentifier(), - new InMemoryEntityCache(realmConfig, metaStoreManager)); + new InMemoryEntityCache(diagnostics, realmConfig, metaStoreManager)); } return entityCacheMap.get(realmContext.getRealmIdentifier()); @@ -233,8 +234,7 @@ public class JdbcMetaStoreManagerFactory implements MetaStoreManagerFactory { 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, metaStore); Optional<PrincipalEntity> preliminaryRootPrincipal = metaStoreManager.findRootPrincipal(polarisContext); @@ -268,8 +268,7 @@ public class JdbcMetaStoreManagerFactory implements MetaStoreManagerFactory { 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, metaStore); Optional<PrincipalEntity> 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 f15da08e3..dfc8a84a0 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 @@ -64,6 +64,7 @@ public class AtomicMetastoreManagerWithJdbcBasePersistenceImplTest RealmContext realmContext = () -> "REALM"; JdbcBasePersistenceImpl basePersistence = new JdbcBasePersistenceImpl( + diagServices, datasourceOperations, RANDOM_SECRETS, Mockito.mock(), @@ -71,8 +72,7 @@ public class AtomicMetastoreManagerWithJdbcBasePersistenceImplTest schemaVersion); AtomicOperationMetaStoreManager metaStoreManager = new AtomicOperationMetaStoreManager(clock, diagServices); - PolarisCallContext callCtx = - new PolarisCallContext(realmContext, basePersistence, diagServices); + PolarisCallContext callCtx = new PolarisCallContext(realmContext, basePersistence); 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 8878b9ef6..272b455e7 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 @@ -34,7 +34,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; private final RealmConfig realmConfig; @@ -42,30 +41,22 @@ 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() {}); + @Nonnull RealmContext realmContext, @Nonnull BasePersistence metaStore) { + this(realmContext, metaStore, new PolarisConfigurationStore() {}); } public BasePersistence getMetaStore() { return metaStore; } - public PolarisDiagnostics getDiagServices() { - return diagServices; - } - @Override public RealmContext getRealmContext() { return realmContext; @@ -90,7 +81,6 @@ public class PolarisCallContext implements CallContext { // 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.metaStore, this.configurationStore); } } 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 818bdb138..ea3c14b52 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 @@ -131,7 +131,7 @@ public abstract class LocalPolarisMetaStoreManagerFactory<StoreType> PolarisMetaStoreManager metaStoreManager = getOrCreateMetaStoreManager(realmContext); TransactionalPersistence session = getOrCreateSession(realmContext); - PolarisCallContext callContext = new PolarisCallContext(realmContext, session, diagnostics); + PolarisCallContext callContext = new PolarisCallContext(realmContext, session); BaseResult result = metaStoreManager.purge(callContext); results.put(realm, result); @@ -169,7 +169,7 @@ public abstract class LocalPolarisMetaStoreManagerFactory<StoreType> PolarisMetaStoreManager metaStoreManager = getOrCreateMetaStoreManager(realmContext); entityCacheMap.put( realmContext.getRealmIdentifier(), - new InMemoryEntityCache(realmConfig, metaStoreManager)); + new InMemoryEntityCache(diagnostics, realmConfig, metaStoreManager)); } return entityCacheMap.get(realmContext.getRealmIdentifier()); @@ -186,8 +186,7 @@ public abstract class LocalPolarisMetaStoreManagerFactory<StoreType> 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, metaStore); Optional<PrincipalEntity> preliminaryRootPrincipal = metaStoreManager.findRootPrincipal(polarisContext); @@ -221,8 +220,7 @@ public abstract class LocalPolarisMetaStoreManagerFactory<StoreType> 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, metaStore); Optional<PrincipalEntity> rootPrincipal = metaStoreManager.findRootPrincipal(polarisContext); if (rootPrincipal.isEmpty()) { diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/TransactionWorkspaceMetaStoreManager.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/TransactionWorkspaceMetaStoreManager.java index 3d9f3c052..b5c9ecebc 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/TransactionWorkspaceMetaStoreManager.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/TransactionWorkspaceMetaStoreManager.java @@ -137,7 +137,7 @@ public class TransactionWorkspaceMetaStoreManager implements PolarisMetaStoreMan @Nonnull PolarisEntityType entityType, @Nonnull PolarisEntitySubType entitySubType, @Nonnull PageToken pageToken) { - callCtx.getDiagServices().fail("illegal_method_in_transaction_workspace", "loadEntities"); + diagnostics.fail("illegal_method_in_transaction_workspace", "loadEntities"); return null; } diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/cache/InMemoryEntityCache.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/cache/InMemoryEntityCache.java index 36c44ea25..efac734ed 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/cache/InMemoryEntityCache.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/cache/InMemoryEntityCache.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; 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.FeatureConfiguration; import org.apache.polaris.core.config.RealmConfig; @@ -41,16 +42,10 @@ import org.apache.polaris.core.persistence.dao.entity.ResolvedEntityResult; /** An in-memory entity cache with a limit of 100k entities and a 1h TTL. */ public class InMemoryEntityCache implements EntityCache { - // cache mode private EntityCacheMode cacheMode; - - // the meta store manager + private final PolarisDiagnostics diagnostics; private final PolarisMetaStoreManager polarisMetaStoreManager; - - // Caffeine cache to keep entries by id private final Cache<Long, ResolvedPolarisEntity> byId; - - // index by name private final AbstractMap<EntityCacheByNameKey, ResolvedPolarisEntity> byName; /** @@ -59,7 +54,10 @@ public class InMemoryEntityCache implements EntityCache { * @param polarisMetaStoreManager the meta store manager implementation */ public InMemoryEntityCache( - @Nonnull RealmConfig realmConfig, @Nonnull PolarisMetaStoreManager polarisMetaStoreManager) { + @Nonnull PolarisDiagnostics diagnostics, + @Nonnull RealmConfig realmConfig, + @Nonnull PolarisMetaStoreManager polarisMetaStoreManager) { + this.diagnostics = diagnostics; // by name cache this.byName = new ConcurrentHashMap<>(); @@ -344,16 +342,13 @@ public class InMemoryEntityCache implements EntityCache { } // assert that entity, grant records and version are all set - callContext.getDiagServices().checkNotNull(entity, "unexpected_null_entity"); - callContext.getDiagServices().checkNotNull(grantRecords, "unexpected_null_grant_records"); - callContext - .getDiagServices() - .check(grantRecordsVersion > 0, "unexpected_null_grant_records_version"); + diagnostics.checkNotNull(entity, "unexpected_null_entity"); + diagnostics.checkNotNull(grantRecords, "unexpected_null_grant_records"); + diagnostics.check(grantRecordsVersion > 0, "unexpected_null_grant_records_version"); // create new cache entry newCacheEntry = - new ResolvedPolarisEntity( - callContext.getDiagServices(), entity, grantRecords, grantRecordsVersion); + new ResolvedPolarisEntity(diagnostics, entity, grantRecords, grantRecordsVersion); // insert cache entry this.replaceCacheEntry(existingCacheEntry, newCacheEntry); @@ -401,13 +396,12 @@ public class InMemoryEntityCache implements EntityCache { } // if found, setup entry - callContext.getDiagServices().checkNotNull(result.getEntity(), "entity_should_loaded"); - callContext - .getDiagServices() - .checkNotNull(result.getEntityGrantRecords(), "entity_grant_records_should_loaded"); + diagnostics.checkNotNull(result.getEntity(), "entity_should_loaded"); + diagnostics.checkNotNull( + result.getEntityGrantRecords(), "entity_grant_records_should_loaded"); entry = new ResolvedPolarisEntity( - callContext.getDiagServices(), + diagnostics, result.getEntity(), result.getEntityGrantRecords(), result.getGrantRecordsVersion()); @@ -458,15 +452,14 @@ public class InMemoryEntityCache implements EntityCache { } // validate return - callContext.getDiagServices().checkNotNull(result.getEntity(), "entity_should_loaded"); - callContext - .getDiagServices() - .checkNotNull(result.getEntityGrantRecords(), "entity_grant_records_should_loaded"); + diagnostics.checkNotNull(result.getEntity(), "entity_should_loaded"); + diagnostics.checkNotNull( + result.getEntityGrantRecords(), "entity_grant_records_should_loaded"); // if found, setup entry entry = new ResolvedPolarisEntity( - callContext.getDiagServices(), + diagnostics, result.getEntity(), result.getEntityGrantRecords(), result.getGrantRecordsVersion()); diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/PolarisResolutionManifest.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/PolarisResolutionManifest.java index f4504d6e1..562689878 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/PolarisResolutionManifest.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/PolarisResolutionManifest.java @@ -70,6 +70,7 @@ public class PolarisResolutionManifest implements PolarisResolutionManifestCatal private ResolverStatus primaryResolverStatus = null; public PolarisResolutionManifest( + PolarisDiagnostics diagnostics, CallContext callContext, ResolverFactory resolverFactory, SecurityContext securityContext, @@ -79,7 +80,7 @@ public class PolarisResolutionManifest implements PolarisResolutionManifestCatal this.catalogName = catalogName; this.primaryResolver = resolverFactory.createResolver(callContext, securityContext, catalogName); - this.diagnostics = callContext.getPolarisCallContext().getDiagServices(); + this.diagnostics = diagnostics; this.diagnostics.checkNotNull(securityContext, "null_security_context_for_resolution_manifest"); this.securityContext = securityContext; diagnostics.check( diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/ResolutionManifestFactoryImpl.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/ResolutionManifestFactoryImpl.java index dc148a723..c91a77543 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/ResolutionManifestFactoryImpl.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/ResolutionManifestFactoryImpl.java @@ -22,13 +22,17 @@ package org.apache.polaris.core.persistence.resolver; import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import jakarta.ws.rs.core.SecurityContext; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.context.CallContext; public class ResolutionManifestFactoryImpl implements ResolutionManifestFactory { + private final PolarisDiagnostics diagnostics; private final ResolverFactory resolverFactory; - public ResolutionManifestFactoryImpl(@Nonnull ResolverFactory resolverFactory) { + public ResolutionManifestFactoryImpl( + @Nonnull PolarisDiagnostics diagnostics, @Nonnull ResolverFactory resolverFactory) { + this.diagnostics = diagnostics; this.resolverFactory = resolverFactory; } @@ -39,6 +43,6 @@ public class ResolutionManifestFactoryImpl implements ResolutionManifestFactory @Nonnull SecurityContext securityContext, @Nullable String referenceCatalogName) { return new PolarisResolutionManifest( - callContext, resolverFactory, securityContext, referenceCatalogName); + diagnostics, callContext, resolverFactory, securityContext, referenceCatalogName); } } diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/Resolver.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/Resolver.java index 08f257b5c..df64d296a 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/Resolver.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/resolver/Resolver.java @@ -127,13 +127,14 @@ public class Resolver { * service admin should use null for that parameter. */ public Resolver( + @Nonnull PolarisDiagnostics diagnostics, @Nonnull PolarisCallContext polarisCallContext, @Nonnull PolarisMetaStoreManager polarisMetaStoreManager, @Nonnull SecurityContext securityContext, @Nullable EntityCache cache, @Nullable String referenceCatalogName) { this.polarisCallContext = polarisCallContext; - this.diagnostics = polarisCallContext.getDiagServices(); + this.diagnostics = diagnostics; this.polarisMetaStoreManager = polarisMetaStoreManager; this.cache = cache; this.securityContext = securityContext; diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/PolarisEntityResolver.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/PolarisEntityResolver.java index 2bc43a5a3..de37e2fe6 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/PolarisEntityResolver.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/PolarisEntityResolver.java @@ -77,36 +77,32 @@ public class PolarisEntityResolver { * or a principal can be specified here */ PolarisEntityResolver( + @Nonnull PolarisDiagnostics diagnostics, @Nonnull PolarisCallContext callCtx, @Nonnull TransactionalPersistence ms, @Nullable List<PolarisEntityCore> catalogPath, @Nullable PolarisEntityCore resolvedEntity, @Nullable List<PolarisEntityCore> otherTopLevelEntities) { - // cache diagnostics services - this.diagnostics = callCtx.getDiagServices(); + this.diagnostics = diagnostics; // validate path if one was specified if (catalogPath != null) { // cannot be an empty list - callCtx.getDiagServices().check(!catalogPath.isEmpty(), "catalogPath_cannot_be_empty"); + diagnostics.check(!catalogPath.isEmpty(), "catalogPath_cannot_be_empty"); // first in the path should be the catalog - callCtx - .getDiagServices() - .check( - catalogPath.get(0).getTypeCode() == PolarisEntityType.CATALOG.getCode(), - "entity_is_not_catalog", - "entity={}", - this); + diagnostics.check( + catalogPath.get(0).getTypeCode() == PolarisEntityType.CATALOG.getCode(), + "entity_is_not_catalog", + "entity={}", + this); } else if (resolvedEntity != null) { // if an entity is specified without any path, it better be a top-level entity - callCtx - .getDiagServices() - .check( - resolvedEntity.getType().isTopLevel(), - "not_top_level_entity", - "resolvedEntity={}", - resolvedEntity); + diagnostics.check( + resolvedEntity.getType().isTopLevel(), + "not_top_level_entity", + "resolvedEntity={}", + resolvedEntity); } // validate the otherTopLevelCatalogEntities list. Must be top-level catalog entities @@ -114,17 +110,14 @@ public class PolarisEntityResolver { // ensure all entities are top-level for (PolarisEntityCore topLevelCatalogEntityDto : otherTopLevelEntities) { // top-level (catalog or account) and is catalog, catalog path must be specified - callCtx - .getDiagServices() - .check( - topLevelCatalogEntityDto.isTopLevel() - || (topLevelCatalogEntityDto.getType().getParentType() - == PolarisEntityType.CATALOG - && catalogPath != null), - "not_top_level_or_missing_catalog_path", - "entity={} catalogPath={}", - topLevelCatalogEntityDto, - catalogPath); + diagnostics.check( + topLevelCatalogEntityDto.isTopLevel() + || (topLevelCatalogEntityDto.getType().getParentType() == PolarisEntityType.CATALOG + && catalogPath != null), + "not_top_level_or_missing_catalog_path", + "entity={} catalogPath={}", + topLevelCatalogEntityDto, + catalogPath); } } @@ -156,10 +149,11 @@ public class PolarisEntityResolver { * like a catalog. */ PolarisEntityResolver( + @Nonnull PolarisDiagnostics diagnostics, @Nonnull PolarisCallContext callCtx, @Nonnull TransactionalPersistence ms, @Nullable List<PolarisEntityCore> catalogPath) { - this(callCtx, ms, catalogPath, null, null); + this(diagnostics, callCtx, ms, catalogPath, null, null); } /** @@ -172,11 +166,12 @@ public class PolarisEntityResolver { * @param resolvedEntityDto resolved entity DTO */ PolarisEntityResolver( + @Nonnull PolarisDiagnostics diagnostics, @Nonnull PolarisCallContext callCtx, @Nonnull TransactionalPersistence ms, @Nullable List<PolarisEntityCore> catalogPath, PolarisEntityCore resolvedEntityDto) { - this(callCtx, ms, catalogPath, resolvedEntityDto, null); + this(diagnostics, callCtx, ms, catalogPath, resolvedEntityDto, null); } /** @@ -189,11 +184,18 @@ public class PolarisEntityResolver { * @param entity Polaris base entity */ PolarisEntityResolver( + @Nonnull PolarisDiagnostics diagnostics, @Nonnull PolarisCallContext callCtx, @Nonnull TransactionalPersistence ms, @Nullable List<PolarisEntityCore> catalogPath, @Nonnull PolarisBaseEntity entity) { - this(callCtx, ms, catalogPath, new PolarisEntityCore.Builder<>(entity).build(), null); + this( + diagnostics, + callCtx, + ms, + catalogPath, + new PolarisEntityCore.Builder<>(entity).build(), + null); } /** 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 97af650b0..7ae70c9dd 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 @@ -632,7 +632,8 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { @Nonnull PolarisEntitySubType entitySubType, @Nonnull String name) { // first resolve again the catalogPath to that entity - PolarisEntityResolver resolver = new PolarisEntityResolver(callCtx, ms, catalogPath); + PolarisEntityResolver resolver = + new PolarisEntityResolver(getDiagnostics(), callCtx, ms, catalogPath); // return if we failed to resolve if (resolver.isFailure()) { @@ -689,7 +690,8 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { @Nonnull PolarisEntitySubType entitySubType, @Nonnull PageToken pageToken) { // first resolve again the catalogPath to that entity - PolarisEntityResolver resolver = new PolarisEntityResolver(callCtx, ms, catalogPath); + PolarisEntityResolver resolver = + new PolarisEntityResolver(getDiagnostics(), callCtx, ms, catalogPath); // return if we failed to resolve if (resolver.isFailure()) { @@ -738,7 +740,8 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { @Nonnull PolarisEntitySubType entitySubType, @Nonnull PageToken pageToken) { // first resolve again the catalogPath to that entity - PolarisEntityResolver resolver = new PolarisEntityResolver(callCtx, ms, catalogPath); + PolarisEntityResolver resolver = + new PolarisEntityResolver(getDiagnostics(), callCtx, ms, catalogPath); // throw if we failed to resolve if (resolver.isFailure()) { @@ -1034,7 +1037,8 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { } // first resolve again the catalogPath - PolarisEntityResolver resolver = new PolarisEntityResolver(callCtx, ms, catalogPath); + PolarisEntityResolver resolver = + new PolarisEntityResolver(getDiagnostics(), callCtx, ms, catalogPath); // return if we failed to resolve if (resolver.isFailure()) { @@ -1115,7 +1119,8 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { getDiagnostics().checkNotNull(entity, "unexpected_null_entity"); // re-resolve everything including that entity - PolarisEntityResolver resolver = new PolarisEntityResolver(callCtx, ms, catalogPath, entity); + PolarisEntityResolver resolver = + new PolarisEntityResolver(getDiagnostics(), callCtx, ms, catalogPath, entity); // if resolution failed, return false if (resolver.isFailure()) { @@ -1247,7 +1252,7 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { // re-resolve everything including that entity PolarisEntityResolver resolver = - new PolarisEntityResolver(callCtx, ms, catalogPath, entityToRename); + new PolarisEntityResolver(getDiagnostics(), callCtx, ms, catalogPath, entityToRename); // if resolution failed, return false if (resolver.isFailure()) { @@ -1280,7 +1285,7 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { // re-resolve the new catalog path if this entity is going to be moved if (newCatalogPath != null) { - resolver = new PolarisEntityResolver(callCtx, ms, newCatalogPath); + resolver = new PolarisEntityResolver(getDiagnostics(), callCtx, ms, newCatalogPath); // if resolution failed, return false if (resolver.isFailure()) { @@ -1363,7 +1368,7 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { // re-resolve everything including that entity PolarisEntityResolver resolver = - new PolarisEntityResolver(callCtx, ms, catalogPath, entityToDrop); + new PolarisEntityResolver(getDiagnostics(), callCtx, ms, catalogPath, entityToDrop); // if resolution failed, return false if (resolver.isFailure()) { @@ -1543,7 +1548,12 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { // ensure these entities have not changed return new PolarisEntityResolver( - callCtx, ms, catalog != null ? List.of(catalog) : null, null, otherTopLevelEntities); + getDiagnostics(), + callCtx, + ms, + catalog != null ? List.of(catalog) : null, + null, + otherTopLevelEntities); } /** @@ -1573,7 +1583,8 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { } // re-resolve now all these entities - return new PolarisEntityResolver(callCtx, ms, catalogPath, securable, List.of(grantee)); + return new PolarisEntityResolver( + getDiagnostics(), callCtx, ms, catalogPath, securable, List.of(grantee)); } /** @@ -2367,9 +2378,9 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { @Nonnull PolicyEntity policy, Map<String, String> parameters) { PolarisEntityResolver targetResolver = - new PolarisEntityResolver(callCtx, ms, targetCatalogPath, target); + new PolarisEntityResolver(getDiagnostics(), callCtx, ms, targetCatalogPath, target); PolarisEntityResolver policyResolver = - new PolarisEntityResolver(callCtx, ms, policyCatalogPath, policy); + new PolarisEntityResolver(getDiagnostics(), callCtx, ms, policyCatalogPath, policy); if (targetResolver.isFailure() || policyResolver.isFailure()) { return new PolicyAttachmentResult(BaseResult.ReturnStatus.ENTITY_CANNOT_BE_RESOLVED, null); } @@ -2405,9 +2416,9 @@ public class TransactionalMetaStoreManagerImpl extends BaseMetaStoreManager { @Nonnull List<PolarisEntityCore> policyCatalogPath, @Nonnull PolicyEntity policy) { PolarisEntityResolver targetResolver = - new PolarisEntityResolver(callCtx, ms, targetCatalogPath, target); + new PolarisEntityResolver(getDiagnostics(), callCtx, ms, targetCatalogPath, target); PolarisEntityResolver policyResolver = - new PolarisEntityResolver(callCtx, ms, policyCatalogPath, policy); + new PolarisEntityResolver(getDiagnostics(), callCtx, ms, policyCatalogPath, policy); if (targetResolver.isFailure() || policyResolver.isFailure()) { return new PolicyAttachmentResult(BaseResult.ReturnStatus.ENTITY_CANNOT_BE_RESOLVED, null); } diff --git a/polaris-core/src/main/java/org/apache/polaris/core/storage/cache/StorageCredentialCache.java b/polaris-core/src/main/java/org/apache/polaris/core/storage/cache/StorageCredentialCache.java index d166ee4b1..82de79915 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/storage/cache/StorageCredentialCache.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/storage/cache/StorageCredentialCache.java @@ -31,6 +31,7 @@ import java.util.Set; import java.util.function.Function; import org.apache.iceberg.exceptions.UnprocessableEntityException; import org.apache.polaris.core.PolarisCallContext; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.config.FeatureConfiguration; import org.apache.polaris.core.config.RealmConfig; import org.apache.polaris.core.entity.PolarisEntity; @@ -46,10 +47,13 @@ public class StorageCredentialCache { private static final Logger LOGGER = LoggerFactory.getLogger(StorageCredentialCache.class); + private final PolarisDiagnostics diagnostics; private final LoadingCache<StorageCredentialCacheKey, StorageCredentialCacheEntry> cache; /** Initialize the creds cache */ - public StorageCredentialCache(StorageCredentialCacheConfig cacheConfig) { + public StorageCredentialCache( + PolarisDiagnostics diagnostics, StorageCredentialCacheConfig cacheConfig) { + this.diagnostics = diagnostics; cache = Caffeine.newBuilder() .maximumSize(cacheConfig.maxEntries()) @@ -108,9 +112,8 @@ public class StorageCredentialCache { @Nonnull Set<String> allowedWriteLocations, Optional<String> refreshCredentialsEndpoint) { if (!isTypeSupported(polarisEntity.getType())) { - callCtx - .getDiagServices() - .fail("entity_type_not_suppported_to_scope_creds", "type={}", polarisEntity.getType()); + diagnostics.fail( + "entity_type_not_suppported_to_scope_creds", "type={}", polarisEntity.getType()); } StorageCredentialCacheKey key = StorageCredentialCacheKey.of( 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 ac8d45218..f1fa909e8 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 @@ -38,7 +38,7 @@ public class PolarisTreeMapAtomicOperationMetaStoreManagerTest diagServices, store, Mockito.mock(), RANDOM_SECRETS); AtomicOperationMetaStoreManager metaStoreManager = new AtomicOperationMetaStoreManager(clock, diagServices); - PolarisCallContext callCtx = new PolarisCallContext(() -> "testRealm", metaStore, diagServices); + PolarisCallContext callCtx = new PolarisCallContext(() -> "testRealm", metaStore); 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 a07f7be99..4ecfa027f 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 @@ -38,7 +38,7 @@ public class PolarisTreeMapMetaStoreManagerTest extends BasePolarisMetaStoreMana diagServices, store, Mockito.mock(), RANDOM_SECRETS); TransactionalMetaStoreManagerImpl metaStoreManager = new TransactionalMetaStoreManagerImpl(clock, diagServices); - PolarisCallContext callCtx = new PolarisCallContext(() -> "testRealm", metaStore, diagServices); + PolarisCallContext callCtx = new PolarisCallContext(() -> "testRealm", metaStore); 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 e0add4fea..3c8633a82 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 @@ -22,7 +22,6 @@ import static org.apache.polaris.core.persistence.PrincipalSecretsGenerator.RAND import java.time.Clock; import org.apache.polaris.core.PolarisCallContext; -import org.apache.polaris.core.PolarisDefaultDiagServiceImpl; 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,7 +30,6 @@ import org.mockito.Mockito; public class ResolverTest extends BaseResolverTest { private final Clock clock = Clock.systemUTC(); - private final PolarisDefaultDiagServiceImpl diagServices = new PolarisDefaultDiagServiceImpl(); private PolarisCallContext callCtx; private PolarisTestMetaStoreManager tm; private TransactionalMetaStoreManagerImpl metaStoreManager; @@ -43,7 +41,7 @@ public class ResolverTest extends BaseResolverTest { TreeMapTransactionalPersistenceImpl metaStore = new TreeMapTransactionalPersistenceImpl( diagServices, store, Mockito.mock(), RANDOM_SECRETS); - callCtx = new PolarisCallContext(() -> "testRealm", metaStore, diagServices); + callCtx = new PolarisCallContext(() -> "testRealm", metaStore); } return callCtx; } 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 fa8437fa0..d750c4821 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 @@ -82,7 +82,7 @@ public class InMemoryEntityCacheTest { new TreeMapTransactionalPersistenceImpl( diagServices, store, Mockito.mock(), RANDOM_SECRETS); metaStoreManager = new TransactionalMetaStoreManagerImpl(Clock.systemUTC(), diagServices); - callCtx = new PolarisCallContext(() -> "testRealm", metaStore, diagServices); + callCtx = new PolarisCallContext(() -> "testRealm", metaStore); // bootstrap the meta store with our test schema tm = new PolarisTestMetaStoreManager(metaStoreManager, callCtx); @@ -93,7 +93,7 @@ public class InMemoryEntityCacheTest { * @return new cache for the entity store */ InMemoryEntityCache allocateNewCache() { - return new InMemoryEntityCache(callCtx.getRealmConfig(), this.metaStoreManager); + return new InMemoryEntityCache(diagServices, callCtx.getRealmConfig(), this.metaStoreManager); } @Test 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 becc220a6..a51badf4b 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 @@ -50,7 +50,7 @@ import org.junit.jupiter.api.Test; import org.mockito.Mockito; public class StorageCredentialCacheTest { - + private final PolarisDiagnostics diagServices = new PolarisDefaultDiagServiceImpl(); private final PolarisCallContext callCtx; private final StorageCredentialCacheConfig storageCredentialCacheConfig; private final PolarisMetaStoreManager metaStoreManager; @@ -58,22 +58,20 @@ 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( diagServices, store, Mockito.mock(), RANDOM_SECRETS); - callCtx = new PolarisCallContext(() -> "testRealm", metaStore, diagServices); + callCtx = new PolarisCallContext(() -> "testRealm", metaStore); storageCredentialCacheConfig = () -> 10_000; metaStoreManager = Mockito.mock(PolarisMetaStoreManager.class); storageCredentialCache = newStorageCredentialCache(); } private StorageCredentialCache newStorageCredentialCache() { - return new StorageCredentialCache(storageCredentialCacheConfig); + return new StorageCredentialCache(diagServices, storageCredentialCacheConfig); } @Test 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 c0daa7c44..53720c73b 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 @@ -31,6 +31,7 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; import org.apache.polaris.core.PolarisCallContext; +import org.apache.polaris.core.PolarisDefaultDiagServiceImpl; import org.apache.polaris.core.auth.PolarisPrincipal; import org.apache.polaris.core.entity.PolarisBaseEntity; import org.apache.polaris.core.entity.PolarisEntityCore; @@ -51,6 +52,7 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; public abstract class BaseResolverTest { + protected final PolarisDefaultDiagServiceImpl diagServices = new PolarisDefaultDiagServiceImpl(); // Principal P1 protected PolarisBaseEntity P1; @@ -467,7 +469,8 @@ public abstract class BaseResolverTest { // create a new cache if needs be if (cache == null) { - this.cache = new InMemoryEntityCache(callCtx().getRealmConfig(), metaStoreManager()); + this.cache = + new InMemoryEntityCache(diagServices, callCtx().getRealmConfig(), metaStoreManager()); } boolean allRoles = principalRolesScope == null; Optional<List<PrincipalRoleEntity>> roleEntities = @@ -485,6 +488,7 @@ public abstract class BaseResolverTest { PolarisPrincipal.of( PrincipalEntity.of(P1), Optional.ofNullable(principalRolesScope).orElse(Set.of())); return new Resolver( + diagServices, callCtx(), metaStoreManager(), new SecurityContext() { diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisAdminService.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisAdminService.java index d4c1892dc..84ed33900 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisAdminService.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisAdminService.java @@ -151,6 +151,7 @@ public class PolarisAdminService { private PolarisResolutionManifest resolutionManifest = null; public PolarisAdminService( + @NotNull PolarisDiagnostics diagnostics, @NotNull CallContext callContext, @NotNull ResolutionManifestFactory resolutionManifestFactory, @NotNull PolarisMetaStoreManager metaStoreManager, @@ -163,10 +164,9 @@ public class PolarisAdminService { this.resolutionManifestFactory = resolutionManifestFactory; this.metaStoreManager = metaStoreManager; this.securityContext = securityContext; - PolarisDiagnostics diagServices = callContext.getPolarisCallContext().getDiagServices(); - diagServices.checkNotNull(securityContext, "null_security_context"); - diagServices.checkNotNull(securityContext.getUserPrincipal(), "null_security_context"); - diagServices.check( + diagnostics.checkNotNull(securityContext, "null_security_context"); + diagnostics.checkNotNull(securityContext.getUserPrincipal(), "null_security_context"); + diagnostics.check( securityContext.getUserPrincipal() instanceof PolarisPrincipal, "unexpected_principal_type", "class={}", diff --git a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java index c455e9c99..1d7b6aa68 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java @@ -29,6 +29,7 @@ import org.apache.iceberg.catalog.Namespace; import org.apache.iceberg.catalog.TableIdentifier; import org.apache.iceberg.exceptions.NotAuthorizedException; import org.apache.iceberg.rest.responses.ErrorResponse; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.admin.model.AddGrantRequest; import org.apache.polaris.core.admin.model.AuthenticationParameters; import org.apache.polaris.core.admin.model.AwsStorageConfigInfo; @@ -95,6 +96,7 @@ public class PolarisServiceImpl PolarisPrincipalsApiService, PolarisPrincipalRolesApiService { private static final Logger LOGGER = LoggerFactory.getLogger(PolarisServiceImpl.class); + private final PolarisDiagnostics diagnostics; private final ResolutionManifestFactory resolutionManifestFactory; private final PolarisAuthorizer polarisAuthorizer; private final MetaStoreManagerFactory metaStoreManagerFactory; @@ -105,12 +107,14 @@ public class PolarisServiceImpl @Inject public PolarisServiceImpl( + PolarisDiagnostics diagnostics, ResolutionManifestFactory resolutionManifestFactory, MetaStoreManagerFactory metaStoreManagerFactory, UserSecretsManagerFactory userSecretsManagerFactory, PolarisAuthorizer polarisAuthorizer, CallContext callContext, ReservedProperties reservedProperties) { + this.diagnostics = diagnostics; this.resolutionManifestFactory = resolutionManifestFactory; this.metaStoreManagerFactory = metaStoreManagerFactory; this.userSecretsManagerFactory = userSecretsManagerFactory; @@ -132,6 +136,7 @@ public class PolarisServiceImpl UserSecretsManager userSecretsManager = userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext); return new PolarisAdminService( + diagnostics, callContext, resolutionManifestFactory, metaStoreManager, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/auth/DefaultActiveRolesProvider.java b/runtime/service/src/main/java/org/apache/polaris/service/auth/DefaultActiveRolesProvider.java index a27d57476..5783c8b82 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/auth/DefaultActiveRolesProvider.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/auth/DefaultActiveRolesProvider.java @@ -29,6 +29,7 @@ import java.util.stream.Collectors; import org.apache.iceberg.exceptions.NotAuthorizedException; import org.apache.iceberg.exceptions.ServiceFailureException; import org.apache.polaris.core.PolarisCallContext; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.auth.PolarisPrincipal; import org.apache.polaris.core.context.CallContext; import org.apache.polaris.core.entity.PolarisEntity; @@ -52,6 +53,7 @@ import org.slf4j.LoggerFactory; public class DefaultActiveRolesProvider implements ActiveRolesProvider { private static final Logger LOGGER = LoggerFactory.getLogger(DefaultActiveRolesProvider.class); + @Inject PolarisDiagnostics diagnostics; @Inject CallContext callContext; @Inject MetaStoreManagerFactory metaStoreManagerFactory; @@ -77,13 +79,11 @@ public class DefaultActiveRolesProvider implements ActiveRolesProvider { PolarisCallContext polarisContext = callContext.getPolarisCallContext(); LoadGrantsResult principalGrantResults = metaStoreManager.loadGrantsToGrantee(polarisContext, principal); - polarisContext - .getDiagServices() - .check( - principalGrantResults.isSuccess(), - "Failed to resolve principal roles for principal name={} id={}", - principal.getName(), - principal.getId()); + diagnostics.check( + principalGrantResults.isSuccess(), + "Failed to resolve principal roles for principal name={} id={}", + principal.getName(), + principal.getId()); if (!principalGrantResults.isSuccess()) { LOGGER.warn( "Failed to resolve principal roles for principal name={} id={}", diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/common/CatalogHandler.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/common/CatalogHandler.java index 2d08ab2db..89a2e2230 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/common/CatalogHandler.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/common/CatalogHandler.java @@ -72,6 +72,7 @@ public abstract class CatalogHandler { protected final SecurityContext securityContext; public CatalogHandler( + PolarisDiagnostics diagnostics, CallContext callContext, ResolutionManifestFactory resolutionManifestFactory, SecurityContext securityContext, @@ -79,8 +80,8 @@ public abstract class CatalogHandler { PolarisAuthorizer authorizer, UserSecretsManager userSecretsManager, Instance<ExternalCatalogFactory> externalCatalogFactories) { + this.diagnostics = diagnostics; this.callContext = callContext; - this.diagnostics = callContext.getPolarisCallContext().getDiagServices(); this.realmConfig = callContext.getRealmConfig(); this.resolutionManifestFactory = resolutionManifestFactory; this.catalogName = catalogName; diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java index befe9907f..650c747dc 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogAdapter.java @@ -25,6 +25,7 @@ import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.iceberg.catalog.TableIdentifier; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.auth.PolarisAuthorizer; import org.apache.polaris.core.catalog.ExternalCatalogFactory; import org.apache.polaris.core.config.FeatureConfiguration; @@ -50,6 +51,7 @@ public class GenericTableCatalogAdapter private static final Logger LOGGER = LoggerFactory.getLogger(GenericTableCatalogAdapter.class); + private final PolarisDiagnostics diagnostics; private final RealmContext realmContext; private final RealmConfig realmConfig; private final CallContext callContext; @@ -63,6 +65,7 @@ public class GenericTableCatalogAdapter @Inject public GenericTableCatalogAdapter( + PolarisDiagnostics diagnostics, RealmContext realmContext, CallContext callContext, ResolutionManifestFactory resolutionManifestFactory, @@ -72,6 +75,7 @@ public class GenericTableCatalogAdapter ReservedProperties reservedProperties, UserSecretsManager userSecretsManager, @Any Instance<ExternalCatalogFactory> externalCatalogFactories) { + this.diagnostics = diagnostics; this.realmContext = realmContext; this.callContext = callContext; this.realmConfig = callContext.getRealmConfig(); @@ -91,6 +95,7 @@ public class GenericTableCatalogAdapter validatePrincipal(securityContext); return new GenericTableCatalogHandler( + diagnostics, callContext, resolutionManifestFactory, metaStoreManager, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogHandler.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogHandler.java index 8881fb19d..144557269 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogHandler.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/generic/GenericTableCatalogHandler.java @@ -25,6 +25,7 @@ import java.util.LinkedHashSet; import java.util.Map; import org.apache.iceberg.catalog.Namespace; import org.apache.iceberg.catalog.TableIdentifier; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.auth.PolarisAuthorizableOperation; import org.apache.polaris.core.auth.PolarisAuthorizer; import org.apache.polaris.core.catalog.ExternalCatalogFactory; @@ -54,6 +55,7 @@ public class GenericTableCatalogHandler extends CatalogHandler { private GenericTableCatalog genericTableCatalog; public GenericTableCatalogHandler( + PolarisDiagnostics diagnostics, CallContext callContext, ResolutionManifestFactory resolutionManifestFactory, PolarisMetaStoreManager metaStoreManager, @@ -63,6 +65,7 @@ public class GenericTableCatalogHandler extends CatalogHandler { UserSecretsManager userSecretsManager, Instance<ExternalCatalogFactory> externalCatalogFactories) { super( + diagnostics, callContext, resolutionManifestFactory, securityContext, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalog.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalog.java index 03aa41c80..a8428873d 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalog.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalog.java @@ -88,6 +88,7 @@ import org.apache.iceberg.view.ViewOperations; import org.apache.iceberg.view.ViewProperties; import org.apache.iceberg.view.ViewUtil; import org.apache.polaris.core.PolarisCallContext; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.admin.model.StorageConfigInfo; import org.apache.polaris.core.catalog.PolarisCatalogHelpers; import org.apache.polaris.core.config.BehaviorChangeConfiguration; @@ -166,6 +167,7 @@ public class IcebergCatalog extends BaseMetastoreViewCatalog || isStorageProviderRetryableException(Throwables.getRootCause(ex))); }; + private final PolarisDiagnostics diagnostics; private final StorageCredentialCache storageCredentialCache; private final ResolverFactory resolverFactory; private final CallContext callContext; @@ -196,6 +198,7 @@ public class IcebergCatalog extends BaseMetastoreViewCatalog * @param taskExecutor Executor we use to register cleanup task handlers */ public IcebergCatalog( + PolarisDiagnostics diagnostics, StorageCredentialCache storageCredentialCache, ResolverFactory resolverFactory, PolarisMetaStoreManager metaStoreManager, @@ -205,6 +208,7 @@ public class IcebergCatalog extends BaseMetastoreViewCatalog TaskExecutor taskExecutor, FileIOFactory fileIOFactory, PolarisEventListener polarisEventListener) { + this.diagnostics = diagnostics; this.storageCredentialCache = storageCredentialCache; this.resolverFactory = resolverFactory; this.callContext = callContext; @@ -364,7 +368,7 @@ public class IcebergCatalog extends BaseMetastoreViewCatalog "Namespace does not exist: %s", tableIdentifier.namespace()); } List<PolarisEntity> namespacePath = resolvedNamespace.getRawFullPath(); - String namespaceLocation = resolveLocationForPath(callContext, namespacePath); + String namespaceLocation = resolveLocationForPath(diagnostics, namespacePath); return SLASH.join(namespaceLocation, tableIdentifier.name()); } } @@ -528,14 +532,14 @@ public class IcebergCatalog extends BaseMetastoreViewCatalog ? getResolvedParentNamespace(namespace).getRawFullPath() : List.of(resolvedEntityView.getResolvedReferenceCatalogEntity().getRawLeafEntity()); - String parentLocation = resolveLocationForPath(callContext, parentPath); + String parentLocation = resolveLocationForPath(diagnostics, parentPath); return parentLocation + "/" + namespace.level(namespace.length() - 1); } } private static @Nonnull String resolveLocationForPath( - @Nonnull CallContext callContext, List<PolarisEntity> parentPath) { + @Nonnull PolarisDiagnostics diagnostics, List<PolarisEntity> parentPath) { // always take the first object. If it has the base-location, stop there AtomicBoolean foundBaseLocation = new AtomicBoolean(false); return parentPath.reversed().stream() @@ -548,24 +552,21 @@ public class IcebergCatalog extends BaseMetastoreViewCatalog .toList() .reversed() .stream() - .map(entity -> baseLocation(callContext, entity)) + .map(entity -> baseLocation(diagnostics, entity)) .map(IcebergCatalog::stripLeadingTrailingSlash) .collect(Collectors.joining("/")); } private static @Nullable String baseLocation( - @Nonnull CallContext callContext, PolarisEntity entity) { + @Nonnull PolarisDiagnostics diagnostics, PolarisEntity entity) { if (entity.getType().equals(PolarisEntityType.CATALOG)) { CatalogEntity catEntity = CatalogEntity.of(entity); String catalogDefaultBaseLocation = catEntity.getBaseLocation(); - callContext - .getPolarisCallContext() - .getDiagServices() - .checkNotNull( - catalogDefaultBaseLocation, - "Tried to resolve location with catalog with null default base location", - "catalog = {}", - catEntity); + diagnostics.checkNotNull( + catalogDefaultBaseLocation, + "Tried to resolve location with catalog with null default base location", + "catalog = {}", + catEntity); return catalogDefaultBaseLocation; } else { String baseLocation = @@ -574,14 +575,11 @@ public class IcebergCatalog extends BaseMetastoreViewCatalog return baseLocation; } else { String entityName = entity.getName(); - callContext - .getPolarisCallContext() - .getDiagServices() - .checkNotNull( - entityName, - "Tried to resolve location with entity without base location or name", - "entity = {}", - entity); + diagnostics.checkNotNull( + entityName, + "Tried to resolve location with entity without base location or name", + "entity = {}", + entity); return entityName; } } @@ -1150,7 +1148,11 @@ public class IcebergCatalog extends BaseMetastoreViewCatalog siblingTables.size() + siblingNamespaces.size()); PolarisResolutionManifest resolutionManifest = new PolarisResolutionManifest( - callContext, resolverFactory, securityContext, parentPath.getFirst().getName()); + diagnostics, + callContext, + resolverFactory, + securityContext, + parentPath.getFirst().getName()); siblingTables.forEach( tbl -> resolutionManifest.addPath( diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java index 860476cf8..1b0ea9b02 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogAdapter.java @@ -61,6 +61,7 @@ import org.apache.iceberg.rest.requests.UpdateTableRequest; import org.apache.iceberg.rest.responses.ConfigResponse; import org.apache.iceberg.rest.responses.ImmutableLoadCredentialsResponse; import org.apache.iceberg.rest.responses.LoadTableResponse; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.auth.PolarisAuthorizer; import org.apache.polaris.core.auth.PolarisPrincipal; import org.apache.polaris.core.catalog.ExternalCatalogFactory; @@ -138,6 +139,7 @@ public class IcebergCatalogAdapter .add(Endpoint.create("POST", ResourcePaths.V1_TRANSACTIONS_COMMIT)) .build(); + private final PolarisDiagnostics diagnostics; private final RealmContext realmContext; private final CallContext callContext; private final RealmConfig realmConfig; @@ -154,6 +156,7 @@ public class IcebergCatalogAdapter @Inject public IcebergCatalogAdapter( + PolarisDiagnostics diagnostics, RealmContext realmContext, CallContext callContext, CallContextCatalogFactory catalogFactory, @@ -166,6 +169,7 @@ public class IcebergCatalogAdapter ReservedProperties reservedProperties, CatalogHandlerUtils catalogHandlerUtils, @Any Instance<ExternalCatalogFactory> externalCatalogFactories) { + this.diagnostics = diagnostics; this.realmContext = realmContext; this.callContext = callContext; this.realmConfig = callContext.getRealmConfig(); @@ -206,6 +210,7 @@ public class IcebergCatalogAdapter validatePrincipal(securityContext); return new IcebergCatalogHandler( + diagnostics, callContext, resolutionManifestFactory, metaStoreManager, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogHandler.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogHandler.java index 57b8a990a..694858c45 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogHandler.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogHandler.java @@ -73,6 +73,7 @@ import org.apache.iceberg.rest.responses.ListTablesResponse; import org.apache.iceberg.rest.responses.LoadTableResponse; import org.apache.iceberg.rest.responses.LoadViewResponse; import org.apache.iceberg.rest.responses.UpdateNamespacePropertiesResponse; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.auth.PolarisAuthorizableOperation; import org.apache.polaris.core.auth.PolarisAuthorizer; import org.apache.polaris.core.catalog.ExternalCatalogFactory; @@ -137,6 +138,7 @@ public class IcebergCatalogHandler extends CatalogHandler implements AutoCloseab public static final String SNAPSHOTS_REFS = "refs"; public IcebergCatalogHandler( + PolarisDiagnostics diagnostics, CallContext callContext, ResolutionManifestFactory resolutionManifestFactory, PolarisMetaStoreManager metaStoreManager, @@ -149,6 +151,7 @@ public class IcebergCatalogHandler extends CatalogHandler implements AutoCloseab CatalogHandlerUtils catalogHandlerUtils, Instance<ExternalCatalogFactory> externalCatalogFactories) { super( + diagnostics, callContext, resolutionManifestFactory, securityContext, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java index b2fa94f49..98bb3d9f1 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogAdapter.java @@ -26,6 +26,7 @@ import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.SecurityContext; import org.apache.iceberg.catalog.Namespace; import org.apache.iceberg.rest.RESTUtil; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.auth.PolarisAuthorizer; import org.apache.polaris.core.catalog.ExternalCatalogFactory; import org.apache.polaris.core.config.FeatureConfiguration; @@ -54,6 +55,7 @@ import org.slf4j.LoggerFactory; public class PolicyCatalogAdapter implements PolarisCatalogPolicyApiService, CatalogAdapter { private static final Logger LOGGER = LoggerFactory.getLogger(PolicyCatalogAdapter.class); + private final PolarisDiagnostics diagnostics; private final RealmContext realmContext; private final RealmConfig realmConfig; private final CallContext callContext; @@ -66,6 +68,7 @@ public class PolicyCatalogAdapter implements PolarisCatalogPolicyApiService, Cat @Inject public PolicyCatalogAdapter( + PolarisDiagnostics diagnostics, RealmContext realmContext, CallContext callContext, ResolutionManifestFactory resolutionManifestFactory, @@ -74,6 +77,7 @@ public class PolicyCatalogAdapter implements PolarisCatalogPolicyApiService, Cat CatalogPrefixParser prefixParser, UserSecretsManager userSecretsManager, @Any Instance<ExternalCatalogFactory> externalCatalogFactories) { + this.diagnostics = diagnostics; this.realmContext = realmContext; this.callContext = callContext; this.realmConfig = callContext.getRealmConfig(); @@ -91,6 +95,7 @@ public class PolicyCatalogAdapter implements PolarisCatalogPolicyApiService, Cat validatePrincipal(securityContext); return new PolicyCatalogHandler( + diagnostics, callContext, resolutionManifestFactory, metaStoreManager, diff --git a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogHandler.java b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogHandler.java index 21027a342..96012a2c0 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogHandler.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/catalog/policy/PolicyCatalogHandler.java @@ -30,6 +30,7 @@ import org.apache.iceberg.catalog.TableIdentifier; import org.apache.iceberg.exceptions.NoSuchNamespaceException; import org.apache.iceberg.exceptions.NoSuchTableException; import org.apache.iceberg.exceptions.NotFoundException; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.auth.PolarisAuthorizableOperation; import org.apache.polaris.core.auth.PolarisAuthorizer; import org.apache.polaris.core.catalog.ExternalCatalogFactory; @@ -63,6 +64,7 @@ public class PolicyCatalogHandler extends CatalogHandler { private PolicyCatalog policyCatalog; public PolicyCatalogHandler( + PolarisDiagnostics diagnostics, CallContext callContext, ResolutionManifestFactory resolutionManifestFactory, PolarisMetaStoreManager metaStoreManager, @@ -72,6 +74,7 @@ public class PolicyCatalogHandler extends CatalogHandler { UserSecretsManager userSecretsManager, Instance<ExternalCatalogFactory> externalCatalogFactories) { super( + diagnostics, callContext, resolutionManifestFactory, securityContext, 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 3cf0c0dba..4d954258f 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 @@ -103,13 +103,14 @@ public class ServiceProducers { @Produces @ApplicationScoped public StorageCredentialCache storageCredentialCache( - StorageCredentialCacheConfig storageCredentialCacheConfig) { - return new StorageCredentialCache(storageCredentialCacheConfig); + PolarisDiagnostics diagnostics, StorageCredentialCacheConfig storageCredentialCacheConfig) { + return new StorageCredentialCache(diagnostics, storageCredentialCacheConfig); } @Produces @ApplicationScoped public ResolverFactory resolverFactory( + PolarisDiagnostics diagnostics, MetaStoreManagerFactory metaStoreManagerFactory, PolarisMetaStoreManager polarisMetaStoreManager) { return (callContext, securityContext, referenceCatalogName) -> { @@ -117,6 +118,7 @@ public class ServiceProducers { metaStoreManagerFactory.getOrCreateEntityCache( callContext.getRealmContext(), callContext.getRealmConfig()); return new Resolver( + diagnostics, callContext.getPolarisCallContext(), polarisMetaStoreManager, securityContext, @@ -127,8 +129,9 @@ public class ServiceProducers { @Produces @ApplicationScoped - public ResolutionManifestFactory resolutionManifestFactory(ResolverFactory resolverFactory) { - return new ResolutionManifestFactoryImpl(resolverFactory); + public ResolutionManifestFactory resolutionManifestFactory( + PolarisDiagnostics diagnostics, ResolverFactory resolverFactory) { + return new ResolutionManifestFactoryImpl(diagnostics, resolverFactory); } @Produces @@ -149,11 +152,10 @@ public class ServiceProducers { @RequestScoped public CallContext polarisCallContext( RealmContext realmContext, - PolarisDiagnostics diagServices, PolarisConfigurationStore configurationStore, MetaStoreManagerFactory metaStoreManagerFactory) { BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSession(realmContext); - return new PolarisCallContext(realmContext, metaStoreSession, diagServices, configurationStore); + return new PolarisCallContext(realmContext, metaStoreSession, configurationStore); } @Produces diff --git a/runtime/service/src/main/java/org/apache/polaris/service/context/catalog/PolarisCallContextCatalogFactory.java b/runtime/service/src/main/java/org/apache/polaris/service/context/catalog/PolarisCallContextCatalogFactory.java index 31360ae31..9cd8fd4c3 100644 --- a/runtime/service/src/main/java/org/apache/polaris/service/context/catalog/PolarisCallContextCatalogFactory.java +++ b/runtime/service/src/main/java/org/apache/polaris/service/context/catalog/PolarisCallContextCatalogFactory.java @@ -25,6 +25,7 @@ import java.util.HashMap; import java.util.Map; import org.apache.iceberg.CatalogProperties; import org.apache.iceberg.catalog.Catalog; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.auth.PolarisPrincipal; import org.apache.polaris.core.context.CallContext; import org.apache.polaris.core.entity.CatalogEntity; @@ -45,6 +46,7 @@ public class PolarisCallContextCatalogFactory implements CallContextCatalogFacto private static final Logger LOGGER = LoggerFactory.getLogger(PolarisCallContextCatalogFactory.class); + private final PolarisDiagnostics diagnostics; private final TaskExecutor taskExecutor; private final FileIOFactory fileIOFactory; private final StorageCredentialCache storageCredentialCache; @@ -54,12 +56,14 @@ public class PolarisCallContextCatalogFactory implements CallContextCatalogFacto @Inject public PolarisCallContextCatalogFactory( + PolarisDiagnostics diagnostics, StorageCredentialCache storageCredentialCache, ResolverFactory resolverFactory, MetaStoreManagerFactory metaStoreManagerFactory, TaskExecutor taskExecutor, FileIOFactory fileIOFactory, PolarisEventListener polarisEventListener) { + this.diagnostics = diagnostics; this.storageCredentialCache = storageCredentialCache; this.resolverFactory = resolverFactory; this.metaStoreManagerFactory = metaStoreManagerFactory; @@ -84,6 +88,7 @@ public class PolarisCallContextCatalogFactory implements CallContextCatalogFacto IcebergCatalog catalogInstance = new IcebergCatalog( + diagnostics, storageCredentialCache, resolverFactory, metaStoreManagerFactory.getOrCreateMetaStoreManager(context.getRealmContext()), diff --git a/runtime/service/src/test/java/org/apache/polaris/service/admin/ManagementServiceTest.java b/runtime/service/src/test/java/org/apache/polaris/service/admin/ManagementServiceTest.java index 088a8ae1e..f69e18b7d 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/admin/ManagementServiceTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/admin/ManagementServiceTest.java @@ -237,6 +237,7 @@ public class ManagementServiceTest { private PolarisAdminService setupPolarisAdminService( PolarisMetaStoreManager metaStoreManager, PolarisCallContext callContext) { return new PolarisAdminService( + services.polarisDiagnostics(), callContext, services.resolutionManifestFactory(), metaStoreManager, diff --git a/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAdminServiceAuthzTest.java b/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAdminServiceAuthzTest.java index 9294d853f..ad5fa0ce6 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAdminServiceAuthzTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAdminServiceAuthzTest.java @@ -49,6 +49,7 @@ public class PolarisAdminServiceAuthzTest extends PolarisAuthzTestBase { final PolarisPrincipal authenticatedPrincipal = PolarisPrincipal.of(principalEntity, activatedPrincipalRoles); return new PolarisAdminService( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, diff --git a/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAdminServiceTest.java b/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAdminServiceTest.java index 136d6bf25..60e055942 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAdminServiceTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisAdminServiceTest.java @@ -29,6 +29,7 @@ import java.util.List; import org.apache.iceberg.catalog.Namespace; import org.apache.iceberg.exceptions.NotFoundException; import org.apache.polaris.core.PolarisCallContext; +import org.apache.polaris.core.PolarisDefaultDiagServiceImpl; import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.auth.PolarisAuthorizer; import org.apache.polaris.core.auth.PolarisPrincipal; @@ -52,10 +53,9 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; public class PolarisAdminServiceTest { - + private PolarisDiagnostics diagnostics = new PolarisDefaultDiagServiceImpl(); @Mock private CallContext callContext; @Mock private PolarisCallContext polarisCallContext; - @Mock private PolarisDiagnostics polarisDiagnostics; @Mock private ResolutionManifestFactory resolutionManifestFactory; @Mock private PolarisMetaStoreManager metaStoreManager; @Mock private UserSecretsManager userSecretsManager; @@ -73,10 +73,10 @@ public class PolarisAdminServiceTest { MockitoAnnotations.openMocks(this); when(securityContext.getUserPrincipal()).thenReturn(authenticatedPrincipal); when(callContext.getPolarisCallContext()).thenReturn(polarisCallContext); - when(polarisCallContext.getDiagServices()).thenReturn(polarisDiagnostics); adminService = new PolarisAdminService( + diagnostics, callContext, resolutionManifestFactory, metaStoreManager, 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 2717ee71c..fbdf06661 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 @@ -230,10 +230,7 @@ public abstract class PolarisAuthzTestBase { polarisContext = new PolarisCallContext( - realmContext, - managerFactory.getOrCreateSession(realmContext), - diagServices, - configurationStore); + realmContext, managerFactory.getOrCreateSession(realmContext), configurationStore); callContext = polarisContext; realmConfig = polarisContext.getRealmConfig(); @@ -246,6 +243,7 @@ public abstract class PolarisAuthzTestBase { this.adminService = new PolarisAdminService( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, @@ -453,6 +451,7 @@ public abstract class PolarisAuthzTestBase { callContext, resolutionManifestFactory, securityContext, CATALOG_NAME); this.baseCatalog = new IcebergCatalog( + diagServices, storageCredentialCache, resolverFactory, metaStoreManager, @@ -479,11 +478,12 @@ public abstract class PolarisAuthzTestBase { @SuppressWarnings("unused") // Required by CDI protected TestPolarisCallContextCatalogFactory() { - this(null, null, null, null, null, null); + this(null, null, null, null, null, null, null); } @Inject public TestPolarisCallContextCatalogFactory( + PolarisDiagnostics diagnostics, StorageCredentialCache storageCredentialCache, ResolverFactory resolverFactory, MetaStoreManagerFactory metaStoreManagerFactory, @@ -491,6 +491,7 @@ public abstract class PolarisAuthzTestBase { FileIOFactory fileIOFactory, PolarisEventListener polarisEventListener) { super( + diagnostics, storageCredentialCache, resolverFactory, metaStoreManagerFactory, diff --git a/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisServiceImplTest.java b/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisServiceImplTest.java index 75adb59f5..09929bac2 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisServiceImplTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisServiceImplTest.java @@ -24,6 +24,8 @@ import static org.mockito.Mockito.when; import java.lang.reflect.Method; import java.util.List; +import org.apache.polaris.core.PolarisDefaultDiagServiceImpl; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.admin.model.AuthenticationParameters; import org.apache.polaris.core.admin.model.Catalog; import org.apache.polaris.core.admin.model.CatalogProperties; @@ -46,6 +48,7 @@ import org.mockito.Mockito; public class PolarisServiceImplTest { + private final PolarisDiagnostics diagnostics = new PolarisDefaultDiagServiceImpl(); private ResolutionManifestFactory resolutionManifestFactory; private MetaStoreManagerFactory metaStoreManagerFactory; private UserSecretsManagerFactory userSecretsManagerFactory; @@ -75,6 +78,7 @@ public class PolarisServiceImplTest { polarisService = new PolarisServiceImpl( + diagnostics, resolutionManifestFactory, metaStoreManagerFactory, userSecretsManagerFactory, 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 778a27197..be4276598 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 class JWTRSAKeyPairTest { 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 ac870e6f8..43efedb6a 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/generic/AbstractPolarisGenericTableCatalogTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/generic/AbstractPolarisGenericTableCatalogTest.java index 232302b80..de4e56992 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/generic/AbstractPolarisGenericTableCatalogTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/generic/AbstractPolarisGenericTableCatalogTest.java @@ -152,7 +152,6 @@ public abstract class AbstractPolarisGenericTableCatalogTest { new PolarisCallContext( realmContext, metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, configurationStore); realmConfig = polarisContext.getRealmConfig(); @@ -169,6 +168,7 @@ public abstract class AbstractPolarisGenericTableCatalogTest { adminService = new PolarisAdminService( + diagServices, polarisContext, resolutionManifestFactory, metaStoreManager, @@ -235,6 +235,7 @@ public abstract class AbstractPolarisGenericTableCatalogTest { this.genericTableCatalog.initialize(CATALOG_NAME, Map.of()); this.icebergCatalog = new IcebergCatalog( + diagServices, storageCredentialCache, resolverFactory, metaStoreManager, diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/generic/PolarisGenericTableCatalogHandlerAuthzTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/generic/PolarisGenericTableCatalogHandlerAuthzTest.java index afa0f440f..b1296177b 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/generic/PolarisGenericTableCatalogHandlerAuthzTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/generic/PolarisGenericTableCatalogHandlerAuthzTest.java @@ -46,6 +46,7 @@ public class PolarisGenericTableCatalogHandlerAuthzTest extends PolarisAuthzTest PolarisPrincipal authenticatedPrincipal = PolarisPrincipal.of(principalEntity, activatedPrincipalRoles); return new GenericTableCatalogHandler( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/AbstractIcebergCatalogTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/AbstractIcebergCatalogTest.java index fca6a969e..38811c39c 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/AbstractIcebergCatalogTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/AbstractIcebergCatalogTest.java @@ -257,7 +257,9 @@ public abstract class AbstractIcebergCatalogTest extends CatalogTests<IcebergCat @Nullable protected abstract EntityCache createEntityCache( - RealmConfig realmConfig, PolarisMetaStoreManager metaStoreManager); + PolarisDiagnostics diagnostics, + RealmConfig realmConfig, + PolarisMetaStoreManager metaStoreManager); protected void bootstrapRealm(String realmName) {} @@ -280,14 +282,14 @@ public abstract class AbstractIcebergCatalogTest extends CatalogTests<IcebergCat new PolarisCallContext( realmContext, metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, configurationStore); realmConfig = polarisContext.getRealmConfig(); - EntityCache entityCache = createEntityCache(realmConfig, metaStoreManager); + EntityCache entityCache = createEntityCache(diagServices, realmConfig, metaStoreManager); resolverFactory = (callContext, securityContext, referenceCatalogName) -> new Resolver( + diagServices, callContext.getPolarisCallContext(), metaStoreManager, securityContext, @@ -295,7 +297,7 @@ public abstract class AbstractIcebergCatalogTest extends CatalogTests<IcebergCat referenceCatalogName); QuarkusMock.installMockForType(resolverFactory, ResolverFactory.class); - resolutionManifestFactory = new ResolutionManifestFactoryImpl(resolverFactory); + resolutionManifestFactory = new ResolutionManifestFactoryImpl(diagServices, resolverFactory); PrincipalEntity rootPrincipal = metaStoreManager.findRootPrincipal(polarisContext).orElseThrow(); @@ -310,6 +312,7 @@ public abstract class AbstractIcebergCatalogTest extends CatalogTests<IcebergCat adminService = new PolarisAdminService( + diagServices, polarisContext, resolutionManifestFactory, metaStoreManager, @@ -439,6 +442,7 @@ public abstract class AbstractIcebergCatalogTest extends CatalogTests<IcebergCat polarisContext, resolutionManifestFactory, securityContext, catalogName); TaskExecutor taskExecutor = Mockito.mock(TaskExecutor.class); return new IcebergCatalog( + diagServices, storageCredentialCache, resolverFactory, metaStoreManager, diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/AbstractIcebergCatalogViewTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/AbstractIcebergCatalogViewTest.java index 51c1d08f5..d4edde2c4 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/AbstractIcebergCatalogViewTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/AbstractIcebergCatalogViewTest.java @@ -162,7 +162,6 @@ public abstract class AbstractIcebergCatalogViewTest extends ViewCatalogTests<Ic new PolarisCallContext( realmContext, metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, configurationStore); realmConfig = polarisContext.getRealmConfig(); @@ -179,6 +178,7 @@ public abstract class AbstractIcebergCatalogViewTest extends ViewCatalogTests<Ic PolarisAdminService adminService = new PolarisAdminService( + diagServices, polarisContext, resolutionManifestFactory, metaStoreManager, @@ -213,6 +213,7 @@ public abstract class AbstractIcebergCatalogViewTest extends ViewCatalogTests<Ic testPolarisEventListener = (TestPolarisEventListener) polarisEventListener; this.catalog = new IcebergCatalog( + diagServices, storageCredentialCache, resolverFactory, metaStoreManager, diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogHandlerAuthzTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogHandlerAuthzTest.java index 676a6d635..5211a514a 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogHandlerAuthzTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogHandlerAuthzTest.java @@ -101,6 +101,7 @@ public class IcebergCatalogHandlerAuthzTest extends PolarisAuthzTestBase { PolarisPrincipal authenticatedPrincipal = PolarisPrincipal.of(principalEntity, activatedPrincipalRoles); return new IcebergCatalogHandler( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, @@ -240,6 +241,7 @@ public class IcebergCatalogHandlerAuthzTest extends PolarisAuthzTestBase { Set.of(PRINCIPAL_ROLE1, PRINCIPAL_ROLE2)); IcebergCatalogHandler wrapper = new IcebergCatalogHandler( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, @@ -276,6 +278,7 @@ public class IcebergCatalogHandlerAuthzTest extends PolarisAuthzTestBase { PrincipalEntity.of(refreshPrincipal), Set.of(PRINCIPAL_ROLE1, PRINCIPAL_ROLE2)); IcebergCatalogHandler refreshedWrapper = new IcebergCatalogHandler( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, @@ -1765,6 +1768,7 @@ public class IcebergCatalogHandlerAuthzTest extends PolarisAuthzTestBase { PolarisCallContextCatalogFactory factory = new PolarisCallContextCatalogFactory( + diagServices, storageCredentialCache, resolverFactory, managerFactory, diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogRelationalNoEntityCacheTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogRelationalNoEntityCacheTest.java index bf8298e3c..1060b6a01 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogRelationalNoEntityCacheTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogRelationalNoEntityCacheTest.java @@ -21,6 +21,7 @@ package org.apache.polaris.service.catalog.iceberg; import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.TestProfile; import jakarta.annotation.Nullable; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.config.RealmConfig; import org.apache.polaris.core.persistence.PolarisMetaStoreManager; import org.apache.polaris.core.persistence.cache.InMemoryEntityCache; @@ -32,7 +33,9 @@ public class IcebergCatalogRelationalNoEntityCacheTest extends AbstractIcebergCa @Nullable @Override protected InMemoryEntityCache createEntityCache( - RealmConfig realmConfig, PolarisMetaStoreManager metaStoreManager) { + PolarisDiagnostics diagnostics, + RealmConfig realmConfig, + PolarisMetaStoreManager metaStoreManager) { return null; } } diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogRelationalWithEntityCacheTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogRelationalWithEntityCacheTest.java index 881f12eb5..c589e913e 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogRelationalWithEntityCacheTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalogRelationalWithEntityCacheTest.java @@ -21,6 +21,7 @@ package org.apache.polaris.service.catalog.iceberg; import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.TestProfile; import jakarta.annotation.Nullable; +import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.config.RealmConfig; import org.apache.polaris.core.persistence.PolarisMetaStoreManager; import org.apache.polaris.core.persistence.cache.InMemoryEntityCache; @@ -32,7 +33,9 @@ public class IcebergCatalogRelationalWithEntityCacheTest extends AbstractIceberg @Nullable @Override protected InMemoryEntityCache createEntityCache( - RealmConfig realmConfig, PolarisMetaStoreManager metaStoreManager) { - return new InMemoryEntityCache(realmConfig, metaStoreManager); + PolarisDiagnostics diagnostics, + RealmConfig realmConfig, + PolarisMetaStoreManager metaStoreManager) { + return new InMemoryEntityCache(diagnostics, realmConfig, metaStoreManager); } } diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/io/FileIOFactoryTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/io/FileIOFactoryTest.java index 5c72f1506..03fd51d46 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/io/FileIOFactoryTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/io/FileIOFactoryTest.java @@ -225,6 +225,7 @@ public class FileIOFactoryTest { CATALOG_NAME); IcebergCatalog polarisCatalog = new IcebergCatalog( + services.polarisDiagnostics(), services.storageCredentialCache(), services.resolverFactory(), services.metaStoreManagerFactory().getOrCreateMetaStoreManager(realmContext), diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/policy/AbstractPolicyCatalogTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/policy/AbstractPolicyCatalogTest.java index bf514e127..e627f3cf5 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/policy/AbstractPolicyCatalogTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/policy/AbstractPolicyCatalogTest.java @@ -173,7 +173,6 @@ public abstract class AbstractPolicyCatalogTest { new PolarisCallContext( realmContext, metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, configurationStore); realmConfig = polarisContext.getRealmConfig(); @@ -190,6 +189,7 @@ public abstract class AbstractPolicyCatalogTest { adminService = new PolarisAdminService( + diagServices, polarisContext, resolutionManifestFactory, metaStoreManager, @@ -252,6 +252,7 @@ public abstract class AbstractPolicyCatalogTest { this.policyCatalog = new PolicyCatalog(metaStoreManager, polarisContext, passthroughView); this.icebergCatalog = new IcebergCatalog( + diagServices, storageCredentialCache, resolverFactory, metaStoreManager, diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/policy/PolicyCatalogHandlerAuthzTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/policy/PolicyCatalogHandlerAuthzTest.java index 3022ffdb0..990a9cff2 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/catalog/policy/PolicyCatalogHandlerAuthzTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/catalog/policy/PolicyCatalogHandlerAuthzTest.java @@ -51,6 +51,7 @@ public class PolicyCatalogHandlerAuthzTest extends PolarisAuthzTestBase { PolarisPrincipal authenticatedPrincipal = PolarisPrincipal.of(principalEntity, activatedPrincipalRoles); return new PolicyCatalogHandler( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, 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 2ab24c396..326664620 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 @@ -43,7 +43,6 @@ import org.apache.iceberg.catalog.TableIdentifier; import org.apache.iceberg.inmemory.InMemoryFileIO; import org.apache.iceberg.io.FileIO; import org.apache.polaris.core.PolarisCallContext; -import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.core.entity.AsyncTaskType; import org.apache.polaris.core.entity.TaskEntity; @@ -54,7 +53,6 @@ import org.junit.jupiter.api.Test; @QuarkusTest public class BatchFileCleanupTaskHandlerTest { - @Inject PolarisDiagnostics diagnostics; @Inject MetaStoreManagerFactory metaStoreManagerFactory; private final RealmContext realmContext = () -> "realmName"; @@ -64,7 +62,7 @@ public class BatchFileCleanupTaskHandlerTest { private PolarisCallContext newCallContext() { BasePersistence metaStore = metaStoreManagerFactory.getOrCreateSession(realmContext); - return new PolarisCallContext(realmContext, metaStore, diagnostics); + return new PolarisCallContext(realmContext, metaStore); } @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 828991798..99eacdbe2 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 @@ -39,7 +39,6 @@ import org.apache.iceberg.io.FileIO; import org.apache.iceberg.io.OutputFile; import org.apache.iceberg.io.PositionOutputStream; import org.apache.polaris.core.PolarisCallContext; -import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.context.RealmContext; import org.apache.polaris.core.entity.AsyncTaskType; import org.apache.polaris.core.entity.TaskEntity; @@ -50,7 +49,6 @@ import org.junit.jupiter.api.Test; @QuarkusTest class ManifestFileCleanupTaskHandlerTest { - @Inject PolarisDiagnostics diagnostics; @Inject MetaStoreManagerFactory metaStoreManagerFactory; private final RealmContext realmContext = () -> "realmName"; @@ -61,7 +59,7 @@ class ManifestFileCleanupTaskHandlerTest { private PolarisCallContext newCallContext() { BasePersistence metaStore = metaStoreManagerFactory.getOrCreateSession(realmContext); - return new PolarisCallContext(realmContext, metaStore, diagnostics); + return new PolarisCallContext(realmContext, metaStore); } @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 daedcb534..bcccff266 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 @@ -38,7 +38,6 @@ import org.apache.iceberg.catalog.TableIdentifier; import org.apache.iceberg.inmemory.InMemoryFileIO; import org.apache.iceberg.io.FileIO; import org.apache.polaris.core.PolarisCallContext; -import org.apache.polaris.core.PolarisDiagnostics; import org.apache.polaris.core.config.PolarisConfigurationStore; import org.apache.polaris.core.context.CallContext; import org.apache.polaris.core.context.RealmContext; @@ -61,7 +60,6 @@ class TableCleanupTaskHandlerTest { @Inject Clock clock; @Inject MetaStoreManagerFactory metaStoreManagerFactory; @Inject PolarisConfigurationStore configurationStore; - @Inject PolarisDiagnostics diagServices; private CallContext callContext; @@ -81,7 +79,6 @@ class TableCleanupTaskHandlerTest { new PolarisCallContext( realmContext, metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, configurationStore); } 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 eb5dd948d..b9e719122 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 @@ -109,8 +109,7 @@ public class PolarisIntegrationTestFixture { BasePersistence metaStoreSession = helper.metaStoreManagerFactory.getOrCreateSession(realmContext); PolarisCallContext polarisContext = - new PolarisCallContext( - realmContext, metaStoreSession, helper.diagServices, helper.configurationStore); + new PolarisCallContext(realmContext, metaStoreSession, 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 2cb9a483d..93bf2c538 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 @@ -124,7 +124,7 @@ public record TestServices( public static class Builder { private Clock clock = Clock.systemUTC(); - private PolarisDiagnostics polarisDiagnostics = new PolarisDefaultDiagServiceImpl(); + private PolarisDiagnostics diagnostics = new PolarisDefaultDiagServiceImpl(); private RealmContext realmContext = TEST_REALM; private Map<String, Object> config = Map.of(); private StsClient stsClient = Mockito.mock(StsClient.class); @@ -164,19 +164,18 @@ public record TestServices( () -> GoogleCredentials.create(new AccessToken(GCP_ACCESS_TOKEN, new Date()))); InMemoryPolarisMetaStoreManagerFactory metaStoreManagerFactory = new InMemoryPolarisMetaStoreManagerFactory( - clock, polarisDiagnostics, storageIntegrationProvider); + clock, diagnostics, storageIntegrationProvider); StorageCredentialCacheConfig storageCredentialCacheConfig = () -> 10_000; StorageCredentialCache storageCredentialCache = - new StorageCredentialCache(storageCredentialCacheConfig); + new StorageCredentialCache(diagnostics, storageCredentialCacheConfig); UserSecretsManagerFactory userSecretsManagerFactory = new UnsafeInMemorySecretsManagerFactory(); BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSession(realmContext); CallContext callContext = - new PolarisCallContext( - realmContext, metaStoreSession, polarisDiagnostics, configurationStore); + new PolarisCallContext(realmContext, metaStoreSession, configurationStore); RealmConfig realmConfig = callContext.getRealmConfig(); PolarisMetaStoreManager metaStoreManager = @@ -187,6 +186,7 @@ public record TestServices( ResolverFactory resolverFactory = (_callContext, securityContext, referenceCatalogName) -> new Resolver( + diagnostics, _callContext.getPolarisCallContext(), metaStoreManager, securityContext, @@ -194,7 +194,7 @@ public record TestServices( referenceCatalogName); ResolutionManifestFactory resolutionManifestFactory = - new ResolutionManifestFactoryImpl(resolverFactory); + new ResolutionManifestFactoryImpl(diagnostics, resolverFactory); UserSecretsManager userSecretsManager = userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext); @@ -206,6 +206,7 @@ public record TestServices( PolarisEventListener polarisEventListener = new TestPolarisEventListener(); CallContextCatalogFactory callContextFactory = new PolarisCallContextCatalogFactory( + diagnostics, storageCredentialCache, resolverFactory, metaStoreManagerFactory, @@ -224,6 +225,7 @@ public record TestServices( IcebergCatalogAdapter catalogService = new IcebergCatalogAdapter( + diagnostics, realmContext, callContext, callContextFactory, @@ -278,6 +280,7 @@ public record TestServices( PolarisCatalogsApi catalogsApi = new PolarisCatalogsApi( new PolarisServiceImpl( + diagnostics, resolutionManifestFactory, metaStoreManagerFactory, userSecretsManagerFactory, @@ -292,7 +295,7 @@ public record TestServices( restConfigurationApi, catalogService, configurationStore, - polarisDiagnostics, + diagnostics, storageCredentialCache, resolverFactory, resolutionManifestFactory, @@ -308,6 +311,6 @@ public record TestServices( public PolarisCallContext newCallContext() { BasePersistence metaStore = metaStoreManagerFactory.getOrCreateSession(realmContext); - return new PolarisCallContext(realmContext, metaStore, polarisDiagnostics, configurationStore); + return new PolarisCallContext(realmContext, metaStore, configurationStore); } }