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

snazy 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 ef177b51c Remove PolarisCallContext.getClock (#2250)
ef177b51c is described below

commit ef177b51cad07411d6b2b673fe3b5cc8a01c6d70
Author: Christopher Lambert <xn...@gmx.de>
AuthorDate: Thu Aug 7 09:01:13 2025 +0200

    Remove PolarisCallContext.getClock (#2250)
    
    the clock is application scoped and thus should not be put into any
    realm or call specific context class.
---
 .../EclipseLinkPolarisMetaStoreManagerFactory.java |  8 +++---
 .../PolarisEclipseLinkMetaStoreManagerTest.java    | 14 +++-------
 .../jdbc/JdbcMetaStoreManagerFactory.java          |  4 ++-
 ...toreManagerWithJdbcBasePersistenceImplTest.java | 14 +++-------
 .../apache/polaris/core/PolarisCallContext.java    | 26 +++----------------
 .../AtomicOperationMetaStoreManager.java           | 14 +++++++---
 .../LocalPolarisMetaStoreManagerFactory.java       | 12 ++++++---
 .../TransactionalMetaStoreManagerImpl.java         | 14 +++++++---
 ...TreeMapAtomicOperationMetaStoreManagerTest.java | 10 +++-----
 .../PolarisTreeMapMetaStoreManagerTest.java        | 11 +++-----
 .../polaris/core/persistence/ResolverTest.java     |  6 +++--
 .../persistence/cache/InMemoryEntityCacheTest.java | 23 +++++------------
 .../BasePolarisMetaStoreManagerTest.java           |  6 ++---
 .../polaris/service/config/ServiceProducers.java   |  6 ++---
 ...moryAtomicOperationMetaStoreManagerFactory.java | 13 ++++++----
 .../InMemoryPolarisMetaStoreManagerFactory.java    |  9 ++++---
 .../service/task/TableCleanupTaskHandler.java      |  8 ++++--
 .../polaris/service/task/TaskExecutorImpl.java     |  9 +++++--
 .../service/admin/PolarisAuthzTestBase.java        |  5 +---
 .../polaris/service/auth/JWTRSAKeyPairTest.java    |  2 +-
 .../service/auth/JWTSymmetricKeyGeneratorTest.java |  2 +-
 .../catalog/AbstractIcebergCatalogTest.java        |  7 ++---
 .../catalog/AbstractIcebergCatalogViewTest.java    |  4 +--
 .../AbstractPolarisGenericTableCatalogTest.java    |  4 +--
 .../service/catalog/AbstractPolicyCatalogTest.java |  4 +--
 .../polaris/service/entity/CatalogEntityTest.java  |  4 ++-
 .../service/task/TableCleanupTaskHandlerTest.java  | 30 ++++++++--------------
 .../polaris/service/task/TaskExecutorImplTest.java |  3 ++-
 .../test/PolarisIntegrationTestFixture.java        |  6 +----
 .../service/test/PolarisIntegrationTestHelper.java |  2 --
 .../org/apache/polaris/service/TestServices.java   | 14 +++++-----
 31 files changed, 129 insertions(+), 165 deletions(-)

diff --git 
a/persistence/eclipselink/src/main/java/org/apache/polaris/extension/persistence/impl/eclipselink/EclipseLinkPolarisMetaStoreManagerFactory.java
 
b/persistence/eclipselink/src/main/java/org/apache/polaris/extension/persistence/impl/eclipselink/EclipseLinkPolarisMetaStoreManagerFactory.java
index 492f61668..16c1bb8f4 100644
--- 
a/persistence/eclipselink/src/main/java/org/apache/polaris/extension/persistence/impl/eclipselink/EclipseLinkPolarisMetaStoreManagerFactory.java
+++ 
b/persistence/eclipselink/src/main/java/org/apache/polaris/extension/persistence/impl/eclipselink/EclipseLinkPolarisMetaStoreManagerFactory.java
@@ -24,6 +24,7 @@ import jakarta.annotation.Nullable;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import java.nio.file.Path;
+import java.time.Clock;
 import org.apache.polaris.core.PolarisDiagnostics;
 import org.apache.polaris.core.context.RealmContext;
 import org.apache.polaris.core.persistence.LocalPolarisMetaStoreManagerFactory;
@@ -45,13 +46,14 @@ public class EclipseLinkPolarisMetaStoreManagerFactory
   @Inject EclipseLinkConfiguration eclipseLinkConfiguration;
   @Inject PolarisStorageIntegrationProvider storageIntegrationProvider;
 
+  @SuppressWarnings("unused") // Required by CDI
   protected EclipseLinkPolarisMetaStoreManagerFactory() {
-    this(null);
+    this(null, null);
   }
 
   @Inject
-  protected EclipseLinkPolarisMetaStoreManagerFactory(PolarisDiagnostics 
diagnostics) {
-    super(diagnostics);
+  protected EclipseLinkPolarisMetaStoreManagerFactory(Clock clock, 
PolarisDiagnostics diagnostics) {
+    super(clock, diagnostics);
   }
 
   @Override
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 55607981e..aa3a6a3d5 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
@@ -30,13 +30,11 @@ import java.io.InputStream;
 import java.net.URL;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.time.ZoneId;
 import java.util.Objects;
 import java.util.stream.Stream;
 import org.apache.polaris.core.PolarisCallContext;
 import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
 import org.apache.polaris.core.PolarisDiagnostics;
-import org.apache.polaris.core.config.PolarisConfigurationStore;
 import org.apache.polaris.core.context.RealmContext;
 import org.apache.polaris.core.entity.PolarisPrincipalSecrets;
 import org.apache.polaris.core.persistence.BasePolarisMetaStoreManagerTest;
@@ -89,14 +87,10 @@ public class PolarisEclipseLinkMetaStoreManagerTest extends 
BasePolarisMetaStore
     PolarisEclipseLinkMetaStoreSessionImpl session =
         new PolarisEclipseLinkMetaStoreSessionImpl(
             store, Mockito.mock(), realmContext, null, "polaris", 
RANDOM_SECRETS);
-    return new PolarisTestMetaStoreManager(
-        new TransactionalMetaStoreManagerImpl(),
-        new PolarisCallContext(
-            realmContext,
-            session,
-            diagServices,
-            new PolarisConfigurationStore() {},
-            timeSource.withZone(ZoneId.systemDefault())));
+    TransactionalMetaStoreManagerImpl metaStoreManager =
+        new TransactionalMetaStoreManagerImpl(clock);
+    PolarisCallContext callCtx = new PolarisCallContext(realmContext, session, 
diagServices);
+    return new PolarisTestMetaStoreManager(metaStoreManager, callCtx);
   }
 
   @ParameterizedTest
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 ca2294882..c8f05e3b3 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
@@ -24,6 +24,7 @@ import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.enterprise.inject.Instance;
 import jakarta.inject.Inject;
 import java.sql.SQLException;
+import java.time.Clock;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
@@ -68,6 +69,7 @@ public class JdbcMetaStoreManagerFactory implements 
MetaStoreManagerFactory {
   final Map<String, EntityCache> entityCacheMap = new HashMap<>();
   final Map<String, Supplier<BasePersistence>> sessionSupplierMap = new 
HashMap<>();
 
+  @Inject Clock clock;
   @Inject PolarisDiagnostics diagnostics;
   @Inject PolarisStorageIntegrationProvider storageIntegrationProvider;
   @Inject Instance<DataSource> dataSource;
@@ -85,7 +87,7 @@ public class JdbcMetaStoreManagerFactory implements 
MetaStoreManagerFactory {
   }
 
   protected PolarisMetaStoreManager createNewMetaStoreManager() {
-    return new AtomicOperationMetaStoreManager();
+    return new AtomicOperationMetaStoreManager(clock);
   }
 
   private void initializeForRealm(
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 a9c77bb74..c38970994 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
@@ -22,13 +22,11 @@ import static 
org.apache.polaris.core.persistence.PrincipalSecretsGenerator.RAND
 
 import java.io.InputStream;
 import java.sql.SQLException;
-import java.time.ZoneId;
 import java.util.Optional;
 import javax.sql.DataSource;
 import org.apache.polaris.core.PolarisCallContext;
 import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
 import org.apache.polaris.core.PolarisDiagnostics;
-import org.apache.polaris.core.config.PolarisConfigurationStore;
 import org.apache.polaris.core.context.RealmContext;
 import org.apache.polaris.core.persistence.AtomicOperationMetaStoreManager;
 import org.apache.polaris.core.persistence.BasePolarisMetaStoreManagerTest;
@@ -71,14 +69,10 @@ public class 
AtomicMetastoreManagerWithJdbcBasePersistenceImplTest
             Mockito.mock(),
             realmContext.getRealmIdentifier(),
             schemaVersion);
-    return new PolarisTestMetaStoreManager(
-        new AtomicOperationMetaStoreManager(),
-        new PolarisCallContext(
-            realmContext,
-            basePersistence,
-            diagServices,
-            new PolarisConfigurationStore() {},
-            timeSource.withZone(ZoneId.systemDefault())));
+    AtomicOperationMetaStoreManager metaStoreManager = new 
AtomicOperationMetaStoreManager(clock);
+    PolarisCallContext callCtx =
+        new PolarisCallContext(realmContext, basePersistence, diagServices);
+    return new PolarisTestMetaStoreManager(metaStoreManager, callCtx);
   }
 
   private static class H2JdbcConfiguration implements 
RelationalJdbcConfiguration {
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 cf2a0cca4..8878b9ef6 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
@@ -19,8 +19,6 @@
 package org.apache.polaris.core;
 
 import jakarta.annotation.Nonnull;
-import java.time.Clock;
-import java.time.ZoneId;
 import org.apache.polaris.core.config.PolarisConfigurationStore;
 import org.apache.polaris.core.config.RealmConfig;
 import org.apache.polaris.core.config.RealmConfigImpl;
@@ -36,29 +34,20 @@ public class PolarisCallContext implements CallContext {
 
   // meta store which is used to persist Polaris entity metadata
   private final BasePersistence metaStore;
-
-  // diag services
   private final PolarisDiagnostics diagServices;
-
   private final PolarisConfigurationStore configurationStore;
-
-  private final Clock clock;
-
   private final RealmContext realmContext;
-
   private final RealmConfig realmConfig;
 
   public PolarisCallContext(
       @Nonnull RealmContext realmContext,
       @Nonnull BasePersistence metaStore,
       @Nonnull PolarisDiagnostics diagServices,
-      @Nonnull PolarisConfigurationStore configurationStore,
-      @Nonnull Clock clock) {
+      @Nonnull PolarisConfigurationStore configurationStore) {
     this.realmContext = realmContext;
     this.metaStore = metaStore;
     this.diagServices = diagServices;
     this.configurationStore = configurationStore;
-    this.clock = clock;
     this.realmConfig = new RealmConfigImpl(this.configurationStore, 
this.realmContext);
   }
 
@@ -66,12 +55,7 @@ public class PolarisCallContext implements CallContext {
       @Nonnull RealmContext realmContext,
       @Nonnull BasePersistence metaStore,
       @Nonnull PolarisDiagnostics diagServices) {
-    this(
-        realmContext,
-        metaStore,
-        diagServices,
-        new PolarisConfigurationStore() {},
-        Clock.system(ZoneId.systemDefault()));
+    this(realmContext, metaStore, diagServices, new 
PolarisConfigurationStore() {});
   }
 
   public BasePersistence getMetaStore() {
@@ -82,10 +66,6 @@ public class PolarisCallContext implements CallContext {
     return diagServices;
   }
 
-  public Clock getClock() {
-    return clock;
-  }
-
   @Override
   public RealmContext getRealmContext() {
     return realmContext;
@@ -111,6 +91,6 @@ public class PolarisCallContext implements CallContext {
     String realmId = this.realmContext.getRealmIdentifier();
     RealmContext realmContext = () -> realmId;
     return new PolarisCallContext(
-        realmContext, this.metaStore, this.diagServices, 
this.configurationStore, this.clock);
+        realmContext, this.metaStore, this.diagServices, 
this.configurationStore);
   }
 }
diff --git 
a/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java
 
b/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java
index 1d1bf5773..0a09b20ea 100644
--- 
a/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java
+++ 
b/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java
@@ -20,6 +20,7 @@ package org.apache.polaris.core.persistence;
 
 import jakarta.annotation.Nonnull;
 import jakarta.annotation.Nullable;
+import java.time.Clock;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -84,6 +85,12 @@ public class AtomicOperationMetaStoreManager extends 
BaseMetaStoreManager {
   private static final Logger LOGGER =
       LoggerFactory.getLogger(AtomicOperationMetaStoreManager.class);
 
+  private final Clock clock;
+
+  public AtomicOperationMetaStoreManager(Clock clock) {
+    this.clock = clock;
+  }
+
   /**
    * Persist the specified new entity.
    *
@@ -1234,7 +1241,7 @@ public class AtomicOperationMetaStoreManager extends 
BaseMetaStoreManager {
               .name("entityCleanup_" + entityToDrop.getId())
               .typeCode(PolarisEntityType.TASK.getCode())
               .subTypeCode(PolarisEntitySubType.NULL_SUBTYPE.getCode())
-              .createTimestamp(callCtx.getClock().millis());
+              .createTimestamp(clock.millis());
       if (cleanupProperties != null) {
         taskEntityBuilder.internalProperties(
             PolarisObjectMapperUtil.serializeProperties(cleanupProperties));
@@ -1508,7 +1515,7 @@ public class AtomicOperationMetaStoreManager extends 
BaseMetaStoreManager {
                           PolarisTaskConstants.TASK_TIMEOUT_MILLIS);
               return taskState == null
                   || taskState.executor == null
-                  || callCtx.getClock().millis() - 
taskState.lastAttemptStartTime > taskAgeTimeout;
+                  || clock.millis() - taskState.lastAttemptStartTime > 
taskAgeTimeout;
             },
             Function.identity(),
             pageToken);
@@ -1524,8 +1531,7 @@ public class AtomicOperationMetaStoreManager extends 
BaseMetaStoreManager {
                       
PolarisObjectMapperUtil.deserializeProperties(task.getProperties());
                   
properties.put(PolarisTaskConstants.LAST_ATTEMPT_EXECUTOR_ID, executorId);
                   properties.put(
-                      PolarisTaskConstants.LAST_ATTEMPT_START_TIME,
-                      String.valueOf(callCtx.getClock().millis()));
+                      PolarisTaskConstants.LAST_ATTEMPT_START_TIME, 
String.valueOf(clock.millis()));
                   properties.put(
                       PolarisTaskConstants.ATTEMPT_COUNT,
                       String.valueOf(
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 925fcd955..ea247fdfb 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
@@ -20,6 +20,7 @@ package org.apache.polaris.core.persistence;
 
 import jakarta.annotation.Nonnull;
 import jakarta.annotation.Nullable;
+import java.time.Clock;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
@@ -56,9 +57,12 @@ public abstract class 
LocalPolarisMetaStoreManagerFactory<StoreType>
   private static final Logger LOGGER =
       LoggerFactory.getLogger(LocalPolarisMetaStoreManagerFactory.class);
 
+  private final Clock clock;
   private final PolarisDiagnostics diagnostics;
 
-  protected LocalPolarisMetaStoreManagerFactory(@Nonnull PolarisDiagnostics 
diagnostics) {
+  protected LocalPolarisMetaStoreManagerFactory(
+      @Nonnull Clock clock, @Nonnull PolarisDiagnostics diagnostics) {
+    this.clock = clock;
     this.diagnostics = diagnostics;
   }
 
@@ -84,8 +88,8 @@ public abstract class 
LocalPolarisMetaStoreManagerFactory<StoreType>
    * Subclasses can override this to inject different implementations of 
PolarisMetaStoreManager
    * into the existing realm-based setup flow.
    */
-  protected PolarisMetaStoreManager createNewMetaStoreManager() {
-    return new TransactionalMetaStoreManagerImpl();
+  protected PolarisMetaStoreManager createNewMetaStoreManager(Clock clock) {
+    return new TransactionalMetaStoreManagerImpl(clock);
   }
 
   private void initializeForRealm(
@@ -95,7 +99,7 @@ public abstract class 
LocalPolarisMetaStoreManagerFactory<StoreType>
         realmContext.getRealmIdentifier(),
         () -> createMetaStoreSession(backingStore, realmContext, 
rootCredentialsSet, diagnostics));
 
-    PolarisMetaStoreManager metaStoreManager = createNewMetaStoreManager();
+    PolarisMetaStoreManager metaStoreManager = 
createNewMetaStoreManager(clock);
     metaStoreManagerMap.put(realmContext.getRealmIdentifier(), 
metaStoreManager);
   }
 
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 2a4444b44..34e239622 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
@@ -21,6 +21,7 @@ package org.apache.polaris.core.persistence.transactional;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import jakarta.annotation.Nonnull;
 import jakarta.annotation.Nullable;
+import java.time.Clock;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -90,6 +91,12 @@ public class TransactionalMetaStoreManagerImpl extends 
BaseMetaStoreManager {
   private static final Logger LOGGER =
       LoggerFactory.getLogger(TransactionalMetaStoreManagerImpl.class);
 
+  private final Clock clock;
+
+  public TransactionalMetaStoreManagerImpl(Clock clock) {
+    this.clock = clock;
+  }
+
   /**
    * A version of BaseMetaStoreManager::persistNewEntity but instead of 
calling the one-shot
    * immediate-peristence APIs of BasePersistence, expects to be run under an 
outer
@@ -1437,7 +1444,7 @@ public class TransactionalMetaStoreManagerImpl extends 
BaseMetaStoreManager {
               .name("entityCleanup_" + entityToDrop.getId())
               .typeCode(PolarisEntityType.TASK.getCode())
               .subTypeCode(PolarisEntitySubType.NULL_SUBTYPE.getCode())
-              .createTimestamp(callCtx.getClock().millis())
+              .createTimestamp(clock.millis())
               
.properties(PolarisObjectMapperUtil.serializeProperties(properties));
       if (cleanupProperties != null) {
         taskEntityBuilder.internalProperties(
@@ -1964,7 +1971,7 @@ public class TransactionalMetaStoreManagerImpl extends 
BaseMetaStoreManager {
                           PolarisTaskConstants.TASK_TIMEOUT_MILLIS);
               return taskState == null
                   || taskState.executor == null
-                  || callCtx.getClock().millis() - 
taskState.lastAttemptStartTime > taskAgeTimeout;
+                  || clock.millis() - taskState.lastAttemptStartTime > 
taskAgeTimeout;
             },
             Function.identity(),
             pageToken);
@@ -1978,8 +1985,7 @@ public class TransactionalMetaStoreManagerImpl extends 
BaseMetaStoreManager {
                       
PolarisObjectMapperUtil.deserializeProperties(task.getProperties());
                   
properties.put(PolarisTaskConstants.LAST_ATTEMPT_EXECUTOR_ID, executorId);
                   properties.put(
-                      PolarisTaskConstants.LAST_ATTEMPT_START_TIME,
-                      String.valueOf(callCtx.getClock().millis()));
+                      PolarisTaskConstants.LAST_ATTEMPT_START_TIME, 
String.valueOf(clock.millis()));
                   properties.put(
                       PolarisTaskConstants.ATTEMPT_COUNT,
                       String.valueOf(
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 f89615cf1..ee103ab10 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
@@ -20,11 +20,9 @@ package org.apache.polaris.core.persistence;
 
 import static 
org.apache.polaris.core.persistence.PrincipalSecretsGenerator.RANDOM_SECRETS;
 
-import java.time.ZoneId;
 import org.apache.polaris.core.PolarisCallContext;
 import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
 import org.apache.polaris.core.PolarisDiagnostics;
-import org.apache.polaris.core.config.PolarisConfigurationStore;
 import org.apache.polaris.core.persistence.transactional.TreeMapMetaStore;
 import 
org.apache.polaris.core.persistence.transactional.TreeMapTransactionalPersistenceImpl;
 import org.mockito.Mockito;
@@ -35,14 +33,12 @@ public class 
PolarisTreeMapAtomicOperationMetaStoreManagerTest
   public PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() {
     PolarisDiagnostics diagServices = new PolarisDefaultDiagServiceImpl();
     TreeMapMetaStore store = new TreeMapMetaStore(diagServices);
+    AtomicOperationMetaStoreManager metaStoreManager = new 
AtomicOperationMetaStoreManager(clock);
     PolarisCallContext callCtx =
         new PolarisCallContext(
             () -> "testRealm",
             new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), 
RANDOM_SECRETS),
-            diagServices,
-            new PolarisConfigurationStore() {},
-            timeSource.withZone(ZoneId.systemDefault()));
-
-    return new PolarisTestMetaStoreManager(new 
AtomicOperationMetaStoreManager(), callCtx);
+            diagServices);
+    return new PolarisTestMetaStoreManager(metaStoreManager, callCtx);
   }
 }
diff --git 
a/polaris-core/src/test/java/org/apache/polaris/core/persistence/PolarisTreeMapMetaStoreManagerTest.java
 
b/polaris-core/src/test/java/org/apache/polaris/core/persistence/PolarisTreeMapMetaStoreManagerTest.java
index 49a2bfcc0..41030b014 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
@@ -20,11 +20,9 @@ package org.apache.polaris.core.persistence;
 
 import static 
org.apache.polaris.core.persistence.PrincipalSecretsGenerator.RANDOM_SECRETS;
 
-import java.time.ZoneId;
 import org.apache.polaris.core.PolarisCallContext;
 import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
 import org.apache.polaris.core.PolarisDiagnostics;
-import org.apache.polaris.core.config.PolarisConfigurationStore;
 import 
org.apache.polaris.core.persistence.transactional.TransactionalMetaStoreManagerImpl;
 import org.apache.polaris.core.persistence.transactional.TreeMapMetaStore;
 import 
org.apache.polaris.core.persistence.transactional.TreeMapTransactionalPersistenceImpl;
@@ -35,14 +33,13 @@ public class PolarisTreeMapMetaStoreManagerTest extends 
BasePolarisMetaStoreMana
   public PolarisTestMetaStoreManager createPolarisTestMetaStoreManager() {
     PolarisDiagnostics diagServices = new PolarisDefaultDiagServiceImpl();
     TreeMapMetaStore store = new TreeMapMetaStore(diagServices);
+    TransactionalMetaStoreManagerImpl metaStoreManager =
+        new TransactionalMetaStoreManagerImpl(clock);
     PolarisCallContext callCtx =
         new PolarisCallContext(
             () -> "testRealm",
             new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), 
RANDOM_SECRETS),
-            diagServices,
-            new PolarisConfigurationStore() {},
-            timeSource.withZone(ZoneId.systemDefault()));
-
-    return new PolarisTestMetaStoreManager(new 
TransactionalMetaStoreManagerImpl(), callCtx);
+            diagServices);
+    return new PolarisTestMetaStoreManager(metaStoreManager, callCtx);
   }
 }
diff --git 
a/polaris-core/src/test/java/org/apache/polaris/core/persistence/ResolverTest.java
 
b/polaris-core/src/test/java/org/apache/polaris/core/persistence/ResolverTest.java
index d72a199ae..ba7b202fe 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
@@ -20,6 +20,7 @@ package org.apache.polaris.core.persistence;
 
 import static 
org.apache.polaris.core.persistence.PrincipalSecretsGenerator.RANDOM_SECRETS;
 
+import java.time.Clock;
 import org.apache.polaris.core.PolarisCallContext;
 import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
 import 
org.apache.polaris.core.persistence.transactional.TransactionalMetaStoreManagerImpl;
@@ -29,6 +30,7 @@ import org.mockito.Mockito;
 
 public class ResolverTest extends BaseResolverTest {
 
+  private final Clock clock = Clock.systemUTC();
   private PolarisCallContext callCtx;
   private PolarisTestMetaStoreManager tm;
   private TransactionalMetaStoreManagerImpl metaStoreManager;
@@ -48,7 +50,7 @@ public class ResolverTest extends BaseResolverTest {
   @Override
   protected PolarisMetaStoreManager metaStoreManager() {
     if (metaStoreManager == null) {
-      metaStoreManager = new TransactionalMetaStoreManagerImpl();
+      metaStoreManager = new TransactionalMetaStoreManagerImpl(clock);
     }
     return metaStoreManager;
   }
@@ -56,7 +58,7 @@ public class ResolverTest extends BaseResolverTest {
   @Override
   protected PolarisTestMetaStoreManager tm() {
     if (tm == null) {
-      // bootstrap the mata store with our test schema
+      // bootstrap the meta store with our test schema
       tm = new PolarisTestMetaStoreManager(metaStoreManager(), callCtx());
     }
     return tm;
diff --git 
a/polaris-core/src/test/java/org/apache/polaris/core/persistence/cache/InMemoryEntityCacheTest.java
 
b/polaris-core/src/test/java/org/apache/polaris/core/persistence/cache/InMemoryEntityCacheTest.java
index 78e9a5068..1184e55a0 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
@@ -20,6 +20,7 @@ package org.apache.polaris.core.persistence.cache;
 
 import static 
org.apache.polaris.core.persistence.PrincipalSecretsGenerator.RANDOM_SECRETS;
 
+import java.time.Clock;
 import java.util.List;
 import java.util.stream.Collectors;
 import org.apache.iceberg.catalog.TableIdentifier;
@@ -47,22 +48,9 @@ import org.mockito.Mockito;
 /** Unit testing of the entity cache */
 public class InMemoryEntityCacheTest {
 
-  // diag services
   private final PolarisDiagnostics diagServices;
-
-  // the entity store, use treemap implementation
-  private final TreeMapMetaStore store;
-
-  // to interact with the metastore
-  private final TransactionalPersistence metaStore;
-
-  // polaris call context
   private final PolarisCallContext callCtx;
-
-  // utility to bootstrap the mata store
   private final PolarisTestMetaStoreManager tm;
-
-  // the meta store manager
   private final PolarisMetaStoreManager metaStoreManager;
 
   /**
@@ -89,12 +77,13 @@ public class InMemoryEntityCacheTest {
    */
   public InMemoryEntityCacheTest() {
     diagServices = new PolarisDefaultDiagServiceImpl();
-    store = new TreeMapMetaStore(diagServices);
-    metaStore = new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), 
RANDOM_SECRETS);
+    TreeMapMetaStore store = new TreeMapMetaStore(diagServices);
+    TransactionalPersistence metaStore =
+        new TreeMapTransactionalPersistenceImpl(store, Mockito.mock(), 
RANDOM_SECRETS);
+    metaStoreManager = new 
TransactionalMetaStoreManagerImpl(Clock.systemUTC());
     callCtx = new PolarisCallContext(() -> "testRealm", metaStore, 
diagServices);
-    metaStoreManager = new TransactionalMetaStoreManagerImpl();
 
-    // bootstrap the mata store with our test schema
+    // bootstrap the meta store with our test schema
     tm = new PolarisTestMetaStoreManager(metaStoreManager, callCtx);
     tm.testCreateTestCatalog();
   }
diff --git 
a/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/BasePolarisMetaStoreManagerTest.java
 
b/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/BasePolarisMetaStoreManagerTest.java
index 1b57ad1b2..b8db19612 100644
--- 
a/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/BasePolarisMetaStoreManagerTest.java
+++ 
b/polaris-core/src/testFixtures/java/org/apache/polaris/core/persistence/BasePolarisMetaStoreManagerTest.java
@@ -63,7 +63,7 @@ import org.threeten.extra.MutableClock;
  */
 public abstract class BasePolarisMetaStoreManagerTest {
 
-  protected final MutableClock timeSource = MutableClock.of(Instant.now(), 
ZoneOffset.UTC);
+  protected final MutableClock clock = MutableClock.of(Instant.now(), 
ZoneOffset.UTC);
 
   private PolarisTestMetaStoreManager polarisTestMetaStoreManager;
 
@@ -332,7 +332,7 @@ public abstract class BasePolarisMetaStoreManagerTest {
 
     Assertions.assertThat(emtpyList).isNotNull().isEmpty();
 
-    timeSource.add(Duration.ofMinutes(10));
+    clock.add(Duration.ofMinutes(10));
 
     // all the tasks are unassigned. Fetch them all
     List<PolarisBaseEntity> allTasks =
@@ -348,7 +348,7 @@ public abstract class BasePolarisMetaStoreManagerTest {
     // drop all the tasks. Skip the clock forward and fetch. empty list 
expected
     allTasks.forEach(
         entity -> metaStoreManager.dropEntityIfExists(callCtx, null, entity, 
Map.of(), false));
-    timeSource.add(Duration.ofMinutes(10));
+    clock.add(Duration.ofMinutes(10));
 
     List<PolarisBaseEntity> finalList =
         metaStoreManager.loadTasks(callCtx, executorId, 
PageToken.fromLimit(20)).getEntities();
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 68331f448..b83b68c0f 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
@@ -159,11 +159,9 @@ public class ServiceProducers {
       RealmContext realmContext,
       PolarisDiagnostics diagServices,
       PolarisConfigurationStore configurationStore,
-      MetaStoreManagerFactory metaStoreManagerFactory,
-      Clock clock) {
+      MetaStoreManagerFactory metaStoreManagerFactory) {
     BasePersistence metaStoreSession = 
metaStoreManagerFactory.getOrCreateSession(realmContext);
-    return new PolarisCallContext(
-        realmContext, metaStoreSession, diagServices, configurationStore, 
clock);
+    return new PolarisCallContext(realmContext, metaStoreSession, 
diagServices, configurationStore);
   }
 
   @Produces
diff --git 
a/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryAtomicOperationMetaStoreManagerFactory.java
 
b/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryAtomicOperationMetaStoreManagerFactory.java
index 274848091..703ad1e38 100644
--- 
a/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryAtomicOperationMetaStoreManagerFactory.java
+++ 
b/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryAtomicOperationMetaStoreManagerFactory.java
@@ -21,6 +21,7 @@ package org.apache.polaris.service.persistence;
 import io.smallrye.common.annotation.Identifier;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
+import java.time.Clock;
 import org.apache.polaris.core.PolarisDiagnostics;
 import org.apache.polaris.core.persistence.AtomicOperationMetaStoreManager;
 import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
@@ -37,17 +38,19 @@ public class InMemoryAtomicOperationMetaStoreManagerFactory
 
   @SuppressWarnings("unused") // Required by CDI
   protected InMemoryAtomicOperationMetaStoreManagerFactory() {
-    this(null, null);
+    this(null, null, null);
   }
 
   @Inject
   public InMemoryAtomicOperationMetaStoreManagerFactory(
-      PolarisStorageIntegrationProvider storageIntegration, PolarisDiagnostics 
diagnostics) {
-    super(storageIntegration, diagnostics);
+      Clock clock,
+      PolarisDiagnostics diagnostics,
+      PolarisStorageIntegrationProvider storageIntegration) {
+    super(clock, diagnostics, storageIntegration);
   }
 
   @Override
-  protected PolarisMetaStoreManager createNewMetaStoreManager() {
-    return new AtomicOperationMetaStoreManager();
+  protected PolarisMetaStoreManager createNewMetaStoreManager(Clock clock) {
+    return new AtomicOperationMetaStoreManager(clock);
   }
 }
diff --git 
a/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java
 
b/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java
index becc569d9..fb846aef5 100644
--- 
a/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java
+++ 
b/runtime/service/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java
@@ -23,6 +23,7 @@ import jakarta.annotation.Nonnull;
 import jakarta.annotation.Nullable;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
+import java.time.Clock;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
@@ -48,13 +49,15 @@ public class InMemoryPolarisMetaStoreManagerFactory
 
   @SuppressWarnings("unused") // Required by CDI
   protected InMemoryPolarisMetaStoreManagerFactory() {
-    this(null, null);
+    this(null, null, null);
   }
 
   @Inject
   public InMemoryPolarisMetaStoreManagerFactory(
-      PolarisStorageIntegrationProvider storageIntegration, PolarisDiagnostics 
diagnostics) {
-    super(diagnostics);
+      Clock clock,
+      PolarisDiagnostics diagnostics,
+      PolarisStorageIntegrationProvider storageIntegration) {
+    super(clock, diagnostics);
     this.storageIntegration = storageIntegration;
   }
 
diff --git 
a/runtime/service/src/main/java/org/apache/polaris/service/task/TableCleanupTaskHandler.java
 
b/runtime/service/src/main/java/org/apache/polaris/service/task/TableCleanupTaskHandler.java
index 679b14f70..20bce48d4 100644
--- 
a/runtime/service/src/main/java/org/apache/polaris/service/task/TableCleanupTaskHandler.java
+++ 
b/runtime/service/src/main/java/org/apache/polaris/service/task/TableCleanupTaskHandler.java
@@ -18,6 +18,7 @@
  */
 package org.apache.polaris.service.task;
 
+import java.time.Clock;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
@@ -52,15 +53,18 @@ import org.slf4j.LoggerFactory;
 public class TableCleanupTaskHandler implements TaskHandler {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(TableCleanupTaskHandler.class);
   private final TaskExecutor taskExecutor;
+  private final Clock clock;
   private final MetaStoreManagerFactory metaStoreManagerFactory;
   private final TaskFileIOSupplier fileIOSupplier;
   private static final String BATCH_SIZE_CONFIG_KEY = 
"TABLE_METADATA_CLEANUP_BATCH_SIZE";
 
   public TableCleanupTaskHandler(
       TaskExecutor taskExecutor,
+      Clock clock,
       MetaStoreManagerFactory metaStoreManagerFactory,
       TaskFileIOSupplier fileIOSupplier) {
     this.taskExecutor = taskExecutor;
+    this.clock = clock;
     this.metaStoreManagerFactory = metaStoreManagerFactory;
     this.fileIOSupplier = fileIOSupplier;
   }
@@ -183,7 +187,7 @@ public class TableCleanupTaskHandler implements TaskHandler 
{
               return new TaskEntity.Builder()
                   .setName(taskName)
                   
.setId(metaStoreManager.generateNewEntityId(polarisCallContext).getId())
-                  .setCreateTimestamp(polarisCallContext.getClock().millis())
+                  .setCreateTimestamp(clock.millis())
                   .withTaskType(AsyncTaskType.MANIFEST_FILE_CLEANUP)
                   .withData(
                       new ManifestFileCleanupTaskHandler.ManifestCleanupTask(
@@ -222,7 +226,7 @@ public class TableCleanupTaskHandler implements TaskHandler 
{
               return new TaskEntity.Builder()
                   .setName(taskName)
                   
.setId(metaStoreManager.generateNewEntityId(polarisCallContext).getId())
-                  .setCreateTimestamp(polarisCallContext.getClock().millis())
+                  .setCreateTimestamp(clock.millis())
                   .withTaskType(AsyncTaskType.BATCH_FILE_CLEANUP)
                   .withData(
                       new BatchFileCleanupTaskHandler.BatchFileCleanupTask(
diff --git 
a/runtime/service/src/main/java/org/apache/polaris/service/task/TaskExecutorImpl.java
 
b/runtime/service/src/main/java/org/apache/polaris/service/task/TaskExecutorImpl.java
index 62d66003e..6ee681ead 100644
--- 
a/runtime/service/src/main/java/org/apache/polaris/service/task/TaskExecutorImpl.java
+++ 
b/runtime/service/src/main/java/org/apache/polaris/service/task/TaskExecutorImpl.java
@@ -28,6 +28,7 @@ import jakarta.annotation.Nonnull;
 import jakarta.annotation.Nullable;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
+import java.time.Clock;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -59,6 +60,7 @@ public class TaskExecutorImpl implements TaskExecutor {
   private static final long TASK_RETRY_DELAY = 1000;
 
   private final Executor executor;
+  private final Clock clock;
   private final MetaStoreManagerFactory metaStoreManagerFactory;
   private final TaskFileIOSupplier fileIOSupplier;
   private final List<TaskHandler> taskHandlers = new CopyOnWriteArrayList<>();
@@ -67,17 +69,19 @@ public class TaskExecutorImpl implements TaskExecutor {
 
   @SuppressWarnings("unused") // Required by CDI
   protected TaskExecutorImpl() {
-    this(null, null, null, null, null);
+    this(null, null, null, null, null, null);
   }
 
   @Inject
   public TaskExecutorImpl(
       @Identifier("task-executor") Executor executor,
+      Clock clock,
       MetaStoreManagerFactory metaStoreManagerFactory,
       TaskFileIOSupplier fileIOSupplier,
       PolarisEventListener polarisEventListener,
       @Nullable Tracer tracer) {
     this.executor = executor;
+    this.clock = clock;
     this.metaStoreManagerFactory = metaStoreManagerFactory;
     this.fileIOSupplier = fileIOSupplier;
     this.polarisEventListener = polarisEventListener;
@@ -86,7 +90,8 @@ public class TaskExecutorImpl implements TaskExecutor {
 
   @Startup
   public void init() {
-    addTaskHandler(new TableCleanupTaskHandler(this, metaStoreManagerFactory, 
fileIOSupplier));
+    addTaskHandler(
+        new TableCleanupTaskHandler(this, clock, metaStoreManagerFactory, 
fileIOSupplier));
     addTaskHandler(
         new ManifestFileCleanupTaskHandler(
             fileIOSupplier, Executors.newVirtualThreadPerTaskExecutor()));
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 8e169d3c5..5e2b349d1 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
@@ -30,7 +30,6 @@ import jakarta.enterprise.inject.Alternative;
 import jakarta.inject.Inject;
 import jakarta.ws.rs.core.SecurityContext;
 import java.io.IOException;
-import java.time.Clock;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -184,7 +183,6 @@ public abstract class PolarisAuthzTestBase {
   @Inject protected CallContextCatalogFactory callContextCatalogFactory;
   @Inject protected UserSecretsManagerFactory userSecretsManagerFactory;
   @Inject protected PolarisDiagnostics diagServices;
-  @Inject protected Clock clock;
   @Inject protected FileIOFactory fileIOFactory;
   @Inject protected PolarisEventListener polarisEventListener;
   @Inject protected CatalogHandlerUtils catalogHandlerUtils;
@@ -233,8 +231,7 @@ public abstract class PolarisAuthzTestBase {
             realmContext,
             managerFactory.getOrCreateSession(realmContext),
             diagServices,
-            configurationStore,
-            clock);
+            configurationStore);
 
     callContext = polarisContext;
 
diff --git 
a/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTRSAKeyPairTest.java
 
b/runtime/service/src/test/java/org/apache/polaris/service/auth/JWTRSAKeyPairTest.java
index 8138cea02..778a27197 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
@@ -54,7 +54,7 @@ public class JWTRSAKeyPairTest {
     final String scope = "PRINCIPAL_ROLE:TEST";
 
     PolarisCallContext polarisCallContext =
-        new PolarisCallContext(null, null, null, configurationStore, null);
+        new PolarisCallContext(null, 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 9dbb59801..ac870e6f8 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, null);
+    PolarisCallContext polarisCallContext = new PolarisCallContext(null, null, 
null, null);
     PolarisMetaStoreManager metastoreManager = 
Mockito.mock(PolarisMetaStoreManager.class);
     String mainSecret = "test_secret";
     String clientId = "test_client_id";
diff --git 
a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogTest.java
 
b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogTest.java
index f5a1453b2..b37447616 100644
--- 
a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogTest.java
+++ 
b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogTest.java
@@ -221,6 +221,7 @@ public abstract class AbstractIcebergCatalogTest extends 
CatalogTests<IcebergCat
           CatalogProperties.TABLE_OVERRIDE_PREFIX + "override-key4",
           "catalog-override-key4");
 
+  @Inject Clock clock;
   @Inject MetaStoreManagerFactory metaStoreManagerFactory;
   @Inject PolarisConfigurationStore configurationStore;
   @Inject StorageCredentialCache storageCredentialCache;
@@ -277,8 +278,7 @@ public abstract class AbstractIcebergCatalogTest extends 
CatalogTests<IcebergCat
             realmContext,
             metaStoreManagerFactory.getOrCreateSession(realmContext),
             diagServices,
-            configurationStore,
-            Clock.systemDefaultZone());
+            configurationStore);
 
     EntityCache entityCache = 
createEntityCache(polarisContext.getRealmConfig(), metaStoreManager);
     resolverFactory =
@@ -2029,7 +2029,8 @@ public abstract class AbstractIcebergCatalogTest extends 
CatalogTests<IcebergCat
             });
 
     TableCleanupTaskHandler handler =
-        new TableCleanupTaskHandler(Mockito.mock(), metaStoreManagerFactory, 
taskFileIOSupplier);
+        new TableCleanupTaskHandler(
+            Mockito.mock(), clock, metaStoreManagerFactory, 
taskFileIOSupplier);
     handler.handleTask(taskEntity, polarisContext);
     Assertions.assertThat(measured.getNumDeletedFiles()).as("A table was 
deleted").isGreaterThan(0);
   }
diff --git 
a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogViewTest.java
 
b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogViewTest.java
index 0c47dc9f9..b7ad58930 100644
--- 
a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogViewTest.java
+++ 
b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractIcebergCatalogViewTest.java
@@ -28,7 +28,6 @@ import java.io.IOException;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.nio.file.Path;
-import java.time.Clock;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -160,8 +159,7 @@ public abstract class AbstractIcebergCatalogViewTest 
extends ViewCatalogTests<Ic
             realmContext,
             metaStoreManagerFactory.getOrCreateSession(realmContext),
             diagServices,
-            configurationStore,
-            Clock.systemDefaultZone());
+            configurationStore);
 
     PrincipalEntity rootPrincipal =
         metaStoreManager.findRootPrincipal(polarisContext).orElseThrow();
diff --git 
a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolarisGenericTableCatalogTest.java
 
b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolarisGenericTableCatalogTest.java
index c4d4c4402..f2524798f 100644
--- 
a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolarisGenericTableCatalogTest.java
+++ 
b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolarisGenericTableCatalogTest.java
@@ -28,7 +28,6 @@ import jakarta.inject.Inject;
 import jakarta.ws.rs.core.SecurityContext;
 import java.io.IOException;
 import java.lang.reflect.Method;
-import java.time.Clock;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -152,8 +151,7 @@ public abstract class 
AbstractPolarisGenericTableCatalogTest {
             realmContext,
             metaStoreManagerFactory.getOrCreateSession(realmContext),
             diagServices,
-            configurationStore,
-            Clock.systemDefaultZone());
+            configurationStore);
 
     PrincipalEntity rootPrincipal =
         metaStoreManager.findRootPrincipal(polarisContext).orElseThrow();
diff --git 
a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolicyCatalogTest.java
 
b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolicyCatalogTest.java
index 885468118..dbfab7da2 100644
--- 
a/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolicyCatalogTest.java
+++ 
b/runtime/service/src/test/java/org/apache/polaris/service/catalog/AbstractPolicyCatalogTest.java
@@ -34,7 +34,6 @@ import jakarta.inject.Inject;
 import jakarta.ws.rs.core.SecurityContext;
 import java.io.IOException;
 import java.lang.reflect.Method;
-import java.time.Clock;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Set;
@@ -175,8 +174,7 @@ public abstract class AbstractPolicyCatalogTest {
             realmContext,
             metaStoreManagerFactory.getOrCreateSession(realmContext),
             diagServices,
-            configurationStore,
-            Clock.systemDefaultZone());
+            configurationStore);
 
     callContext = polarisContext;
 
diff --git 
a/runtime/service/src/test/java/org/apache/polaris/service/entity/CatalogEntityTest.java
 
b/runtime/service/src/test/java/org/apache/polaris/service/entity/CatalogEntityTest.java
index c04ea78d9..a9969d04a 100644
--- 
a/runtime/service/src/test/java/org/apache/polaris/service/entity/CatalogEntityTest.java
+++ 
b/runtime/service/src/test/java/org/apache/polaris/service/entity/CatalogEntityTest.java
@@ -22,6 +22,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import java.time.Clock;
 import java.util.List;
 import java.util.stream.Stream;
 import org.apache.polaris.core.PolarisCallContext;
@@ -51,6 +52,7 @@ import org.junit.jupiter.params.provider.ValueSource;
 public class CatalogEntityTest {
   private static final ObjectMapper MAPPER = new ObjectMapper();
 
+  private final Clock clock = Clock.systemUTC();
   private final PolarisDiagnostics diagnostics = new 
PolarisDefaultDiagServiceImpl();
   private CallContext callContext;
 
@@ -58,7 +60,7 @@ public class CatalogEntityTest {
   public void setup() {
     RealmContext realmContext = () -> "realm";
     MetaStoreManagerFactory metaStoreManagerFactory =
-        new InMemoryPolarisMetaStoreManagerFactory(null, diagnostics);
+        new InMemoryPolarisMetaStoreManagerFactory(clock, diagnostics, null);
     BasePersistence metaStore = 
metaStoreManagerFactory.getOrCreateSession(realmContext);
     this.callContext = new PolarisCallContext(realmContext, metaStore, 
diagnostics);
   }
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 555ff0cbd..3663c8a22 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
@@ -60,6 +60,7 @@ import org.slf4j.LoggerFactory;
 
 @QuarkusTest
 class TableCleanupTaskHandlerTest {
+  @Inject Clock clock;
   @Inject MetaStoreManagerFactory metaStoreManagerFactory;
   @Inject PolarisConfigurationStore configurationStore;
   @Inject PolarisDiagnostics diagServices;
@@ -68,8 +69,10 @@ class TableCleanupTaskHandlerTest {
 
   private final RealmContext realmContext = () -> "realmName";
 
-  private TaskFileIOSupplier buildTaskFileIOSupplier(FileIO fileIO) {
-    return new TaskFileIOSupplier(new TestFileIOFactory(fileIO));
+  private TableCleanupTaskHandler newTableCleanupTaskHandler(FileIO fileIO) {
+    TaskFileIOSupplier taskFileIOSupplier = new TaskFileIOSupplier(new 
TestFileIOFactory(fileIO));
+    return new TableCleanupTaskHandler(
+        Mockito.mock(), clock, metaStoreManagerFactory, taskFileIOSupplier);
   }
 
   @BeforeEach
@@ -81,17 +84,14 @@ class TableCleanupTaskHandlerTest {
             realmContext,
             metaStoreManagerFactory.getOrCreateSession(realmContext),
             diagServices,
-            configurationStore,
-            Clock.systemDefaultZone());
+            configurationStore);
   }
 
   @Test
   public void testTableCleanup() throws IOException {
     FileIO fileIO = new InMemoryFileIO();
     TableIdentifier tableIdentifier = TableIdentifier.of(Namespace.of("db1", 
"schema1"), "table1");
-    TableCleanupTaskHandler handler =
-        new TableCleanupTaskHandler(
-            Mockito.mock(), metaStoreManagerFactory, 
buildTaskFileIOSupplier(fileIO));
+    TableCleanupTaskHandler handler = newTableCleanupTaskHandler(fileIO);
     long snapshotId = 100L;
     ManifestFile manifestFile =
         TaskTestUtils.manifestFile(
@@ -166,9 +166,7 @@ class TableCleanupTaskHandlerTest {
           }
         };
     TableIdentifier tableIdentifier = TableIdentifier.of(Namespace.of("db1", 
"schema1"), "table1");
-    TableCleanupTaskHandler handler =
-        new TableCleanupTaskHandler(
-            Mockito.mock(), metaStoreManagerFactory, 
buildTaskFileIOSupplier(fileIO));
+    TableCleanupTaskHandler handler = newTableCleanupTaskHandler(fileIO);
     long snapshotId = 100L;
     ManifestFile manifestFile =
         TaskTestUtils.manifestFile(
@@ -226,9 +224,7 @@ class TableCleanupTaskHandlerTest {
           }
         };
     TableIdentifier tableIdentifier = TableIdentifier.of(Namespace.of("db1", 
"schema1"), "table1");
-    TableCleanupTaskHandler handler =
-        new TableCleanupTaskHandler(
-            Mockito.mock(), metaStoreManagerFactory, 
buildTaskFileIOSupplier(fileIO));
+    TableCleanupTaskHandler handler = newTableCleanupTaskHandler(fileIO);
     long snapshotId = 100L;
     ManifestFile manifestFile =
         TaskTestUtils.manifestFile(
@@ -318,9 +314,7 @@ class TableCleanupTaskHandlerTest {
   public void testTableCleanupMultipleSnapshots() throws IOException {
     FileIO fileIO = new InMemoryFileIO();
     TableIdentifier tableIdentifier = TableIdentifier.of(Namespace.of("db1", 
"schema1"), "table1");
-    TableCleanupTaskHandler handler =
-        new TableCleanupTaskHandler(
-            Mockito.mock(), metaStoreManagerFactory, 
buildTaskFileIOSupplier(fileIO));
+    TableCleanupTaskHandler handler = newTableCleanupTaskHandler(fileIO);
     long snapshotId1 = 100L;
     ManifestFile manifestFile1 =
         TaskTestUtils.manifestFile(
@@ -461,9 +455,7 @@ class TableCleanupTaskHandlerTest {
   public void testTableCleanupMultipleMetadata() throws IOException {
     FileIO fileIO = new InMemoryFileIO();
     TableIdentifier tableIdentifier = TableIdentifier.of(Namespace.of("db1", 
"schema1"), "table1");
-    TableCleanupTaskHandler handler =
-        new TableCleanupTaskHandler(
-            Mockito.mock(), metaStoreManagerFactory, 
buildTaskFileIOSupplier(fileIO));
+    TableCleanupTaskHandler handler = newTableCleanupTaskHandler(fileIO);
     long snapshotId1 = 100L;
     ManifestFile manifestFile1 =
         TaskTestUtils.manifestFile(
diff --git 
a/runtime/service/src/test/java/org/apache/polaris/service/task/TaskExecutorImplTest.java
 
b/runtime/service/src/test/java/org/apache/polaris/service/task/TaskExecutorImplTest.java
index 9cdbadd72..03f9c88a3 100644
--- 
a/runtime/service/src/test/java/org/apache/polaris/service/task/TaskExecutorImplTest.java
+++ 
b/runtime/service/src/test/java/org/apache/polaris/service/task/TaskExecutorImplTest.java
@@ -55,7 +55,7 @@ public class TaskExecutorImplTest {
         new TaskEntity.Builder()
             .setName("mytask")
             
.setId(metaStoreManager.generateNewEntityId(polarisCallCtx).getId())
-            .setCreateTimestamp(polarisCallCtx.getClock().millis())
+            .setCreateTimestamp(testServices.clock().millis())
             .build();
     metaStoreManager.createEntityIfNotExists(polarisCallCtx, null, taskEntity);
 
@@ -64,6 +64,7 @@ public class TaskExecutorImplTest {
     TaskExecutorImpl executor =
         new TaskExecutorImpl(
             Runnable::run,
+            testServices.clock(),
             testServices.metaStoreManagerFactory(),
             new TaskFileIOSupplier(testServices.fileIOFactory()),
             testServices.polarisEventListener(),
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 17ee8d40e..eb5dd948d 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
@@ -110,11 +110,7 @@ public class PolarisIntegrationTestFixture {
         helper.metaStoreManagerFactory.getOrCreateSession(realmContext);
     PolarisCallContext polarisContext =
         new PolarisCallContext(
-            realmContext,
-            metaStoreSession,
-            helper.diagServices,
-            helper.configurationStore,
-            helper.clock);
+            realmContext, metaStoreSession, helper.diagServices, 
helper.configurationStore);
     PolarisMetaStoreManager metaStoreManager =
         
helper.metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext);
     PrincipalEntity principal = 
metaStoreManager.findRootPrincipal(polarisContext).orElseThrow();
diff --git 
a/runtime/service/src/test/java/org/apache/polaris/service/test/PolarisIntegrationTestHelper.java
 
b/runtime/service/src/test/java/org/apache/polaris/service/test/PolarisIntegrationTestHelper.java
index 1780bde2c..6fdff1d7c 100644
--- 
a/runtime/service/src/test/java/org/apache/polaris/service/test/PolarisIntegrationTestHelper.java
+++ 
b/runtime/service/src/test/java/org/apache/polaris/service/test/PolarisIntegrationTestHelper.java
@@ -21,7 +21,6 @@ package org.apache.polaris.service.test;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import jakarta.inject.Inject;
 import jakarta.inject.Singleton;
-import java.time.Clock;
 import org.apache.polaris.core.PolarisDiagnostics;
 import org.apache.polaris.core.config.PolarisConfigurationStore;
 import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
@@ -36,7 +35,6 @@ public class PolarisIntegrationTestHelper {
   @Inject ObjectMapper objectMapper;
   @Inject PolarisDiagnostics diagServices;
   @Inject PolarisConfigurationStore configurationStore;
-  @Inject Clock clock;
 
   public PolarisIntegrationTestFixture createFixture(TestEnvironment testEnv, 
TestInfo testInfo) {
     return new PolarisIntegrationTestFixture(this, testEnv, testInfo);
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 ed78d8bfe..d8ec77788 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
@@ -76,6 +76,7 @@ import org.mockito.Mockito;
 import software.amazon.awssdk.services.sts.StsClient;
 
 public record TestServices(
+    Clock clock,
     PolarisCatalogsApi catalogsApi,
     IcebergRestCatalogApi restApi,
     IcebergRestConfigurationApi restConfigurationApi,
@@ -119,6 +120,7 @@ public record TestServices(
   }
 
   public static class Builder {
+    private Clock clock = Clock.systemUTC();
     private PolarisDiagnostics polarisDiagnostics = new 
PolarisDefaultDiagServiceImpl();
     private RealmContext realmContext = TEST_REALM;
     private Map<String, Object> config = Map.of();
@@ -159,7 +161,7 @@ public record TestServices(
               () -> GoogleCredentials.create(new AccessToken(GCP_ACCESS_TOKEN, 
new Date())));
       InMemoryPolarisMetaStoreManagerFactory metaStoreManagerFactory =
           new InMemoryPolarisMetaStoreManagerFactory(
-              storageIntegrationProvider, polarisDiagnostics);
+              clock, polarisDiagnostics, storageIntegrationProvider);
 
       StorageCredentialCacheConfig storageCredentialCacheConfig = () -> 10_000;
       StorageCredentialCache storageCredentialCache =
@@ -171,11 +173,7 @@ public record TestServices(
       BasePersistence metaStoreSession = 
metaStoreManagerFactory.getOrCreateSession(realmContext);
       CallContext callContext =
           new PolarisCallContext(
-              realmContext,
-              metaStoreSession,
-              polarisDiagnostics,
-              configurationStore,
-              Clock.systemUTC());
+              realmContext, metaStoreSession, polarisDiagnostics, 
configurationStore);
 
       PolarisMetaStoreManager metaStoreManager =
           metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext);
@@ -281,6 +279,7 @@ public record TestServices(
                   reservedProperties));
 
       return new TestServices(
+          clock,
           catalogsApi,
           restApi,
           restConfigurationApi,
@@ -301,7 +300,6 @@ public record TestServices(
 
   public PolarisCallContext newCallContext() {
     BasePersistence metaStore = 
metaStoreManagerFactory.getOrCreateSession(realmContext);
-    return new PolarisCallContext(
-        realmContext, metaStore, polarisDiagnostics, configurationStore, 
Clock.systemUTC());
+    return new PolarisCallContext(realmContext, metaStore, polarisDiagnostics, 
configurationStore);
   }
 }

Reply via email to