From a409e9d390eaef55c9b464c59b78127d7cfe5aba Mon Sep 17 00:00:00 2001 From: Christopher Lambert <1204398+XN137@users.noreply.github.com> Date: Thu, 21 Aug 2025 10:12:58 +0200 Subject: [PATCH 1/2] Remove PolarisCallContext.getDiagServices usage --- .../jdbc/JdbcBasePersistenceImpl.java | 34 +++++----- .../jdbc/JdbcMetaStoreManagerFactory.java | 3 +- ...anagerWithJdbcBasePersistenceImplTest.java | 1 + .../polaris/core/PolarisCallContext.java | 4 -- .../LocalPolarisMetaStoreManagerFactory.java | 2 +- .../TransactionWorkspaceMetaStoreManager.java | 2 +- .../cache/InMemoryEntityCache.java | 43 ++++++------- .../resolver/PolarisResolutionManifest.java | 3 +- .../ResolutionManifestFactoryImpl.java | 8 ++- .../core/persistence/resolver/Resolver.java | 3 +- .../transactional/PolarisEntityResolver.java | 64 ++++++++++--------- .../TransactionalMetaStoreManagerImpl.java | 39 +++++++---- .../storage/cache/StorageCredentialCache.java | 11 ++-- .../core/persistence/ResolverTest.java | 2 - .../cache/InMemoryEntityCacheTest.java | 2 +- .../cache/StorageCredentialCacheTest.java | 6 +- .../core/persistence/BaseResolverTest.java | 6 +- .../service/admin/PolarisAdminService.java | 8 +-- .../service/admin/PolarisServiceImpl.java | 5 ++ .../auth/DefaultActiveRolesProvider.java | 14 ++-- .../catalog/common/CatalogHandler.java | 3 +- .../generic/GenericTableCatalogAdapter.java | 5 ++ .../generic/GenericTableCatalogHandler.java | 3 + .../catalog/iceberg/IcebergCatalog.java | 46 ++++++------- .../iceberg/IcebergCatalogAdapter.java | 5 ++ .../iceberg/IcebergCatalogHandler.java | 3 + .../catalog/policy/PolicyCatalogAdapter.java | 5 ++ .../catalog/policy/PolicyCatalogHandler.java | 3 + .../service/config/ServiceProducers.java | 11 ++-- .../PolarisCallContextCatalogFactory.java | 5 ++ .../service/admin/ManagementServiceTest.java | 1 + .../admin/PolarisAdminServiceAuthzTest.java | 1 + .../admin/PolarisAdminServiceTest.java | 6 +- .../service/admin/PolarisAuthzTestBase.java | 6 +- .../service/admin/PolarisServiceImplTest.java | 4 ++ ...bstractPolarisGenericTableCatalogTest.java | 2 + ...isGenericTableCatalogHandlerAuthzTest.java | 1 + .../iceberg/AbstractIcebergCatalogTest.java | 11 +++- .../AbstractIcebergCatalogViewTest.java | 2 + .../IcebergCatalogHandlerAuthzTest.java | 4 ++ ...ergCatalogRelationalNoEntityCacheTest.java | 5 +- ...gCatalogRelationalWithEntityCacheTest.java | 7 +- .../service/catalog/io/FileIOFactoryTest.java | 1 + .../policy/AbstractPolicyCatalogTest.java | 2 + .../policy/PolicyCatalogHandlerAuthzTest.java | 1 + .../apache/polaris/service/TestServices.java | 17 +++-- 46 files changed, 255 insertions(+), 165 deletions(-) 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 71f1d2e7aa..e43f6dbc8d 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.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 PolarisPrincipalSecrets rotatePrincipalSecrets( 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 void persistStorageIntegratio PolarisStorageIntegration 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 20acc3e036..648e459637 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 @@ private void initializeForRealm( realmId, () -> new JdbcBasePersistenceImpl( + diagnostics, datasourceOperations, secretsGenerator(realmId, rootCredentialsSet), storageIntegrationProvider, @@ -216,7 +217,7 @@ public synchronized EntityCache getOrCreateEntityCache( PolarisMetaStoreManager metaStoreManager = getOrCreateMetaStoreManager(realmContext); entityCacheMap.put( realmContext.getRealmIdentifier(), - new InMemoryEntityCache(realmConfig, metaStoreManager)); + new InMemoryEntityCache(diagnostics, realmConfig, metaStoreManager)); } return entityCacheMap.get(realmContext.getRealmIdentifier()); 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 f15da08e38..eaade92a49 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 @@ protected PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() { RealmContext realmContext = () -> "REALM"; JdbcBasePersistenceImpl basePersistence = new JdbcBasePersistenceImpl( + diagServices, datasourceOperations, RANDOM_SECRETS, Mockito.mock(), diff --git a/polaris-core/src/main/java/org/apache/polaris/core/PolarisCallContext.java b/polaris-core/src/main/java/org/apache/polaris/core/PolarisCallContext.java index 8878b9ef6a..e9cc831f7a 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 @@ -62,10 +62,6 @@ public BasePersistence getMetaStore() { return metaStore; } - public PolarisDiagnostics getDiagServices() { - return diagServices; - } - @Override public RealmContext getRealmContext() { return realmContext; 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 818bdb138c..4a517b13e4 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 @@ -169,7 +169,7 @@ public synchronized EntityCache getOrCreateEntityCache( PolarisMetaStoreManager metaStoreManager = getOrCreateMetaStoreManager(realmContext); entityCacheMap.put( realmContext.getRealmIdentifier(), - new InMemoryEntityCache(realmConfig, metaStoreManager)); + new InMemoryEntityCache(diagnostics, realmConfig, metaStoreManager)); } return entityCacheMap.get(realmContext.getRealmIdentifier()); 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 3d9f3c0523..b5c9ecebca 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 EntityResult readEntityByName( @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 36c44ea259..efac734ed9 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.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 @@ /** 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 byId; - - // index by name private final AbstractMap 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 @@ && isNewer(existingCacheEntry, existingCacheEntryByName)) { } // 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 @@ && isNewer(existingCacheEntry, existingCacheEntryByName)) { } // 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 @@ && isNewer(existingCacheEntry, existingCacheEntryByName)) { } // 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 f4504d6e18..5626898783 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 PolarisResolutionManifest( 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 dc148a723a..c91a775431 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 @@ 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 PolarisResolutionManifest createResolutionManifest( @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 08f257b5c4..df64d296a1 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 2bc43a5a3a..de37e2fe6b 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 catalogPath, @Nullable PolarisEntityCore resolvedEntity, @Nullable List 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 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 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 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 97af650b08..7ae70c9ddf 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 @@ private void bootstrapPolarisService( @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 @@ private void bootstrapPolarisService( @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 @@ private void bootstrapPolarisService( @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 @@ private void bootstrapPolarisService( } // 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 @@ private void bootstrapPolarisService( 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 @@ private void bootstrapPolarisService( // 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 @@ private void bootstrapPolarisService( // 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 @@ private void bootstrapPolarisService( // 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 @@ private void bootstrapPolarisService( // 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 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( } // 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 @@ Optional> hasOverlappingSiblings( @Nonnull PolicyEntity policy, Map 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 @@ private PolicyAttachmentResult doDetachPolicyFromEntity( @Nonnull List 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 d166ee4b14..82de799152 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.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 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 AccessConfig getOrGenerateSubScopeCreds( @Nonnull Set allowedWriteLocations, Optional 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/ResolverTest.java b/polaris-core/src/test/java/org/apache/polaris/core/persistence/ResolverTest.java index e0add4fea1..5b8d14a03f 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 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 @@ 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; 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 fa8437fa0b..1be43aec22 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 @@ -93,7 +93,7 @@ public 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 becc220a63..65921f1867 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.mockito.Mockito; public class StorageCredentialCacheTest { - + private final PolarisDiagnostics diagServices = new PolarisDefaultDiagServiceImpl(); private final PolarisCallContext callCtx; private final StorageCredentialCacheConfig storageCredentialCacheConfig; private final PolarisMetaStoreManager metaStoreManager; @@ -58,8 +58,6 @@ 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 @@ -73,7 +71,7 @@ public StorageCredentialCacheTest() { } 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 c0daa7c449..53720c73be 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.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.provider.MethodSource; public abstract class BaseResolverTest { + protected final PolarisDefaultDiagServiceImpl diagServices = new PolarisDefaultDiagServiceImpl(); // Principal P1 protected PolarisBaseEntity P1; @@ -467,7 +469,8 @@ private Resolver allocateResolver( // 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> roleEntities = @@ -485,6 +488,7 @@ private Resolver allocateResolver( 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 d4c1892dc9..84ed339009 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 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 c455e9c991..1d7b6aa682 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.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 @@ private PolarisAdminService newAdminService( 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 a27d574769..5783c8b820 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 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 @@ 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 @@ protected List loadActivePrincipalRoles( 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 2d08ab2db0..89a2e22302 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 CatalogHandler( PolarisAuthorizer authorizer, UserSecretsManager userSecretsManager, Instance 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 befe9907fb..650c747dcf 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.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 GenericTableCatalogAdapter( ReservedProperties reservedProperties, UserSecretsManager userSecretsManager, @Any Instance externalCatalogFactories) { + this.diagnostics = diagnostics; this.realmContext = realmContext; this.callContext = callContext; this.realmConfig = callContext.getRealmConfig(); @@ -91,6 +95,7 @@ private GenericTableCatalogHandler newHandlerWrapper( 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 8881fb19dd..1445572690 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.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 GenericTableCatalogHandler( UserSecretsManager userSecretsManager, Instance 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 03aa41c80a..a8428873d9 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.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 IcebergCatalog( TaskExecutor taskExecutor, FileIOFactory fileIOFactory, PolarisEventListener polarisEventListener) { + this.diagnostics = diagnostics; this.storageCredentialCache = storageCredentialCache; this.resolverFactory = resolverFactory; this.callContext = callContext; @@ -364,7 +368,7 @@ protected String defaultWarehouseLocation(TableIdentifier tableIdentifier) { "Namespace does not exist: %s", tableIdentifier.namespace()); } List namespacePath = resolvedNamespace.getRawFullPath(); - String namespaceLocation = resolveLocationForPath(callContext, namespacePath); + String namespaceLocation = resolveLocationForPath(diagnostics, namespacePath); return SLASH.join(namespaceLocation, tableIdentifier.name()); } } @@ -528,14 +532,14 @@ private String resolveNamespaceLocation(Namespace namespace, Map ? 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 parentPath) { + @Nonnull PolarisDiagnostics diagnostics, List 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 @@ private String resolveNamespaceLocation(Namespace namespace, Map .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 @@ private String resolveNamespaceLocation(Namespace namespace, Map 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 @@ private void validateNoLocationO 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 860476cf81..1b0ea9b02c 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.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 IcebergCatalogAdapter( ReservedProperties reservedProperties, CatalogHandlerUtils catalogHandlerUtils, @Any Instance externalCatalogFactories) { + this.diagnostics = diagnostics; this.realmContext = realmContext; this.callContext = callContext; this.realmConfig = callContext.getRealmConfig(); @@ -206,6 +210,7 @@ IcebergCatalogHandler newHandlerWrapper(SecurityContext securityContext, String 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 57b8a990a4..694858c451 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.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 IcebergCatalogHandler( CatalogHandlerUtils catalogHandlerUtils, Instance 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 b2fa94f493..98bb3d9f15 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.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 @@ 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 PolicyCatalogAdapter( CatalogPrefixParser prefixParser, UserSecretsManager userSecretsManager, @Any Instance externalCatalogFactories) { + this.diagnostics = diagnostics; this.realmContext = realmContext; this.callContext = callContext; this.realmConfig = callContext.getRealmConfig(); @@ -91,6 +95,7 @@ private PolicyCatalogHandler newHandlerWrapper(SecurityContext securityContext, 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 21027a342d..96012a2c0b 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.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 PolicyCatalogHandler( UserSecretsManager userSecretsManager, Instance 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 3cf0c0dbaf..a254658528 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 Clock clock() { @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 ResolverFactory resolverFactory( metaStoreManagerFactory.getOrCreateEntityCache( callContext.getRealmContext(), callContext.getRealmConfig()); return new Resolver( + diagnostics, callContext.getPolarisCallContext(), polarisMetaStoreManager, securityContext, @@ -127,8 +129,9 @@ public ResolverFactory resolverFactory( @Produces @ApplicationScoped - public ResolutionManifestFactory resolutionManifestFactory(ResolverFactory resolverFactory) { - return new ResolutionManifestFactoryImpl(resolverFactory); + public ResolutionManifestFactory resolutionManifestFactory( + PolarisDiagnostics diagnostics, ResolverFactory resolverFactory) { + return new ResolutionManifestFactoryImpl(diagnostics, resolverFactory); } @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 31360ae31d..9cd8fd4c33 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.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 Catalog createCallContextCatalog( 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 088a8ae1e0..f69e18b7d5 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 @@ private PolarisMetaStoreManager setupMetaStoreManager() { 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 9294d853fc..ad5fa0ce6a 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 @@ private PolarisAdminService newTestAdminService(Set activatedPrincipalRo 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 136d6bf251..60e0559426 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 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.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 @@ void setUp() throws Exception { 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 2717ee71c9..26e2bd8ee7 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 @@ -246,6 +246,7 @@ public void before(TestInfo testInfo) { this.adminService = new PolarisAdminService( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, @@ -453,6 +454,7 @@ private void initBaseCatalog() { callContext, resolutionManifestFactory, securityContext, CATALOG_NAME); this.baseCatalog = new IcebergCatalog( + diagServices, storageCredentialCache, resolverFactory, metaStoreManager, @@ -479,11 +481,12 @@ public static class TestPolarisCallContextCatalogFactory @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 +494,7 @@ public TestPolarisCallContextCatalogFactory( 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 75adb59f5b..09929bac23 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 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 @@ public class PolarisServiceImplTest { + private final PolarisDiagnostics diagnostics = new PolarisDefaultDiagServiceImpl(); private ResolutionManifestFactory resolutionManifestFactory; private MetaStoreManagerFactory metaStoreManagerFactory; private UserSecretsManagerFactory userSecretsManagerFactory; @@ -75,6 +78,7 @@ void setUp() { polarisService = new PolarisServiceImpl( + diagnostics, resolutionManifestFactory, metaStoreManagerFactory, userSecretsManagerFactory, 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 232302b803..acaca01425 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 @@ -169,6 +169,7 @@ public void before(TestInfo testInfo) { adminService = new PolarisAdminService( + diagServices, polarisContext, resolutionManifestFactory, metaStoreManager, @@ -235,6 +236,7 @@ public void before(TestInfo testInfo) { 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 afa0f440f3..b1296177b7 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 @@ private GenericTableCatalogHandler newWrapper( 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 fca6a969e4..799f42430d 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 static void setUpMocks() { @Nullable protected abstract EntityCache createEntityCache( - RealmConfig realmConfig, PolarisMetaStoreManager metaStoreManager); + PolarisDiagnostics diagnostics, + RealmConfig realmConfig, + PolarisMetaStoreManager metaStoreManager); protected void bootstrapRealm(String realmName) {} @@ -284,10 +286,11 @@ public void before(TestInfo testInfo) { 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 +298,7 @@ public void before(TestInfo testInfo) { referenceCatalogName); QuarkusMock.installMockForType(resolverFactory, ResolverFactory.class); - resolutionManifestFactory = new ResolutionManifestFactoryImpl(resolverFactory); + resolutionManifestFactory = new ResolutionManifestFactoryImpl(diagServices, resolverFactory); PrincipalEntity rootPrincipal = metaStoreManager.findRootPrincipal(polarisContext).orElseThrow(); @@ -310,6 +313,7 @@ public void before(TestInfo testInfo) { adminService = new PolarisAdminService( + diagServices, polarisContext, resolutionManifestFactory, metaStoreManager, @@ -439,6 +443,7 @@ protected IcebergCatalog newIcebergCatalog( 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 51c1d08f5a..ebea00b89c 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 @@ -179,6 +179,7 @@ public void before(TestInfo testInfo) { PolarisAdminService adminService = new PolarisAdminService( + diagServices, polarisContext, resolutionManifestFactory, metaStoreManager, @@ -213,6 +214,7 @@ public void before(TestInfo testInfo) { 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 676a6d6354..5211a514a7 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 @@ private IcebergCatalogHandler newWrapper( PolarisPrincipal authenticatedPrincipal = PolarisPrincipal.of(principalEntity, activatedPrincipalRoles); return new IcebergCatalogHandler( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, @@ -240,6 +241,7 @@ public void testInsufficientPermissionsPriorToSecretRotation() { Set.of(PRINCIPAL_ROLE1, PRINCIPAL_ROLE2)); IcebergCatalogHandler wrapper = new IcebergCatalogHandler( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, @@ -276,6 +278,7 @@ public void testInsufficientPermissionsPriorToSecretRotation() { PrincipalEntity.of(refreshPrincipal), Set.of(PRINCIPAL_ROLE1, PRINCIPAL_ROLE2)); IcebergCatalogHandler refreshedWrapper = new IcebergCatalogHandler( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, @@ -1765,6 +1768,7 @@ public void testSendNotificationSufficientPrivileges() { 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 bf8298e3ce..1060b6a013 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 @@ 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 881f12eb5a..c589e913ef 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 @@ 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 5c72f1506c..03fd51d46a 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 @@ IcebergCatalog createCatalog(TestServices services, String scheme) { 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 bf514e1277..00484969b7 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 @@ -190,6 +190,7 @@ public void before(TestInfo testInfo) { adminService = new PolarisAdminService( + diagServices, polarisContext, resolutionManifestFactory, metaStoreManager, @@ -252,6 +253,7 @@ public void before(TestInfo testInfo) { 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 3022ffdb09..990a9cff28 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 @@ private PolicyCatalogHandler newWrapper(Set activatedPrincipalRoles, Str PolarisPrincipal authenticatedPrincipal = PolarisPrincipal.of(principalEntity, activatedPrincipalRoles); return new PolicyCatalogHandler( + diagServices, callContext, resolutionManifestFactory, metaStoreManager, 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 2cb9a483de..0b64dcc9a9 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 static Builder builder() { 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 config = Map.of(); private StsClient stsClient = Mockito.mock(StsClient.class); @@ -164,19 +164,18 @@ public TestServices build() { () -> 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, diagnostics, configurationStore); RealmConfig realmConfig = callContext.getRealmConfig(); PolarisMetaStoreManager metaStoreManager = @@ -187,6 +186,7 @@ public TestServices build() { ResolverFactory resolverFactory = (_callContext, securityContext, referenceCatalogName) -> new Resolver( + diagnostics, _callContext.getPolarisCallContext(), metaStoreManager, securityContext, @@ -194,7 +194,7 @@ public TestServices build() { referenceCatalogName); ResolutionManifestFactory resolutionManifestFactory = - new ResolutionManifestFactoryImpl(resolverFactory); + new ResolutionManifestFactoryImpl(diagnostics, resolverFactory); UserSecretsManager userSecretsManager = userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext); @@ -206,6 +206,7 @@ public TestServices build() { PolarisEventListener polarisEventListener = new TestPolarisEventListener(); CallContextCatalogFactory callContextFactory = new PolarisCallContextCatalogFactory( + diagnostics, storageCredentialCache, resolverFactory, metaStoreManagerFactory, @@ -224,6 +225,7 @@ public TestServices build() { IcebergCatalogAdapter catalogService = new IcebergCatalogAdapter( + diagnostics, realmContext, callContext, callContextFactory, @@ -278,6 +280,7 @@ public String getAuthenticationScheme() { PolarisCatalogsApi catalogsApi = new PolarisCatalogsApi( new PolarisServiceImpl( + diagnostics, resolutionManifestFactory, metaStoreManagerFactory, userSecretsManagerFactory, @@ -292,7 +295,7 @@ public String getAuthenticationScheme() { restConfigurationApi, catalogService, configurationStore, - polarisDiagnostics, + diagnostics, storageCredentialCache, resolverFactory, resolutionManifestFactory, From f471f8ab94065292fdcd8222c9e4e9a3da7b0c8c Mon Sep 17 00:00:00 2001 From: Christopher Lambert <1204398+XN137@users.noreply.github.com> Date: Thu, 21 Aug 2025 10:47:47 +0200 Subject: [PATCH 2/2] Remove diagnostics from PolarisCallContext --- .../PolarisEclipseLinkMetaStoreManagerTest.java | 2 +- .../relational/jdbc/JdbcMetaStoreManagerFactory.java | 8 +++----- ...astoreManagerWithJdbcBasePersistenceImplTest.java | 3 +-- .../org/apache/polaris/core/PolarisCallContext.java | 12 +++--------- .../LocalPolarisMetaStoreManagerFactory.java | 8 +++----- ...isTreeMapAtomicOperationMetaStoreManagerTest.java | 2 +- .../PolarisTreeMapMetaStoreManagerTest.java | 2 +- .../polaris/core/persistence/ResolverTest.java | 2 +- .../persistence/cache/InMemoryEntityCacheTest.java | 2 +- .../storage/cache/StorageCredentialCacheTest.java | 2 +- .../polaris/service/config/ServiceProducers.java | 3 +-- .../polaris/service/admin/PolarisAuthzTestBase.java | 5 +---- .../polaris/service/auth/JWTRSAKeyPairTest.java | 3 +-- .../service/auth/JWTSymmetricKeyGeneratorTest.java | 2 +- .../AbstractPolarisGenericTableCatalogTest.java | 1 - .../catalog/iceberg/AbstractIcebergCatalogTest.java | 1 - .../iceberg/AbstractIcebergCatalogViewTest.java | 1 - .../catalog/policy/AbstractPolicyCatalogTest.java | 1 - .../task/BatchFileCleanupTaskHandlerTest.java | 4 +--- .../task/ManifestFileCleanupTaskHandlerTest.java | 4 +--- .../service/task/TableCleanupTaskHandlerTest.java | 3 --- .../service/test/PolarisIntegrationTestFixture.java | 3 +-- .../org/apache/polaris/service/TestServices.java | 4 ++-- 23 files changed, 25 insertions(+), 53 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 ab768ba839..bf358cca0d 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 @@ protected PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() { 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/JdbcMetaStoreManagerFactory.java b/persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcMetaStoreManagerFactory.java index 648e459637..09640c2597 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 @@ -178,7 +178,7 @@ public Map purgeRealms(Iterable realms) { 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); @@ -234,8 +234,7 @@ private PrincipalSecretsResult bootstrapServiceAndCreatePolarisPrincipalForRealm 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 preliminaryRootPrincipal = metaStoreManager.findRootPrincipal(polarisContext); @@ -269,8 +268,7 @@ private void checkPolarisServiceBootstrappedForRealm(RealmContext realmContext) PolarisMetaStoreManager metaStoreManager = metaStoreManagerMap.get(realmContext.getRealmIdentifier()); BasePersistence metaStore = sessionSupplierMap.get(realmContext.getRealmIdentifier()).get(); - PolarisCallContext polarisContext = - new PolarisCallContext(realmContext, metaStore, diagnostics); + PolarisCallContext polarisContext = new PolarisCallContext(realmContext, metaStore); Optional rootPrincipal = metaStoreManager.findRootPrincipal(polarisContext); if (rootPrincipal.isEmpty()) { diff --git a/persistence/relational-jdbc/src/test/java/org/apache/polaris/persistence/relational/jdbc/AtomicMetastoreManagerWithJdbcBasePersistenceImplTest.java b/persistence/relational-jdbc/src/test/java/org/apache/polaris/persistence/relational/jdbc/AtomicMetastoreManagerWithJdbcBasePersistenceImplTest.java index eaade92a49..dfc8a84a01 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 @@ -72,8 +72,7 @@ protected PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() { 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 e9cc831f7a..272b455e76 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,20 +41,16 @@ 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() { @@ -86,7 +81,6 @@ public PolarisCallContext copy() { // copy of the RealmContext to ensure the access during the task executor. String realmId = this.realmContext.getRealmIdentifier(); RealmContext realmContext = () -> realmId; - return new PolarisCallContext( - realmContext, this.metaStore, this.diagServices, this.configurationStore); + return new PolarisCallContext(realmContext, this.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 4a517b13e4..ea3c14b522 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 Map purgeRealms(Iterable realms) { 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); @@ -186,8 +186,7 @@ private PrincipalSecretsResult bootstrapServiceAndCreatePolarisPrincipalForRealm 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 preliminaryRootPrincipal = metaStoreManager.findRootPrincipal(polarisContext); @@ -221,8 +220,7 @@ private void checkPolarisServiceBootstrappedForRealm(RealmContext realmContext) PolarisMetaStoreManager metaStoreManager = metaStoreManagerMap.get(realmContext.getRealmIdentifier()); BasePersistence metaStore = sessionSupplierMap.get(realmContext.getRealmIdentifier()).get(); - PolarisCallContext polarisContext = - new PolarisCallContext(realmContext, metaStore, diagnostics); + PolarisCallContext polarisContext = new PolarisCallContext(realmContext, metaStore); Optional rootPrincipal = metaStoreManager.findRootPrincipal(polarisContext); if (rootPrincipal.isEmpty()) { 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 ac8d452186..f1fa909e8c 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 PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() { 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 a07f7be994..4ecfa027f5 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 PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() { 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 5b8d14a03f..3c8633a827 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 @@ -41,7 +41,7 @@ protected PolarisCallContext callCtx() { 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 1be43aec22..d750c4821e 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 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); 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 65921f1867..a51badf4b8 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 @@ -64,7 +64,7 @@ public StorageCredentialCacheTest() { 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(); 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 a254658528..4d954258f8 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 @@ -152,11 +152,10 @@ public RealmContext realmContext(@Context ContainerRequestContext request) { @RequestScoped public CallContext polarisCallContext( RealmContext realmContext, - PolarisDiagnostics diagServices, PolarisConfigurationStore configurationStore, MetaStoreManagerFactory metaStoreManagerFactory) { BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSession(realmContext); - return new PolarisCallContext(realmContext, metaStoreSession, diagServices, configurationStore); + return new PolarisCallContext(realmContext, metaStoreSession, configurationStore); } @Produces 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 26e2bd8ee7..fbdf066618 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 void before(TestInfo testInfo) { polarisContext = new PolarisCallContext( - realmContext, - managerFactory.getOrCreateSession(realmContext), - diagServices, - configurationStore); + realmContext, managerFactory.getOrCreateSession(realmContext), configurationStore); callContext = polarisContext; realmConfig = polarisContext.getRealmConfig(); diff --git a/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTRSAKeyPairTest.java b/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTRSAKeyPairTest.java index 778a271972..be42765980 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTRSAKeyPairTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTRSAKeyPairTest.java @@ -53,8 +53,7 @@ public void testSuccessfulTokenGeneration() throws Exception { final String clientId = "test-client-id"; final String scope = "PRINCIPAL_ROLE:TEST"; - PolarisCallContext polarisCallContext = - new PolarisCallContext(null, null, null, configurationStore); + PolarisCallContext polarisCallContext = new PolarisCallContext(null, null, configurationStore); PolarisMetaStoreManager metastoreManager = Mockito.mock(PolarisMetaStoreManager.class); String mainSecret = "client-secret"; PolarisPrincipalSecrets principalSecrets = diff --git a/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTSymmetricKeyGeneratorTest.java b/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTSymmetricKeyGeneratorTest.java index ac870e6f8d..43efedb6ab 100644 --- a/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTSymmetricKeyGeneratorTest.java +++ b/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTSymmetricKeyGeneratorTest.java @@ -41,7 +41,7 @@ public class JWTSymmetricKeyGeneratorTest { /** Sanity test to verify that we can generate a token */ @Test public void testJWTSymmetricKeyGenerator() { - PolarisCallContext polarisCallContext = new PolarisCallContext(null, null, null, null); + PolarisCallContext polarisCallContext = new PolarisCallContext(null, null, null); PolarisMetaStoreManager metastoreManager = Mockito.mock(PolarisMetaStoreManager.class); String mainSecret = "test_secret"; String clientId = "test_client_id"; diff --git a/runtime/service/src/test/java/org/apache/polaris/service/catalog/generic/AbstractPolarisGenericTableCatalogTest.java b/runtime/service/src/test/java/org/apache/polaris/service/catalog/generic/AbstractPolarisGenericTableCatalogTest.java index acaca01425..de4e569921 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 void before(TestInfo testInfo) { new PolarisCallContext( realmContext, metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, configurationStore); realmConfig = polarisContext.getRealmConfig(); 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 799f42430d..38811c39c8 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 @@ -282,7 +282,6 @@ public void before(TestInfo testInfo) { new PolarisCallContext( realmContext, metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, configurationStore); realmConfig = polarisContext.getRealmConfig(); 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 ebea00b89c..d4edde2c45 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 void before(TestInfo testInfo) { new PolarisCallContext( realmContext, metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, configurationStore); realmConfig = polarisContext.getRealmConfig(); 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 00484969b7..e627f3cf59 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 void before(TestInfo testInfo) { new PolarisCallContext( realmContext, metaStoreManagerFactory.getOrCreateSession(realmContext), - diagServices, configurationStore); realmConfig = polarisContext.getRealmConfig(); diff --git a/runtime/service/src/test/java/org/apache/polaris/service/task/BatchFileCleanupTaskHandlerTest.java b/runtime/service/src/test/java/org/apache/polaris/service/task/BatchFileCleanupTaskHandlerTest.java index 2ab24c396a..326664620b 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.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 @@ @QuarkusTest public class BatchFileCleanupTaskHandlerTest { - @Inject PolarisDiagnostics diagnostics; @Inject MetaStoreManagerFactory metaStoreManagerFactory; private final RealmContext realmContext = () -> "realmName"; @@ -64,7 +62,7 @@ private TaskFileIOSupplier buildTaskFileIOSupplier(FileIO fileIO) { 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 828991798f..99eacdbe2e 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.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 @@ @QuarkusTest class ManifestFileCleanupTaskHandlerTest { - @Inject PolarisDiagnostics diagnostics; @Inject MetaStoreManagerFactory metaStoreManagerFactory; private final RealmContext realmContext = () -> "realmName"; @@ -61,7 +59,7 @@ private TaskFileIOSupplier buildTaskFileIOSupplier(FileIO fileIO) { private PolarisCallContext newCallContext() { BasePersistence metaStore = metaStoreManagerFactory.getOrCreateSession(realmContext); - return new PolarisCallContext(realmContext, metaStore, diagnostics); + return new PolarisCallContext(realmContext, 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 daedcb5344..bcccff2666 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.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 @@ void setup() { 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 eb5dd948dc..b9e719122d 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 @@ private PolarisPrincipalSecrets fetchAdminSecrets() { 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 0b64dcc9a9..93bf2c5384 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 @@ -175,7 +175,7 @@ public TestServices build() { BasePersistence metaStoreSession = metaStoreManagerFactory.getOrCreateSession(realmContext); CallContext callContext = - new PolarisCallContext(realmContext, metaStoreSession, diagnostics, configurationStore); + new PolarisCallContext(realmContext, metaStoreSession, configurationStore); RealmConfig realmConfig = callContext.getRealmConfig(); PolarisMetaStoreManager metaStoreManager = @@ -311,6 +311,6 @@ public String getAuthenticationScheme() { public PolarisCallContext newCallContext() { BasePersistence metaStore = metaStoreManagerFactory.getOrCreateSession(realmContext); - return new PolarisCallContext(realmContext, metaStore, polarisDiagnostics, configurationStore); + return new PolarisCallContext(realmContext, metaStore, configurationStore); } }