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 8c7d3bb5a..cbaf9487a 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 @@ -21,7 +21,6 @@ import jakarta.annotation.Nonnull; import jakarta.annotation.Nullable; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.function.Supplier; import org.apache.polaris.core.PolarisCallContext; @@ -97,7 +96,7 @@ private void initializeForRealm( @Override public synchronized Map bootstrapRealms( - List realms, RootCredentialsSet rootCredentialsSet) { + Iterable realms, RootCredentialsSet rootCredentialsSet) { Map results = new HashMap<>(); for (String realm : realms) { @@ -111,23 +110,28 @@ public synchronized Map bootstrapRealms( } } - return results; + return Map.copyOf(results); } @Override - public void purgeRealms(List realms) { + public Map purgeRealms(Iterable realms) { + Map results = new HashMap<>(); + for (String realm : realms) { PolarisMetaStoreManager metaStoreManager = getOrCreateMetaStoreManager(() -> realm); PolarisMetaStoreSession session = getOrCreateSessionSupplier(() -> realm).get(); PolarisCallContext callContext = new PolarisCallContext(session, diagServices); - metaStoreManager.purge(callContext); + BaseResult result = metaStoreManager.purge(callContext); + results.put(realm, result); storageCredentialCacheMap.remove(realm); backingStoreMap.remove(realm); sessionSupplierMap.remove(realm); metaStoreManagerMap.remove(realm); } + + return Map.copyOf(results); } @Override diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java index 135571578..312ff46ee 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/MetaStoreManagerFactory.java @@ -18,7 +18,6 @@ */ package org.apache.polaris.core.persistence; -import java.util.List; import java.util.Map; import java.util.function.Supplier; import org.apache.polaris.core.auth.PolarisSecretsManager.PrincipalSecretsResult; @@ -39,8 +38,8 @@ public interface MetaStoreManagerFactory { EntityCache getOrCreateEntityCache(RealmContext realmContext); Map bootstrapRealms( - List realms, RootCredentialsSet rootCredentialsSet); + Iterable realms, RootCredentialsSet rootCredentialsSet); /** Purge all metadata for the realms provided */ - void purgeRealms(List realms); + Map purgeRealms(Iterable realms); } diff --git a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/catalog/BasePolarisCatalogTest.java b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/catalog/BasePolarisCatalogTest.java index 606f70afb..137f55d6c 100644 --- a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/catalog/BasePolarisCatalogTest.java +++ b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/catalog/BasePolarisCatalogTest.java @@ -83,6 +83,7 @@ import org.apache.polaris.core.entity.PolarisEntityType; import org.apache.polaris.core.entity.PrincipalEntity; import org.apache.polaris.core.entity.TaskEntity; +import org.apache.polaris.core.persistence.BaseResult; import org.apache.polaris.core.persistence.MetaStoreManagerFactory; import org.apache.polaris.core.persistence.PolarisEntityManager; import org.apache.polaris.core.persistence.PolarisMetaStoreManager; @@ -345,12 +346,12 @@ public EntityCache getOrCreateEntityCache(RealmContext realmContext) { @Override public Map bootstrapRealms( - List realms, RootCredentialsSet rootCredentialsSet) { + Iterable realms, RootCredentialsSet rootCredentialsSet) { throw new NotImplementedException("Bootstrapping realms is not supported"); } @Override - public void purgeRealms(List realms) { + public Map purgeRealms(Iterable realms) { throw new NotImplementedException("Purging realms is not supported"); } };