This is an automated email from the ASF dual-hosted git repository.
emaynard 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 886d1116d Remove PolarisEntityManager.getCredentialCache (#2133)
886d1116d is described below
commit 886d1116da3bb09d8cc9278af907abc733e36681
Author: Christopher Lambert <[email protected]>
AuthorDate: Tue Jul 22 01:25:31 2025 +0200
Remove PolarisEntityManager.getCredentialCache (#2133)
`PolarisEntityManager` itself is not using the `StorageCredentialCache` but
just hands it out via `getCredentialCache`.
the only caller of `getCredentialCache` is
`FileIOUtil.refreshAccessConfig`, which in in turn is only called by
`DefaultFileIOFactory` and `IcebergCatalog`.
note that in a follow-up we will likely be able to remove
`PolarisEntityManager` usage completely from `IcebergCatalog`.
additional cleanups:
- use `StorageCredentialCache` injection in tests (but we need to
invalidate all entries on test start)
- remove unused `UserSecretsManagerFactory` from
`PolarisCallContextCatalogFactory`
---
.../core/persistence/PolarisEntityManager.java | 13 +---------
.../core/storage/cache/StorageCredentialCache.java | 5 ++++
.../quarkus/admin/PolarisAuthzTestBase.java | 9 +++++--
.../admin/PolarisS3InteroperabilityTest.java | 2 +-
.../catalog/AbstractIcebergCatalogTest.java | 30 ++++++++--------------
.../catalog/AbstractIcebergCatalogViewTest.java | 25 ++++++++----------
.../AbstractPolarisGenericTableCatalogTest.java | 27 ++++++++-----------
.../quarkus/catalog/AbstractPolicyCatalogTest.java | 27 ++++++++-----------
.../catalog/IcebergCatalogHandlerAuthzTest.java | 4 +--
.../service/catalog/iceberg/IcebergCatalog.java | 8 +++---
.../service/catalog/io/DefaultFileIOFactory.java | 13 ++++------
.../polaris/service/catalog/io/FileIOUtil.java | 20 +++++++--------
.../catalog/io/WasbTranslatingFileIOFactory.java | 6 ++---
.../service/config/RealmEntityManagerFactory.java | 7 +----
.../catalog/PolarisCallContextCatalogFactory.java | 9 ++++---
.../service/catalog/io/FileIOFactoryTest.java | 5 ++--
.../org/apache/polaris/service/TestServices.java | 11 ++++----
.../service/catalog/io/MeasuredFileIOFactory.java | 6 ++---
18 files changed, 98 insertions(+), 129 deletions(-)
diff --git
a/polaris-core/src/main/java/org/apache/polaris/core/persistence/PolarisEntityManager.java
b/polaris-core/src/main/java/org/apache/polaris/core/persistence/PolarisEntityManager.java
index 033730cb9..01342be2e 100644
---
a/polaris-core/src/main/java/org/apache/polaris/core/persistence/PolarisEntityManager.java
+++
b/polaris-core/src/main/java/org/apache/polaris/core/persistence/PolarisEntityManager.java
@@ -32,7 +32,6 @@ import org.apache.polaris.core.entity.PolarisPrivilege;
import org.apache.polaris.core.persistence.cache.EntityCache;
import org.apache.polaris.core.persistence.resolver.PolarisResolutionManifest;
import org.apache.polaris.core.persistence.resolver.Resolver;
-import org.apache.polaris.core.storage.cache.StorageCredentialCache;
/**
* Wraps logic of handling name-caching and entity-caching against a concrete
underlying entity
@@ -43,22 +42,16 @@ public class PolarisEntityManager {
private final PolarisMetaStoreManager metaStoreManager;
private final EntityCache entityCache;
- private final StorageCredentialCache credentialCache;
-
// Lazily instantiated only a single time per entity manager.
private ResolvedPolarisEntity implicitResolvedRootContainerEntity = null;
/**
* @param metaStoreManager the metastore manager for the current realm
- * @param credentialCache the storage credential cache for the current realm
* @param entityCache the entity cache to use (it may be {@code null}).
*/
public PolarisEntityManager(
- @Nonnull PolarisMetaStoreManager metaStoreManager,
- @Nonnull StorageCredentialCache credentialCache,
- @Nullable EntityCache entityCache) {
+ @Nonnull PolarisMetaStoreManager metaStoreManager, @Nullable EntityCache
entityCache) {
this.metaStoreManager = metaStoreManager;
- this.credentialCache = credentialCache;
this.entityCache = entityCache;
}
@@ -133,8 +126,4 @@ public class PolarisEntityManager {
}
return implicitResolvedRootContainerEntity;
}
-
- public StorageCredentialCache getCredentialCache() {
- return credentialCache;
- }
}
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 44b41afb3..49dc858d3 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
@@ -169,4 +169,9 @@ public class StorageCredentialCache {
public long getEstimatedSize() {
return this.cache.estimatedSize();
}
+
+ @VisibleForTesting
+ public void invalidateAll() {
+ this.cache.invalidateAll();
+ }
}
diff --git
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/admin/PolarisAuthzTestBase.java
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/admin/PolarisAuthzTestBase.java
index c86cefe6e..53698728c 100644
---
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/admin/PolarisAuthzTestBase.java
+++
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/admin/PolarisAuthzTestBase.java
@@ -75,6 +75,7 @@ import
org.apache.polaris.core.persistence.resolver.PolarisResolutionManifest;
import org.apache.polaris.core.policy.PredefinedPolicyTypes;
import org.apache.polaris.core.secrets.UserSecretsManager;
import org.apache.polaris.core.secrets.UserSecretsManagerFactory;
+import org.apache.polaris.core.storage.cache.StorageCredentialCache;
import org.apache.polaris.service.admin.PolarisAdminService;
import org.apache.polaris.service.catalog.PolarisPassthroughResolutionView;
import org.apache.polaris.service.catalog.generic.PolarisGenericTableCatalog;
@@ -191,6 +192,7 @@ public abstract class PolarisAuthzTestBase {
@Inject protected PolarisEventListener polarisEventListener;
@Inject protected CatalogHandlerUtils catalogHandlerUtils;
@Inject protected PolarisConfigurationStore configurationStore;
+ @Inject protected StorageCredentialCache storageCredentialCache;
protected IcebergCatalog baseCatalog;
protected PolarisGenericTableCatalog genericTableCatalog;
@@ -220,6 +222,8 @@ public abstract class PolarisAuthzTestBase {
@BeforeEach
public void before(TestInfo testInfo) {
+ storageCredentialCache.invalidateAll();
+
RealmContext realmContext = testInfo::getDisplayName;
QuarkusMock.installMockForType(realmContext, RealmContext.class);
metaStoreManager =
managerFactory.getOrCreateMetaStoreManager(realmContext);
@@ -463,6 +467,7 @@ public abstract class PolarisAuthzTestBase {
callContext, entityManager, securityContext, CATALOG_NAME);
this.baseCatalog =
new IcebergCatalog(
+ storageCredentialCache,
entityManager,
metaStoreManager,
callContext,
@@ -492,16 +497,16 @@ public abstract class PolarisAuthzTestBase {
@Inject
public TestPolarisCallContextCatalogFactory(
+ StorageCredentialCache storageCredentialCache,
RealmEntityManagerFactory entityManagerFactory,
MetaStoreManagerFactory metaStoreManagerFactory,
- UserSecretsManagerFactory userSecretsManagerFactory,
TaskExecutor taskExecutor,
FileIOFactory fileIOFactory,
PolarisEventListener polarisEventListener) {
super(
+ storageCredentialCache,
entityManagerFactory,
metaStoreManagerFactory,
- userSecretsManagerFactory,
taskExecutor,
fileIOFactory,
polarisEventListener);
diff --git
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/admin/PolarisS3InteroperabilityTest.java
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/admin/PolarisS3InteroperabilityTest.java
index ff9dbb6c3..1467d54b4 100644
---
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/admin/PolarisS3InteroperabilityTest.java
+++
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/admin/PolarisS3InteroperabilityTest.java
@@ -73,7 +73,7 @@ public class PolarisS3InteroperabilityTest {
public PolarisS3InteroperabilityTest() {
TestServices.FileIOFactorySupplier fileIOFactorySupplier =
- (entityManagerFactory, metaStoreManagerFactory) ->
+ (storageCredentialCache, metaStoreManagerFactory) ->
(FileIOFactory)
(callContext,
ioImplClassName,
diff --git
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractIcebergCatalogTest.java
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractIcebergCatalogTest.java
index c153a2518..463ef4daf 100644
---
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractIcebergCatalogTest.java
+++
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractIcebergCatalogTest.java
@@ -125,7 +125,6 @@ import
org.apache.polaris.core.storage.StorageAccessProperty;
import org.apache.polaris.core.storage.aws.AwsCredentialsStorageIntegration;
import org.apache.polaris.core.storage.aws.AwsStorageConfigurationInfo;
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
-import org.apache.polaris.core.storage.cache.StorageCredentialCacheConfig;
import org.apache.polaris.service.admin.PolarisAdminService;
import org.apache.polaris.service.catalog.PolarisPassthroughResolutionView;
import org.apache.polaris.service.catalog.iceberg.CatalogHandlerUtils;
@@ -134,7 +133,6 @@ import
org.apache.polaris.service.catalog.io.DefaultFileIOFactory;
import org.apache.polaris.service.catalog.io.ExceptionMappingFileIO;
import org.apache.polaris.service.catalog.io.FileIOFactory;
import org.apache.polaris.service.catalog.io.MeasuredFileIOFactory;
-import org.apache.polaris.service.config.RealmEntityManagerFactory;
import org.apache.polaris.service.config.ReservedProperties;
import org.apache.polaris.service.events.AfterTableCommitedEvent;
import org.apache.polaris.service.events.AfterTableRefreshedEvent;
@@ -225,7 +223,7 @@ public abstract class AbstractIcebergCatalogTest extends
CatalogTests<IcebergCat
@Inject MetaStoreManagerFactory metaStoreManagerFactory;
@Inject PolarisConfigurationStore configurationStore;
- @Inject StorageCredentialCacheConfig storageCredentialCacheConfig;
+ @Inject StorageCredentialCache storageCredentialCache;
@Inject PolarisStorageIntegrationProvider storageIntegrationProvider;
@Inject UserSecretsManagerFactory userSecretsManagerFactory;
@Inject PolarisDiagnostics diagServices;
@@ -237,8 +235,6 @@ public abstract class AbstractIcebergCatalogTest extends
CatalogTests<IcebergCat
private UserSecretsManager userSecretsManager;
private PolarisCallContext polarisContext;
private PolarisAdminService adminService;
- private StorageCredentialCache storageCredentialCache;
- private RealmEntityManagerFactory realmEntityManagerFactory;
private PolarisEntityManager entityManager;
private FileIOFactory fileIOFactory;
private InMemoryFileIO fileIO;
@@ -263,6 +259,8 @@ public abstract class AbstractIcebergCatalogTest extends
CatalogTests<IcebergCat
@BeforeEach
@SuppressWarnings("unchecked")
public void before(TestInfo testInfo) {
+ storageCredentialCache.invalidateAll();
+
realmName =
"realm_%s_%s"
.formatted(
@@ -281,13 +279,8 @@ public abstract class AbstractIcebergCatalogTest extends
CatalogTests<IcebergCat
configurationStore,
Clock.systemDefaultZone());
- storageCredentialCache = new
StorageCredentialCache(storageCredentialCacheConfig);
-
- entityManager =
- new PolarisEntityManager(
- metaStoreManager,
- storageCredentialCache,
- createEntityCache(polarisContext.getRealmConfig(),
metaStoreManager));
+ EntityCache entityCache =
createEntityCache(polarisContext.getRealmConfig(), metaStoreManager);
+ entityManager = new PolarisEntityManager(metaStoreManager, entityCache);
//
LocalPolarisMetaStoreManagerFactory.bootstrapServiceAndCreatePolarisPrincipalForRealm
sets
// the CallContext.setCurrentContext() but never clears it, whereas the
NoSQL one resets it.
@@ -352,11 +345,7 @@ public abstract class AbstractIcebergCatalogTest extends
CatalogTests<IcebergCat
.build()
.asCatalog()));
- realmEntityManagerFactory =
- new RealmEntityManagerFactory(
- metaStoreManagerFactory, configurationStore,
storageCredentialCache);
- this.fileIOFactory =
- new DefaultFileIOFactory(realmEntityManagerFactory,
metaStoreManagerFactory);
+ this.fileIOFactory = new DefaultFileIOFactory(storageCredentialCache,
metaStoreManagerFactory);
StsClient stsClient = Mockito.mock(StsClient.class);
when(stsClient.assumeRole(isA(AssumeRoleRequest.class)))
@@ -447,6 +436,7 @@ public abstract class AbstractIcebergCatalogTest extends
CatalogTests<IcebergCat
polarisContext, entityManager, securityContext, catalogName);
TaskExecutor taskExecutor = Mockito.mock(TaskExecutor.class);
return new IcebergCatalog(
+ storageCredentialCache,
entityManager,
metaStoreManager,
polarisContext,
@@ -996,7 +986,7 @@ public abstract class AbstractIcebergCatalogTest extends
CatalogTests<IcebergCat
final String tableLocation =
"s3://externally-owned-bucket/validate_table/";
final String tableMetadataLocation = tableLocation + "metadata/";
FileIOFactory fileIOFactory =
- spy(new DefaultFileIOFactory(realmEntityManagerFactory,
metaStoreManagerFactory));
+ spy(new DefaultFileIOFactory(storageCredentialCache,
metaStoreManagerFactory));
IcebergCatalog catalog = newIcebergCatalog(catalog().name(),
metaStoreManager, fileIOFactory);
catalog.initialize(
CATALOG_NAME,
@@ -1849,7 +1839,7 @@ public abstract class AbstractIcebergCatalogTest extends
CatalogTests<IcebergCat
.containsEntry(StorageAccessProperty.AWS_TOKEN, SESSION_TOKEN);
FileIO fileIO =
new TaskFileIOSupplier(
- new DefaultFileIOFactory(realmEntityManagerFactory,
metaStoreManagerFactory))
+ new DefaultFileIOFactory(storageCredentialCache,
metaStoreManagerFactory))
.apply(taskEntity, polarisContext);
Assertions.assertThat(fileIO).isNotNull().isInstanceOf(ExceptionMappingFileIO.class);
Assertions.assertThat(((ExceptionMappingFileIO) fileIO).getInnerIo())
@@ -1976,7 +1966,7 @@ public abstract class AbstractIcebergCatalogTest extends
CatalogTests<IcebergCat
@Test
public void testFileIOWrapper() {
MeasuredFileIOFactory measured =
- new MeasuredFileIOFactory(realmEntityManagerFactory,
metaStoreManagerFactory);
+ new MeasuredFileIOFactory(storageCredentialCache,
metaStoreManagerFactory);
IcebergCatalog catalog = newIcebergCatalog(CATALOG_NAME, metaStoreManager,
measured);
catalog.initialize(
CATALOG_NAME,
diff --git
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractIcebergCatalogViewTest.java
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractIcebergCatalogViewTest.java
index 8d55d288a..2a0408e8b 100644
---
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractIcebergCatalogViewTest.java
+++
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractIcebergCatalogViewTest.java
@@ -55,16 +55,15 @@ import org.apache.polaris.core.entity.PrincipalEntity;
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
import org.apache.polaris.core.persistence.PolarisEntityManager;
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
+import org.apache.polaris.core.persistence.cache.EntityCache;
import org.apache.polaris.core.secrets.UserSecretsManager;
import org.apache.polaris.core.secrets.UserSecretsManagerFactory;
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
-import org.apache.polaris.core.storage.cache.StorageCredentialCacheConfig;
import org.apache.polaris.service.admin.PolarisAdminService;
import org.apache.polaris.service.catalog.PolarisPassthroughResolutionView;
import org.apache.polaris.service.catalog.iceberg.IcebergCatalog;
import org.apache.polaris.service.catalog.io.DefaultFileIOFactory;
import org.apache.polaris.service.catalog.io.FileIOFactory;
-import org.apache.polaris.service.config.RealmEntityManagerFactory;
import org.apache.polaris.service.config.ReservedProperties;
import org.apache.polaris.service.events.AfterViewCommitedEvent;
import org.apache.polaris.service.events.AfterViewRefreshedEvent;
@@ -115,7 +114,7 @@ public abstract class AbstractIcebergCatalogViewTest
extends ViewCatalogTests<Ic
@Inject MetaStoreManagerFactory metaStoreManagerFactory;
@Inject UserSecretsManagerFactory userSecretsManagerFactory;
@Inject PolarisConfigurationStore configurationStore;
- @Inject StorageCredentialCacheConfig storageCredentialCacheConfig;
+ @Inject StorageCredentialCache storageCredentialCache;
@Inject PolarisDiagnostics diagServices;
@Inject PolarisEventListener polarisEventListener;
@@ -147,6 +146,8 @@ public abstract class AbstractIcebergCatalogViewTest
extends ViewCatalogTests<Ic
@BeforeEach
public void before(TestInfo testInfo) {
+ storageCredentialCache.invalidateAll();
+
realmName =
"realm_%s_%s"
.formatted(
@@ -165,14 +166,10 @@ public abstract class AbstractIcebergCatalogViewTest
extends ViewCatalogTests<Ic
configurationStore,
Clock.systemDefaultZone());
- StorageCredentialCache storageCredentialCache =
- new StorageCredentialCache(storageCredentialCacheConfig);
- PolarisEntityManager entityManager =
- new PolarisEntityManager(
- metaStoreManager,
- storageCredentialCache,
- metaStoreManagerFactory.getOrCreateEntityCache(
- polarisContext.getRealmContext(),
polarisContext.getRealmConfig()));
+ EntityCache entityCache =
+ metaStoreManagerFactory.getOrCreateEntityCache(
+ polarisContext.getRealmContext(), polarisContext.getRealmConfig());
+ PolarisEntityManager entityManager = new
PolarisEntityManager(metaStoreManager, entityCache);
CallContext.setCurrentContext(polarisContext);
@@ -226,15 +223,13 @@ public abstract class AbstractIcebergCatalogViewTest
extends ViewCatalogTests<Ic
PolarisPassthroughResolutionView passthroughView =
new PolarisPassthroughResolutionView(
polarisContext, entityManager, securityContext, CATALOG_NAME);
- RealmEntityManagerFactory realmEntityManagerFactory =
- new RealmEntityManagerFactory(
- metaStoreManagerFactory, configurationStore,
storageCredentialCache);
FileIOFactory fileIOFactory =
- new DefaultFileIOFactory(realmEntityManagerFactory,
metaStoreManagerFactory);
+ new DefaultFileIOFactory(storageCredentialCache,
metaStoreManagerFactory);
testPolarisEventListener = (TestPolarisEventListener) polarisEventListener;
this.catalog =
new IcebergCatalog(
+ storageCredentialCache,
entityManager,
metaStoreManager,
polarisContext,
diff --git
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractPolarisGenericTableCatalogTest.java
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractPolarisGenericTableCatalogTest.java
index ade4768f4..473fa2ed7 100644
---
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractPolarisGenericTableCatalogTest.java
+++
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractPolarisGenericTableCatalogTest.java
@@ -56,6 +56,7 @@ import
org.apache.polaris.core.entity.table.GenericTableEntity;
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
import org.apache.polaris.core.persistence.PolarisEntityManager;
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
+import org.apache.polaris.core.persistence.cache.EntityCache;
import org.apache.polaris.core.secrets.UserSecretsManager;
import org.apache.polaris.core.secrets.UserSecretsManagerFactory;
import org.apache.polaris.core.storage.PolarisStorageIntegration;
@@ -63,14 +64,12 @@ import
org.apache.polaris.core.storage.PolarisStorageIntegrationProvider;
import org.apache.polaris.core.storage.aws.AwsCredentialsStorageIntegration;
import org.apache.polaris.core.storage.aws.AwsStorageConfigurationInfo;
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
-import org.apache.polaris.core.storage.cache.StorageCredentialCacheConfig;
import org.apache.polaris.service.admin.PolarisAdminService;
import org.apache.polaris.service.catalog.PolarisPassthroughResolutionView;
import org.apache.polaris.service.catalog.generic.PolarisGenericTableCatalog;
import org.apache.polaris.service.catalog.iceberg.IcebergCatalog;
import org.apache.polaris.service.catalog.io.DefaultFileIOFactory;
import org.apache.polaris.service.catalog.io.FileIOFactory;
-import org.apache.polaris.service.config.RealmEntityManagerFactory;
import org.apache.polaris.service.config.ReservedProperties;
import org.apache.polaris.service.events.NoOpPolarisEventListener;
import
org.apache.polaris.service.storage.PolarisStorageIntegrationProviderImpl;
@@ -102,7 +101,7 @@ public abstract class
AbstractPolarisGenericTableCatalogTest {
@Inject MetaStoreManagerFactory metaStoreManagerFactory;
@Inject UserSecretsManagerFactory userSecretsManagerFactory;
@Inject PolarisConfigurationStore configurationStore;
- @Inject StorageCredentialCacheConfig storageCredentialCacheConfig;
+ @Inject StorageCredentialCache storageCredentialCache;
@Inject PolarisStorageIntegrationProvider storageIntegrationProvider;
@Inject PolarisDiagnostics diagServices;
@@ -138,6 +137,8 @@ public abstract class
AbstractPolarisGenericTableCatalogTest {
@BeforeEach
@SuppressWarnings("unchecked")
public void before(TestInfo testInfo) {
+ storageCredentialCache.invalidateAll();
+
realmName =
"realm_%s_%s"
.formatted(
@@ -155,14 +156,11 @@ public abstract class
AbstractPolarisGenericTableCatalogTest {
diagServices,
configurationStore,
Clock.systemDefaultZone());
- StorageCredentialCache storageCredentialCache =
- new StorageCredentialCache(storageCredentialCacheConfig);
- entityManager =
- new PolarisEntityManager(
- metaStoreManager,
- storageCredentialCache,
- metaStoreManagerFactory.getOrCreateEntityCache(
- realmContext, polarisContext.getRealmConfig()));
+
+ EntityCache entityCache =
+ metaStoreManagerFactory.getOrCreateEntityCache(
+ realmContext, polarisContext.getRealmConfig());
+ entityManager = new PolarisEntityManager(metaStoreManager, entityCache);
PrincipalEntity rootEntity =
new PrincipalEntity(
@@ -226,11 +224,7 @@ public abstract class
AbstractPolarisGenericTableCatalogTest {
new PolarisPassthroughResolutionView(
polarisContext, entityManager, securityContext, CATALOG_NAME);
TaskExecutor taskExecutor = Mockito.mock();
- RealmEntityManagerFactory realmEntityManagerFactory =
- new RealmEntityManagerFactory(
- metaStoreManagerFactory, configurationStore,
storageCredentialCache);
- this.fileIOFactory =
- new DefaultFileIOFactory(realmEntityManagerFactory,
metaStoreManagerFactory);
+ this.fileIOFactory = new DefaultFileIOFactory(storageCredentialCache,
metaStoreManagerFactory);
StsClient stsClient = Mockito.mock(StsClient.class);
when(stsClient.assumeRole(isA(AssumeRoleRequest.class)))
@@ -254,6 +248,7 @@ public abstract class
AbstractPolarisGenericTableCatalogTest {
this.genericTableCatalog.initialize(CATALOG_NAME, Map.of());
this.icebergCatalog =
new IcebergCatalog(
+ storageCredentialCache,
entityManager,
metaStoreManager,
polarisContext,
diff --git
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractPolicyCatalogTest.java
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractPolicyCatalogTest.java
index 42c91225f..66c2b53d5 100644
---
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractPolicyCatalogTest.java
+++
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/AbstractPolicyCatalogTest.java
@@ -64,6 +64,7 @@ import
org.apache.polaris.core.persistence.MetaStoreManagerFactory;
import org.apache.polaris.core.persistence.PolarisEntityManager;
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
import org.apache.polaris.core.persistence.PolicyMappingAlreadyExistsException;
+import org.apache.polaris.core.persistence.cache.EntityCache;
import org.apache.polaris.core.policy.PredefinedPolicyTypes;
import org.apache.polaris.core.policy.exceptions.NoSuchPolicyException;
import org.apache.polaris.core.policy.exceptions.PolicyInUseException;
@@ -76,14 +77,12 @@ import
org.apache.polaris.core.storage.PolarisStorageIntegrationProvider;
import org.apache.polaris.core.storage.aws.AwsCredentialsStorageIntegration;
import org.apache.polaris.core.storage.aws.AwsStorageConfigurationInfo;
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
-import org.apache.polaris.core.storage.cache.StorageCredentialCacheConfig;
import org.apache.polaris.service.admin.PolarisAdminService;
import org.apache.polaris.service.catalog.PolarisPassthroughResolutionView;
import org.apache.polaris.service.catalog.iceberg.IcebergCatalog;
import org.apache.polaris.service.catalog.io.DefaultFileIOFactory;
import org.apache.polaris.service.catalog.io.FileIOFactory;
import org.apache.polaris.service.catalog.policy.PolicyCatalog;
-import org.apache.polaris.service.config.RealmEntityManagerFactory;
import org.apache.polaris.service.config.ReservedProperties;
import org.apache.polaris.service.events.NoOpPolarisEventListener;
import
org.apache.polaris.service.storage.PolarisStorageIntegrationProviderImpl;
@@ -129,7 +128,7 @@ public abstract class AbstractPolicyCatalogTest {
@Inject MetaStoreManagerFactory metaStoreManagerFactory;
@Inject UserSecretsManagerFactory userSecretsManagerFactory;
@Inject PolarisConfigurationStore configurationStore;
- @Inject StorageCredentialCacheConfig storageCredentialCacheConfig;
+ @Inject StorageCredentialCache storageCredentialCache;
@Inject PolarisStorageIntegrationProvider storageIntegrationProvider;
@Inject PolarisDiagnostics diagServices;
@@ -161,6 +160,8 @@ public abstract class AbstractPolicyCatalogTest {
@BeforeEach
@SuppressWarnings("unchecked")
public void before(TestInfo testInfo) {
+ storageCredentialCache.invalidateAll();
+
realmName =
"realm_%s_%s"
.formatted(
@@ -178,14 +179,11 @@ public abstract class AbstractPolicyCatalogTest {
diagServices,
configurationStore,
Clock.systemDefaultZone());
- StorageCredentialCache storageCredentialCache =
- new StorageCredentialCache(storageCredentialCacheConfig);
- entityManager =
- new PolarisEntityManager(
- metaStoreManager,
- storageCredentialCache,
- metaStoreManagerFactory.getOrCreateEntityCache(
- realmContext, polarisContext.getRealmConfig()));
+
+ EntityCache entityCache =
+ metaStoreManagerFactory.getOrCreateEntityCache(
+ realmContext, polarisContext.getRealmConfig());
+ entityManager = new PolarisEntityManager(metaStoreManager, entityCache);
callContext = polarisContext;
@@ -249,11 +247,7 @@ public abstract class AbstractPolicyCatalogTest {
new PolarisPassthroughResolutionView(
callContext, entityManager, securityContext, CATALOG_NAME);
TaskExecutor taskExecutor = Mockito.mock();
- RealmEntityManagerFactory realmEntityManagerFactory =
- new RealmEntityManagerFactory(
- metaStoreManagerFactory, configurationStore,
storageCredentialCache);
- this.fileIOFactory =
- new DefaultFileIOFactory(realmEntityManagerFactory,
metaStoreManagerFactory);
+ this.fileIOFactory = new DefaultFileIOFactory(storageCredentialCache,
metaStoreManagerFactory);
StsClient stsClient = Mockito.mock(StsClient.class);
when(stsClient.assumeRole(isA(AssumeRoleRequest.class)))
@@ -275,6 +269,7 @@ public abstract class AbstractPolicyCatalogTest {
this.policyCatalog = new PolicyCatalog(metaStoreManager, callContext,
passthroughView);
this.icebergCatalog =
new IcebergCatalog(
+ storageCredentialCache,
entityManager,
metaStoreManager,
callContext,
diff --git
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/IcebergCatalogHandlerAuthzTest.java
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/IcebergCatalogHandlerAuthzTest.java
index ccfe67da6..e275a8f9b 100644
---
a/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/IcebergCatalogHandlerAuthzTest.java
+++
b/runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/IcebergCatalogHandlerAuthzTest.java
@@ -1788,11 +1788,11 @@ public class IcebergCatalogHandlerAuthzTest extends
PolarisAuthzTestBase {
PolarisCallContextCatalogFactory factory =
new PolarisCallContextCatalogFactory(
+ storageCredentialCache,
realmEntityManagerFactory,
managerFactory,
- userSecretsManagerFactory,
Mockito.mock(),
- new DefaultFileIOFactory(realmEntityManagerFactory,
managerFactory),
+ new DefaultFileIOFactory(storageCredentialCache, managerFactory),
polarisEventListener) {
@Override
public Catalog createCallContextCatalog(
diff --git
a/service/common/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalog.java
b/service/common/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalog.java
index 031c3882f..5cc43e2be 100644
---
a/service/common/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalog.java
+++
b/service/common/src/main/java/org/apache/polaris/service/catalog/iceberg/IcebergCatalog.java
@@ -125,6 +125,7 @@ import
org.apache.polaris.core.storage.PolarisStorageActions;
import org.apache.polaris.core.storage.PolarisStorageConfigurationInfo;
import org.apache.polaris.core.storage.PolarisStorageIntegration;
import org.apache.polaris.core.storage.StorageLocation;
+import org.apache.polaris.core.storage.cache.StorageCredentialCache;
import org.apache.polaris.service.catalog.SupportsNotifications;
import org.apache.polaris.service.catalog.common.LocationUtils;
import org.apache.polaris.service.catalog.io.FileIOFactory;
@@ -167,6 +168,7 @@ public class IcebergCatalog extends BaseMetastoreViewCatalog
};
private final PolarisEntityManager entityManager;
+ private final StorageCredentialCache storageCredentialCache;
private final CallContext callContext;
private final PolarisResolutionManifestCatalogView resolvedEntityView;
private final CatalogEntity catalogEntity;
@@ -188,14 +190,13 @@ public class IcebergCatalog extends
BaseMetastoreViewCatalog
private PolarisMetaStoreManager metaStoreManager;
/**
- * @param entityManager provides handle to underlying
PolarisMetaStoreManager with which to
- * perform mutations on entities.
* @param callContext the current CallContext
* @param resolvedEntityView accessor to resolved entity paths that have
been pre-vetted to ensure
* this catalog instance only interacts with authorized resolved paths.
* @param taskExecutor Executor we use to register cleanup task handlers
*/
public IcebergCatalog(
+ StorageCredentialCache storageCredentialCache,
PolarisEntityManager entityManager,
PolarisMetaStoreManager metaStoreManager,
CallContext callContext,
@@ -205,6 +206,7 @@ public class IcebergCatalog extends BaseMetastoreViewCatalog
FileIOFactory fileIOFactory,
PolarisEventListener polarisEventListener) {
this.entityManager = entityManager;
+ this.storageCredentialCache = storageCredentialCache;
this.callContext = callContext;
this.resolvedEntityView = resolvedEntityView;
this.catalogEntity =
@@ -864,7 +866,7 @@ public class IcebergCatalog extends BaseMetastoreViewCatalog
}
return FileIOUtil.refreshAccessConfig(
callContext,
- entityManager,
+ storageCredentialCache,
getCredentialVendor(),
tableIdentifier,
getLocationsAllowedToBeAccessed(tableMetadata),
diff --git
a/service/common/src/main/java/org/apache/polaris/service/catalog/io/DefaultFileIOFactory.java
b/service/common/src/main/java/org/apache/polaris/service/catalog/io/DefaultFileIOFactory.java
index bf4b05a69..9f530d4e7 100644
---
a/service/common/src/main/java/org/apache/polaris/service/catalog/io/DefaultFileIOFactory.java
+++
b/service/common/src/main/java/org/apache/polaris/service/catalog/io/DefaultFileIOFactory.java
@@ -35,12 +35,11 @@ import org.apache.polaris.core.context.CallContext;
import org.apache.polaris.core.context.RealmContext;
import org.apache.polaris.core.entity.PolarisEntity;
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
-import org.apache.polaris.core.persistence.PolarisEntityManager;
import org.apache.polaris.core.persistence.PolarisResolvedPathWrapper;
import org.apache.polaris.core.storage.AccessConfig;
import org.apache.polaris.core.storage.PolarisCredentialVendor;
import org.apache.polaris.core.storage.PolarisStorageActions;
-import org.apache.polaris.service.config.RealmEntityManagerFactory;
+import org.apache.polaris.core.storage.cache.StorageCredentialCache;
/**
* A default FileIO factory implementation for creating Iceberg {@link FileIO}
instances with
@@ -54,14 +53,14 @@ import
org.apache.polaris.service.config.RealmEntityManagerFactory;
@Identifier("default")
public class DefaultFileIOFactory implements FileIOFactory {
- private final RealmEntityManagerFactory realmEntityManagerFactory;
+ private final StorageCredentialCache storageCredentialCache;
private final MetaStoreManagerFactory metaStoreManagerFactory;
@Inject
public DefaultFileIOFactory(
- RealmEntityManagerFactory realmEntityManagerFactory,
+ StorageCredentialCache storageCredentialCache,
MetaStoreManagerFactory metaStoreManagerFactory) {
- this.realmEntityManagerFactory = realmEntityManagerFactory;
+ this.storageCredentialCache = storageCredentialCache;
this.metaStoreManagerFactory = metaStoreManagerFactory;
}
@@ -75,8 +74,6 @@ public class DefaultFileIOFactory implements FileIOFactory {
@Nonnull Set<PolarisStorageActions> storageActions,
@Nonnull PolarisResolvedPathWrapper resolvedEntityPath) {
RealmContext realmContext = callContext.getRealmContext();
- PolarisEntityManager entityManager =
- realmEntityManagerFactory.getOrCreateEntityManager(realmContext);
PolarisCredentialVendor credentialVendor =
metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext);
@@ -89,7 +86,7 @@ public class DefaultFileIOFactory implements FileIOFactory {
storageInfo ->
FileIOUtil.refreshAccessConfig(
callContext,
- entityManager,
+ storageCredentialCache,
credentialVendor,
identifier,
tableLocations,
diff --git
a/service/common/src/main/java/org/apache/polaris/service/catalog/io/FileIOUtil.java
b/service/common/src/main/java/org/apache/polaris/service/catalog/io/FileIOUtil.java
index fcedcfe35..c5ef12d78 100644
---
a/service/common/src/main/java/org/apache/polaris/service/catalog/io/FileIOUtil.java
+++
b/service/common/src/main/java/org/apache/polaris/service/catalog/io/FileIOUtil.java
@@ -25,11 +25,11 @@ import org.apache.polaris.core.config.FeatureConfiguration;
import org.apache.polaris.core.context.CallContext;
import org.apache.polaris.core.entity.PolarisEntity;
import org.apache.polaris.core.entity.PolarisEntityConstants;
-import org.apache.polaris.core.persistence.PolarisEntityManager;
import org.apache.polaris.core.persistence.PolarisResolvedPathWrapper;
import org.apache.polaris.core.storage.AccessConfig;
import org.apache.polaris.core.storage.PolarisCredentialVendor;
import org.apache.polaris.core.storage.PolarisStorageActions;
+import org.apache.polaris.core.storage.cache.StorageCredentialCache;
import org.apache.polaris.service.catalog.iceberg.IcebergCatalog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -76,7 +76,7 @@ public class FileIOUtil {
*/
public static AccessConfig refreshAccessConfig(
CallContext callContext,
- PolarisEntityManager entityManager,
+ StorageCredentialCache storageCredentialCache,
PolarisCredentialVendor credentialVendor,
TableIdentifier tableIdentifier,
Set<String> tableLocations,
@@ -105,15 +105,13 @@ public class FileIOUtil {
? tableLocations
: Set.of();
AccessConfig accessConfig =
- entityManager
- .getCredentialCache()
- .getOrGenerateSubScopeCreds(
- credentialVendor,
- callContext.getPolarisCallContext(),
- entity,
- allowList,
- tableLocations,
- writeLocations);
+ storageCredentialCache.getOrGenerateSubScopeCreds(
+ credentialVendor,
+ callContext.getPolarisCallContext(),
+ entity,
+ allowList,
+ tableLocations,
+ writeLocations);
LOGGER
.atDebug()
.addKeyValue("tableIdentifier", tableIdentifier)
diff --git
a/service/common/src/main/java/org/apache/polaris/service/catalog/io/WasbTranslatingFileIOFactory.java
b/service/common/src/main/java/org/apache/polaris/service/catalog/io/WasbTranslatingFileIOFactory.java
index 0fa94ae30..048e19bb4 100644
---
a/service/common/src/main/java/org/apache/polaris/service/catalog/io/WasbTranslatingFileIOFactory.java
+++
b/service/common/src/main/java/org/apache/polaris/service/catalog/io/WasbTranslatingFileIOFactory.java
@@ -30,7 +30,7 @@ import org.apache.polaris.core.context.CallContext;
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
import org.apache.polaris.core.persistence.PolarisResolvedPathWrapper;
import org.apache.polaris.core.storage.PolarisStorageActions;
-import org.apache.polaris.service.config.RealmEntityManagerFactory;
+import org.apache.polaris.core.storage.cache.StorageCredentialCache;
/** A {@link FileIOFactory} that translates WASB paths to ABFS ones */
@ApplicationScoped
@@ -41,10 +41,10 @@ public class WasbTranslatingFileIOFactory implements
FileIOFactory {
@Inject
public WasbTranslatingFileIOFactory(
- RealmEntityManagerFactory realmEntityManagerFactory,
+ StorageCredentialCache storageCredentialCache,
MetaStoreManagerFactory metaStoreManagerFactory) {
defaultFileIOFactory =
- new DefaultFileIOFactory(realmEntityManagerFactory,
metaStoreManagerFactory);
+ new DefaultFileIOFactory(storageCredentialCache,
metaStoreManagerFactory);
}
@Override
diff --git
a/service/common/src/main/java/org/apache/polaris/service/config/RealmEntityManagerFactory.java
b/service/common/src/main/java/org/apache/polaris/service/config/RealmEntityManagerFactory.java
index af372f682..c7af1fa10 100644
---
a/service/common/src/main/java/org/apache/polaris/service/config/RealmEntityManagerFactory.java
+++
b/service/common/src/main/java/org/apache/polaris/service/config/RealmEntityManagerFactory.java
@@ -28,7 +28,6 @@ import org.apache.polaris.core.config.RealmConfigImpl;
import org.apache.polaris.core.context.RealmContext;
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
import org.apache.polaris.core.persistence.PolarisEntityManager;
-import org.apache.polaris.core.storage.cache.StorageCredentialCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,7 +39,6 @@ public class RealmEntityManagerFactory {
private final MetaStoreManagerFactory metaStoreManagerFactory;
private final PolarisConfigurationStore configurationStore;
- private final StorageCredentialCache storageCredentialCache;
// Key: realmIdentifier
private final Map<String, PolarisEntityManager> cachedEntityManagers = new
ConcurrentHashMap<>();
@@ -48,11 +46,9 @@ public class RealmEntityManagerFactory {
@Inject
public RealmEntityManagerFactory(
MetaStoreManagerFactory metaStoreManagerFactory,
- PolarisConfigurationStore configurationStore,
- StorageCredentialCache storageCredentialCache) {
+ PolarisConfigurationStore configurationStore) {
this.metaStoreManagerFactory = metaStoreManagerFactory;
this.configurationStore = configurationStore;
- this.storageCredentialCache = storageCredentialCache;
}
public PolarisEntityManager getOrCreateEntityManager(RealmContext context) {
@@ -67,7 +63,6 @@ public class RealmEntityManagerFactory {
RealmConfig realmConfig = new RealmConfigImpl(configurationStore,
context);
return new PolarisEntityManager(
metaStoreManagerFactory.getOrCreateMetaStoreManager(context),
- storageCredentialCache,
metaStoreManagerFactory.getOrCreateEntityCache(context,
realmConfig));
});
}
diff --git
a/service/common/src/main/java/org/apache/polaris/service/context/catalog/PolarisCallContextCatalogFactory.java
b/service/common/src/main/java/org/apache/polaris/service/context/catalog/PolarisCallContextCatalogFactory.java
index 60c505d42..dd3c04ea8 100644
---
a/service/common/src/main/java/org/apache/polaris/service/context/catalog/PolarisCallContextCatalogFactory.java
+++
b/service/common/src/main/java/org/apache/polaris/service/context/catalog/PolarisCallContextCatalogFactory.java
@@ -32,7 +32,7 @@ import org.apache.polaris.core.entity.PolarisBaseEntity;
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
import org.apache.polaris.core.persistence.PolarisEntityManager;
import org.apache.polaris.core.persistence.resolver.PolarisResolutionManifest;
-import org.apache.polaris.core.secrets.UserSecretsManagerFactory;
+import org.apache.polaris.core.storage.cache.StorageCredentialCache;
import org.apache.polaris.service.catalog.iceberg.IcebergCatalog;
import org.apache.polaris.service.catalog.io.FileIOFactory;
import org.apache.polaris.service.config.RealmEntityManagerFactory;
@@ -49,21 +49,21 @@ public class PolarisCallContextCatalogFactory implements
CallContextCatalogFacto
private final RealmEntityManagerFactory entityManagerFactory;
private final TaskExecutor taskExecutor;
private final FileIOFactory fileIOFactory;
+ private final StorageCredentialCache storageCredentialCache;
private final MetaStoreManagerFactory metaStoreManagerFactory;
- private final UserSecretsManagerFactory userSecretsManagerFactory;
private final PolarisEventListener polarisEventListener;
@Inject
public PolarisCallContextCatalogFactory(
+ StorageCredentialCache storageCredentialCache,
RealmEntityManagerFactory entityManagerFactory,
MetaStoreManagerFactory metaStoreManagerFactory,
- UserSecretsManagerFactory userSecretsManagerFactory,
TaskExecutor taskExecutor,
FileIOFactory fileIOFactory,
PolarisEventListener polarisEventListener) {
this.entityManagerFactory = entityManagerFactory;
+ this.storageCredentialCache = storageCredentialCache;
this.metaStoreManagerFactory = metaStoreManagerFactory;
- this.userSecretsManagerFactory = userSecretsManagerFactory;
this.taskExecutor = taskExecutor;
this.fileIOFactory = fileIOFactory;
this.polarisEventListener = polarisEventListener;
@@ -88,6 +88,7 @@ public class PolarisCallContextCatalogFactory implements
CallContextCatalogFacto
IcebergCatalog catalogInstance =
new IcebergCatalog(
+ storageCredentialCache,
entityManager,
metaStoreManagerFactory.getOrCreateMetaStoreManager(context.getRealmContext()),
context,
diff --git
a/service/common/src/test/java/org/apache/polaris/service/catalog/io/FileIOFactoryTest.java
b/service/common/src/test/java/org/apache/polaris/service/catalog/io/FileIOFactoryTest.java
index 34a9531d2..e0570794b 100644
---
a/service/common/src/test/java/org/apache/polaris/service/catalog/io/FileIOFactoryTest.java
+++
b/service/common/src/test/java/org/apache/polaris/service/catalog/io/FileIOFactoryTest.java
@@ -104,9 +104,9 @@ public class FileIOFactoryTest {
// Spy FileIOFactory and check if the credentials are passed to the FileIO
TestServices.FileIOFactorySupplier fileIOFactorySupplier =
- (entityManagerFactory, metaStoreManagerFactory) ->
+ (storageCredentialCache, metaStoreManagerFactory) ->
Mockito.spy(
- new DefaultFileIOFactory(entityManagerFactory,
metaStoreManagerFactory) {
+ new DefaultFileIOFactory(storageCredentialCache,
metaStoreManagerFactory) {
@Override
FileIO loadFileIOInternal(
@Nonnull String ioImplClassName, @Nonnull Map<String,
String> properties) {
@@ -233,6 +233,7 @@ public class FileIOFactoryTest {
CATALOG_NAME);
IcebergCatalog polarisCatalog =
new IcebergCatalog(
+ services.storageCredentialCache(),
services.entityManagerFactory().getOrCreateEntityManager(realmContext),
services.metaStoreManagerFactory().getOrCreateMetaStoreManager(realmContext),
callContext,
diff --git
a/service/common/src/testFixtures/java/org/apache/polaris/service/TestServices.java
b/service/common/src/testFixtures/java/org/apache/polaris/service/TestServices.java
index 38cedd8be..8384f6ee5 100644
---
a/service/common/src/testFixtures/java/org/apache/polaris/service/TestServices.java
+++
b/service/common/src/testFixtures/java/org/apache/polaris/service/TestServices.java
@@ -78,6 +78,7 @@ public record TestServices(
IcebergCatalogAdapter catalogAdapter,
PolarisConfigurationStore configurationStore,
PolarisDiagnostics polarisDiagnostics,
+ StorageCredentialCache storageCredentialCache,
RealmEntityManagerFactory entityManagerFactory,
MetaStoreManagerFactory metaStoreManagerFactory,
RealmContext realmContext,
@@ -91,7 +92,7 @@ public record TestServices(
@FunctionalInterface
public interface FileIOFactorySupplier
- extends BiFunction<RealmEntityManagerFactory, MetaStoreManagerFactory,
FileIOFactory> {}
+ extends BiFunction<StorageCredentialCache, MetaStoreManagerFactory,
FileIOFactory> {}
private static class MockedConfigurationStore implements
PolarisConfigurationStore {
private final Map<String, Object> defaults;
@@ -158,8 +159,7 @@ public record TestServices(
StorageCredentialCache storageCredentialCache =
new StorageCredentialCache(storageCredentialCacheConfig);
RealmEntityManagerFactory realmEntityManagerFactory =
- new RealmEntityManagerFactory(
- metaStoreManagerFactory, configurationStore,
storageCredentialCache);
+ new RealmEntityManagerFactory(metaStoreManagerFactory,
configurationStore);
UserSecretsManagerFactory userSecretsManagerFactory =
new UnsafeInMemorySecretsManagerFactory();
@@ -180,16 +180,16 @@ public record TestServices(
userSecretsManagerFactory.getOrCreateUserSecretsManager(realmContext);
FileIOFactory fileIOFactory =
- fileIOFactorySupplier.apply(realmEntityManagerFactory,
metaStoreManagerFactory);
+ fileIOFactorySupplier.apply(storageCredentialCache,
metaStoreManagerFactory);
TaskExecutor taskExecutor = Mockito.mock(TaskExecutor.class);
PolarisEventListener polarisEventListener = new
TestPolarisEventListener();
CallContextCatalogFactory callContextFactory =
new PolarisCallContextCatalogFactory(
+ storageCredentialCache,
realmEntityManagerFactory,
metaStoreManagerFactory,
- userSecretsManagerFactory,
taskExecutor,
fileIOFactory,
polarisEventListener);
@@ -268,6 +268,7 @@ public record TestServices(
catalogService,
configurationStore,
polarisDiagnostics,
+ storageCredentialCache,
realmEntityManagerFactory,
metaStoreManagerFactory,
realmContext,
diff --git
a/service/common/src/testFixtures/java/org/apache/polaris/service/catalog/io/MeasuredFileIOFactory.java
b/service/common/src/testFixtures/java/org/apache/polaris/service/catalog/io/MeasuredFileIOFactory.java
index bdaa3e955..c4bf40ca9 100644
---
a/service/common/src/testFixtures/java/org/apache/polaris/service/catalog/io/MeasuredFileIOFactory.java
+++
b/service/common/src/testFixtures/java/org/apache/polaris/service/catalog/io/MeasuredFileIOFactory.java
@@ -33,7 +33,7 @@ import org.apache.polaris.core.context.CallContext;
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
import org.apache.polaris.core.persistence.PolarisResolvedPathWrapper;
import org.apache.polaris.core.storage.PolarisStorageActions;
-import org.apache.polaris.service.config.RealmEntityManagerFactory;
+import org.apache.polaris.core.storage.cache.StorageCredentialCache;
/**
* A FileIOFactory that measures the number of bytes read, files written, and
files deleted. It can
@@ -53,10 +53,10 @@ public class MeasuredFileIOFactory implements FileIOFactory
{
@Inject
public MeasuredFileIOFactory(
- RealmEntityManagerFactory realmEntityManagerFactory,
+ StorageCredentialCache storageCredentialCache,
MetaStoreManagerFactory metaStoreManagerFactory) {
defaultFileIOFactory =
- new DefaultFileIOFactory(realmEntityManagerFactory,
metaStoreManagerFactory);
+ new DefaultFileIOFactory(storageCredentialCache,
metaStoreManagerFactory);
}
@Override