This is an automated email from the ASF dual-hosted git repository.

dimas pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/main by this push:
     new 6b4f8e1fc Remove PolarisCallContext.getDiagServices (#2415)
6b4f8e1fc is described below

commit 6b4f8e1fc5c8b5f0d7d645fc66fc9127888a1811
Author: Christopher Lambert <xn...@gmx.de>
AuthorDate: Tue Sep 2 19:40:39 2025 +0200

    Remove PolarisCallContext.getDiagServices (#2415)
    
    * Remove PolarisCallContext.getDiagServices usage
    
    * Remove diagnostics from PolarisCallContext
---
 .../PolarisEclipseLinkMetaStoreManagerTest.java    |  2 +-
 .../relational/jdbc/JdbcBasePersistenceImpl.java   | 34 ++++++------
 .../jdbc/JdbcMetaStoreManagerFactory.java          | 11 ++--
 ...toreManagerWithJdbcBasePersistenceImplTest.java |  4 +-
 .../apache/polaris/core/PolarisCallContext.java    | 16 +-----
 .../LocalPolarisMetaStoreManagerFactory.java       | 10 ++--
 .../TransactionWorkspaceMetaStoreManager.java      |  2 +-
 .../persistence/cache/InMemoryEntityCache.java     | 43 ++++++---------
 .../resolver/PolarisResolutionManifest.java        |  3 +-
 .../resolver/ResolutionManifestFactoryImpl.java    |  8 ++-
 .../core/persistence/resolver/Resolver.java        |  3 +-
 .../transactional/PolarisEntityResolver.java       | 64 +++++++++++-----------
 .../TransactionalMetaStoreManagerImpl.java         | 39 ++++++++-----
 .../core/storage/cache/StorageCredentialCache.java | 11 ++--
 ...TreeMapAtomicOperationMetaStoreManagerTest.java |  2 +-
 .../PolarisTreeMapMetaStoreManagerTest.java        |  2 +-
 .../polaris/core/persistence/ResolverTest.java     |  4 +-
 .../persistence/cache/InMemoryEntityCacheTest.java |  4 +-
 .../storage/cache/StorageCredentialCacheTest.java  |  8 +--
 .../polaris/core/persistence/BaseResolverTest.java |  6 +-
 .../polaris/service/admin/PolarisAdminService.java |  8 +--
 .../polaris/service/admin/PolarisServiceImpl.java  |  5 ++
 .../service/auth/DefaultActiveRolesProvider.java   | 14 ++---
 .../service/catalog/common/CatalogHandler.java     |  3 +-
 .../generic/GenericTableCatalogAdapter.java        |  5 ++
 .../generic/GenericTableCatalogHandler.java        |  3 +
 .../service/catalog/iceberg/IcebergCatalog.java    | 46 ++++++++--------
 .../catalog/iceberg/IcebergCatalogAdapter.java     |  5 ++
 .../catalog/iceberg/IcebergCatalogHandler.java     |  3 +
 .../catalog/policy/PolicyCatalogAdapter.java       |  5 ++
 .../catalog/policy/PolicyCatalogHandler.java       |  3 +
 .../polaris/service/config/ServiceProducers.java   | 14 +++--
 .../catalog/PolarisCallContextCatalogFactory.java  |  5 ++
 .../service/admin/ManagementServiceTest.java       |  1 +
 .../admin/PolarisAdminServiceAuthzTest.java        |  1 +
 .../service/admin/PolarisAdminServiceTest.java     |  6 +-
 .../service/admin/PolarisAuthzTestBase.java        | 11 ++--
 .../service/admin/PolarisServiceImplTest.java      |  4 ++
 .../polaris/service/auth/JWTRSAKeyPairTest.java    |  3 +-
 .../service/auth/JWTSymmetricKeyGeneratorTest.java |  2 +-
 .../AbstractPolarisGenericTableCatalogTest.java    |  3 +-
 ...PolarisGenericTableCatalogHandlerAuthzTest.java |  1 +
 .../iceberg/AbstractIcebergCatalogTest.java        | 12 ++--
 .../iceberg/AbstractIcebergCatalogViewTest.java    |  3 +-
 .../iceberg/IcebergCatalogHandlerAuthzTest.java    |  4 ++
 .../IcebergCatalogRelationalNoEntityCacheTest.java |  5 +-
 ...cebergCatalogRelationalWithEntityCacheTest.java |  7 ++-
 .../service/catalog/io/FileIOFactoryTest.java      |  1 +
 .../catalog/policy/AbstractPolicyCatalogTest.java  |  3 +-
 .../policy/PolicyCatalogHandlerAuthzTest.java      |  1 +
 .../task/BatchFileCleanupTaskHandlerTest.java      |  4 +-
 .../task/ManifestFileCleanupTaskHandlerTest.java   |  4 +-
 .../service/task/TableCleanupTaskHandlerTest.java  |  3 -
 .../test/PolarisIntegrationTestFixture.java        |  3 +-
 .../org/apache/polaris/service/TestServices.java   | 19 ++++---
 55 files changed, 279 insertions(+), 217 deletions(-)

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

Reply via email to