Skip to content

Commit bf5a42e

Browse files
committed
Use application-scoped StorageCredentialCache
1 parent 2ad970b commit bf5a42e

File tree

10 files changed

+29
-48
lines changed

10 files changed

+29
-48
lines changed

persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcMetaStoreManagerFactory.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454
import org.apache.polaris.core.persistence.dao.entity.EntityResult;
5555
import org.apache.polaris.core.persistence.dao.entity.PrincipalSecretsResult;
5656
import org.apache.polaris.core.storage.PolarisStorageIntegrationProvider;
57-
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
5857
import org.slf4j.Logger;
5958
import org.slf4j.LoggerFactory;
6059

@@ -70,7 +69,6 @@ public class JdbcMetaStoreManagerFactory implements MetaStoreManagerFactory {
7069
private static final Logger LOGGER = LoggerFactory.getLogger(JdbcMetaStoreManagerFactory.class);
7170

7271
final Map<String, PolarisMetaStoreManager> metaStoreManagerMap = new HashMap<>();
73-
final Map<String, StorageCredentialCache> storageCredentialCacheMap = new HashMap<>();
7472
final Map<String, EntityCache> entityCacheMap = new HashMap<>();
7573
final Map<String, Supplier<BasePersistence>> sessionSupplierMap = new HashMap<>();
7674
protected final PolarisDiagnostics diagServices = new PolarisDefaultDiagServiceImpl();
@@ -184,7 +182,6 @@ public Map<String, BaseResult> purgeRealms(Iterable<String> realms) {
184182
BaseResult result = metaStoreManager.purge(callContext);
185183
results.put(realm, result);
186184

187-
storageCredentialCacheMap.remove(realm);
188185
sessionSupplierMap.remove(realm);
189186
metaStoreManagerMap.remove(realm);
190187
}
@@ -219,17 +216,6 @@ public synchronized Supplier<BasePersistence> getOrCreateSessionSupplier(
219216
return sessionSupplierMap.get(realmContext.getRealmIdentifier());
220217
}
221218

222-
@Override
223-
public synchronized StorageCredentialCache getOrCreateStorageCredentialCache(
224-
RealmContext realmContext) {
225-
if (!storageCredentialCacheMap.containsKey(realmContext.getRealmIdentifier())) {
226-
storageCredentialCacheMap.put(
227-
realmContext.getRealmIdentifier(), new StorageCredentialCache(configurationStore));
228-
}
229-
230-
return storageCredentialCacheMap.get(realmContext.getRealmIdentifier());
231-
}
232-
233219
@Override
234220
public synchronized EntityCache getOrCreateEntityCache(RealmContext realmContext) {
235221
if (!entityCacheMap.containsKey(realmContext.getRealmIdentifier())) {

polaris-core/src/main/java/org/apache/polaris/core/persistence/LocalPolarisMetaStoreManagerFactory.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import org.apache.polaris.core.persistence.dao.entity.PrincipalSecretsResult;
4242
import org.apache.polaris.core.persistence.transactional.TransactionalMetaStoreManagerImpl;
4343
import org.apache.polaris.core.persistence.transactional.TransactionalPersistence;
44-
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
4544
import org.slf4j.Logger;
4645
import org.slf4j.LoggerFactory;
4746

@@ -54,7 +53,6 @@ public abstract class LocalPolarisMetaStoreManagerFactory<StoreType>
5453
implements MetaStoreManagerFactory {
5554

5655
final Map<String, PolarisMetaStoreManager> metaStoreManagerMap = new HashMap<>();
57-
final Map<String, StorageCredentialCache> storageCredentialCacheMap = new HashMap<>();
5856
final Map<String, EntityCache> entityCacheMap = new HashMap<>();
5957
final Map<String, StoreType> backingStoreMap = new HashMap<>();
6058
final Map<String, Supplier<TransactionalPersistence>> sessionSupplierMap = new HashMap<>();
@@ -143,7 +141,6 @@ public Map<String, BaseResult> purgeRealms(Iterable<String> realms) {
143141
BaseResult result = metaStoreManager.purge(callContext);
144142
results.put(realm, result);
145143

146-
storageCredentialCacheMap.remove(realm);
147144
backingStoreMap.remove(realm);
148145
sessionSupplierMap.remove(realm);
149146
metaStoreManagerMap.remove(realm);
@@ -177,17 +174,6 @@ public synchronized Supplier<TransactionalPersistence> getOrCreateSessionSupplie
177174
return sessionSupplierMap.get(realmContext.getRealmIdentifier());
178175
}
179176

180-
@Override
181-
public synchronized StorageCredentialCache getOrCreateStorageCredentialCache(
182-
RealmContext realmContext) {
183-
if (!storageCredentialCacheMap.containsKey(realmContext.getRealmIdentifier())) {
184-
storageCredentialCacheMap.put(
185-
realmContext.getRealmIdentifier(), new StorageCredentialCache(configurationStore));
186-
}
187-
188-
return storageCredentialCacheMap.get(realmContext.getRealmIdentifier());
189-
}
190-
191177
@Override
192178
public synchronized EntityCache getOrCreateEntityCache(RealmContext realmContext) {
193179
if (!entityCacheMap.containsKey(realmContext.getRealmIdentifier())) {

polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.apache.polaris.core.persistence.cache.EntityCache;
2727
import org.apache.polaris.core.persistence.dao.entity.BaseResult;
2828
import org.apache.polaris.core.persistence.dao.entity.PrincipalSecretsResult;
29-
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
3029

3130
/** Configuration interface for configuring the {@link PolarisMetaStoreManager}. */
3231
public interface MetaStoreManagerFactory {
@@ -35,8 +34,6 @@ public interface MetaStoreManagerFactory {
3534

3635
Supplier<? extends BasePersistence> getOrCreateSessionSupplier(RealmContext realmContext);
3736

38-
StorageCredentialCache getOrCreateStorageCredentialCache(RealmContext realmContext);
39-
4037
EntityCache getOrCreateEntityCache(RealmContext realmContext);
4138

4239
Map<String, PrincipalSecretsResult> bootstrapRealms(

runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/IcebergCatalogHandlerAuthzTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1792,7 +1792,7 @@ public void testSendNotificationSufficientPrivileges() {
17921792

17931793
PolarisCallContextCatalogFactory factory =
17941794
new PolarisCallContextCatalogFactory(
1795-
new RealmEntityManagerFactory(null) {
1795+
new RealmEntityManagerFactory(null, null) {
17961796
@Override
17971797
public PolarisEntityManager getOrCreateEntityManager(RealmContext realmContext) {
17981798
return entityManager;

runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/IcebergCatalogTest.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ public Map<String, String> getConfigOverrides() {
247247
private UserSecretsManager userSecretsManager;
248248
private PolarisCallContext polarisContext;
249249
private PolarisAdminService adminService;
250+
private StorageCredentialCache storageCredentialCache;
250251
private PolarisEntityManager entityManager;
251252
private FileIOFactory fileIOFactory;
252253
private InMemoryFileIO fileIO;
@@ -289,11 +290,11 @@ public void before(TestInfo testInfo) {
289290
configurationStore,
290291
Clock.systemDefaultZone());
291292

293+
storageCredentialCache = new StorageCredentialCache(configurationStore);
294+
292295
entityManager =
293296
new PolarisEntityManager(
294-
metaStoreManager,
295-
new StorageCredentialCache(configurationStore),
296-
createEntityCache(metaStoreManager));
297+
metaStoreManager, storageCredentialCache, createEntityCache(metaStoreManager));
297298

298299
PrincipalEntity rootEntity =
299300
new PrincipalEntity(
@@ -355,7 +356,7 @@ public void before(TestInfo testInfo) {
355356
.asCatalog()));
356357

357358
RealmEntityManagerFactory realmEntityManagerFactory =
358-
new RealmEntityManagerFactory(metaStoreManagerFactory);
359+
new RealmEntityManagerFactory(metaStoreManagerFactory, storageCredentialCache);
359360
this.fileIOFactory =
360361
new DefaultFileIOFactory(
361362
realmEntityManagerFactory, metaStoreManagerFactory, configurationStore);
@@ -990,7 +991,7 @@ public void testValidateNotificationFailToCreateFileIO() {
990991
FileIOFactory fileIOFactory =
991992
spy(
992993
new DefaultFileIOFactory(
993-
new RealmEntityManagerFactory(metaStoreManagerFactory),
994+
new RealmEntityManagerFactory(metaStoreManagerFactory, storageCredentialCache),
994995
metaStoreManagerFactory,
995996
configurationStore));
996997
IcebergCatalog catalog =
@@ -1885,7 +1886,7 @@ public void testDropTableWithPurge() {
18851886
FileIO fileIO =
18861887
new TaskFileIOSupplier(
18871888
new DefaultFileIOFactory(
1888-
new RealmEntityManagerFactory(metaStoreManagerFactory),
1889+
new RealmEntityManagerFactory(metaStoreManagerFactory, storageCredentialCache),
18891890
metaStoreManagerFactory,
18901891
configurationStore))
18911892
.apply(taskEntity, polarisContext);
@@ -2030,7 +2031,7 @@ public void testFileIOWrapper() {
20302031

20312032
MeasuredFileIOFactory measured =
20322033
new MeasuredFileIOFactory(
2033-
new RealmEntityManagerFactory(metaStoreManagerFactory),
2034+
new RealmEntityManagerFactory(metaStoreManagerFactory, storageCredentialCache),
20342035
metaStoreManagerFactory,
20352036
configurationStore);
20362037
IcebergCatalog catalog =

runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/IcebergCatalogViewTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,11 @@ public void before(TestInfo testInfo) {
176176
configurationStore,
177177
Clock.systemDefaultZone());
178178

179+
StorageCredentialCache storageCredentialCache = new StorageCredentialCache(configurationStore);
179180
PolarisEntityManager entityManager =
180181
new PolarisEntityManager(
181182
metaStoreManager,
182-
new StorageCredentialCache(configurationStore),
183+
storageCredentialCache,
183184
new InMemoryEntityCache(realmContext, configurationStore, metaStoreManager));
184185

185186
CallContext.setCurrentContext(polarisContext);
@@ -236,7 +237,7 @@ public void before(TestInfo testInfo) {
236237
polarisContext, entityManager, securityContext, CATALOG_NAME);
237238
FileIOFactory fileIOFactory =
238239
new DefaultFileIOFactory(
239-
new RealmEntityManagerFactory(metaStoreManagerFactory),
240+
new RealmEntityManagerFactory(metaStoreManagerFactory, storageCredentialCache),
240241
metaStoreManagerFactory,
241242
configurationStore);
242243

runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/PolarisGenericTableCatalogTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,11 @@ public void before(TestInfo testInfo) {
168168
diagServices,
169169
configurationStore,
170170
Clock.systemDefaultZone());
171+
StorageCredentialCache storageCredentialCache = new StorageCredentialCache(configurationStore);
171172
entityManager =
172173
new PolarisEntityManager(
173174
metaStoreManager,
174-
new StorageCredentialCache(configurationStore),
175+
storageCredentialCache,
175176
new InMemoryEntityCache(realmContext, configurationStore, metaStoreManager));
176177

177178
PrincipalEntity rootEntity =
@@ -237,7 +238,7 @@ public void before(TestInfo testInfo) {
237238
polarisContext, entityManager, securityContext, CATALOG_NAME);
238239
TaskExecutor taskExecutor = Mockito.mock();
239240
RealmEntityManagerFactory realmEntityManagerFactory =
240-
new RealmEntityManagerFactory(metaStoreManagerFactory);
241+
new RealmEntityManagerFactory(metaStoreManagerFactory, storageCredentialCache);
241242
this.fileIOFactory =
242243
new DefaultFileIOFactory(
243244
realmEntityManagerFactory, metaStoreManagerFactory, configurationStore);

runtime/service/src/test/java/org/apache/polaris/service/quarkus/catalog/PolicyCatalogTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,10 +194,11 @@ public void before(TestInfo testInfo) {
194194
diagServices,
195195
configurationStore,
196196
Clock.systemDefaultZone());
197+
StorageCredentialCache storageCredentialCache = new StorageCredentialCache(configurationStore);
197198
entityManager =
198199
new PolarisEntityManager(
199200
metaStoreManager,
200-
new StorageCredentialCache(configurationStore),
201+
storageCredentialCache,
201202
new InMemoryEntityCache(realmContext, configurationStore, metaStoreManager));
202203

203204
callContext = polarisContext;
@@ -263,7 +264,7 @@ public void before(TestInfo testInfo) {
263264
callContext, entityManager, securityContext, CATALOG_NAME);
264265
TaskExecutor taskExecutor = Mockito.mock();
265266
RealmEntityManagerFactory realmEntityManagerFactory =
266-
new RealmEntityManagerFactory(metaStoreManagerFactory);
267+
new RealmEntityManagerFactory(metaStoreManagerFactory, storageCredentialCache);
267268
this.fileIOFactory =
268269
new DefaultFileIOFactory(
269270
realmEntityManagerFactory, metaStoreManagerFactory, configurationStore);

service/common/src/main/java/org/apache/polaris/service/config/RealmEntityManagerFactory.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.apache.polaris.core.context.RealmContext;
2626
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
2727
import org.apache.polaris.core.persistence.PolarisEntityManager;
28+
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
2829
import org.slf4j.Logger;
2930
import org.slf4j.LoggerFactory;
3031

@@ -35,13 +36,17 @@ public class RealmEntityManagerFactory {
3536
private static final Logger LOGGER = LoggerFactory.getLogger(RealmEntityManagerFactory.class);
3637

3738
private final MetaStoreManagerFactory metaStoreManagerFactory;
39+
private final StorageCredentialCache storageCredentialCache;
3840

3941
// Key: realmIdentifier
4042
private final Map<String, PolarisEntityManager> cachedEntityManagers = new ConcurrentHashMap<>();
4143

4244
@Inject
43-
public RealmEntityManagerFactory(MetaStoreManagerFactory metaStoreManagerFactory) {
45+
public RealmEntityManagerFactory(
46+
MetaStoreManagerFactory metaStoreManagerFactory,
47+
StorageCredentialCache storageCredentialCache) {
4448
this.metaStoreManagerFactory = metaStoreManagerFactory;
49+
this.storageCredentialCache = storageCredentialCache;
4550
}
4651

4752
public PolarisEntityManager getOrCreateEntityManager(RealmContext context) {
@@ -55,7 +60,7 @@ public PolarisEntityManager getOrCreateEntityManager(RealmContext context) {
5560
LOGGER.info("Initializing new PolarisEntityManager for realm {}", r);
5661
return new PolarisEntityManager(
5762
metaStoreManagerFactory.getOrCreateMetaStoreManager(context),
58-
metaStoreManagerFactory.getOrCreateStorageCredentialCache(context),
63+
storageCredentialCache,
5964
metaStoreManagerFactory.getOrCreateEntityCache(context));
6065
});
6166
}

service/common/src/testFixtures/java/org/apache/polaris/service/TestServices.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import org.apache.polaris.core.persistence.dao.entity.CreatePrincipalResult;
4747
import org.apache.polaris.core.secrets.UserSecretsManager;
4848
import org.apache.polaris.core.secrets.UserSecretsManagerFactory;
49+
import org.apache.polaris.core.storage.cache.StorageCredentialCache;
4950
import org.apache.polaris.service.admin.PolarisServiceImpl;
5051
import org.apache.polaris.service.admin.api.PolarisCatalogsApi;
5152
import org.apache.polaris.service.catalog.DefaultCatalogPrefixParser;
@@ -156,8 +157,10 @@ public TestServices build() {
156157
InMemoryPolarisMetaStoreManagerFactory metaStoreManagerFactory =
157158
new InMemoryPolarisMetaStoreManagerFactory(
158159
storageIntegrationProvider, polarisDiagnostics, configurationStore);
160+
StorageCredentialCache storageCredentialCache =
161+
new StorageCredentialCache(configurationStore);
159162
RealmEntityManagerFactory realmEntityManagerFactory =
160-
new RealmEntityManagerFactory(metaStoreManagerFactory) {};
163+
new RealmEntityManagerFactory(metaStoreManagerFactory, storageCredentialCache);
161164
UserSecretsManagerFactory userSecretsManagerFactory =
162165
new UnsafeInMemorySecretsManagerFactory();
163166

0 commit comments

Comments
 (0)