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

adutra 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 15032f26 Bootstrap all configured realms on startup for in-memory 
metastore (#802)
15032f26 is described below

commit 15032f2616aa122c67c4b190fca4389881229002
Author: Alexandre Dutra <[email protected]>
AuthorDate: Thu Jan 16 18:05:24 2025 +0100

    Bootstrap all configured realms on startup for in-memory metastore (#802)
---
 .../service/quarkus/it/QuarkusServerManager.java   |  2 +-
 .../InMemoryPolarisMetaStoreManagerFactory.java    | 35 ++++++++++++----------
 2 files changed, 20 insertions(+), 17 deletions(-)

diff --git 
a/quarkus/service/src/testFixtures/java/org/apache/polaris/service/quarkus/it/QuarkusServerManager.java
 
b/quarkus/service/src/testFixtures/java/org/apache/polaris/service/quarkus/it/QuarkusServerManager.java
index 755af4aa..38a3e3e0 100644
--- 
a/quarkus/service/src/testFixtures/java/org/apache/polaris/service/quarkus/it/QuarkusServerManager.java
+++ 
b/quarkus/service/src/testFixtures/java/org/apache/polaris/service/quarkus/it/QuarkusServerManager.java
@@ -47,7 +47,7 @@ public class QuarkusServerManager implements 
PolarisServerManager {
       @Override
       public ClientPrincipal adminCredentials() {
         // These credentials are injected via env. variables from build 
scripts.
-        // Cf. POLARIS_BOOTSTRAP_POLARIS_ROOT_CLIENT_ID
+        // Cf. POLARIS_BOOTSTRAP_CREDENTIALS in build.gradle.kts
         return new ClientPrincipal("root", new ClientCredentials("test-admin", 
"test-secret"));
       }
 
diff --git 
a/service/common/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java
 
b/service/common/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java
index 01b484ff..c5ce4759 100644
--- 
a/service/common/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java
+++ 
b/service/common/src/main/java/org/apache/polaris/service/persistence/InMemoryPolarisMetaStoreManagerFactory.java
@@ -24,7 +24,7 @@ import jakarta.annotation.Nullable;
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
 import java.time.Clock;
-import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
@@ -65,7 +65,7 @@ public class InMemoryPolarisMetaStoreManagerFactory
   }
 
   public void onStartup(RealmContextConfiguration realmContextConfiguration) {
-    
bootstrapRealmAndPrintCredentials(realmContextConfiguration.defaultRealm());
+    bootstrapRealmsAndPrintCredentials(realmContextConfiguration.realms());
   }
 
   @Override
@@ -86,7 +86,7 @@ public class InMemoryPolarisMetaStoreManagerFactory
   @Override
   public synchronized PolarisMetaStoreManager 
getOrCreateMetaStoreManager(RealmId realmId) {
     if (!bootstrappedRealms.contains(realmId.id())) {
-      bootstrapRealmAndPrintCredentials(realmId.id());
+      bootstrapRealmsAndPrintCredentials(List.of(realmId.id()));
     }
     return super.getOrCreateMetaStoreManager(realmId);
   }
@@ -95,25 +95,28 @@ public class InMemoryPolarisMetaStoreManagerFactory
   public synchronized Supplier<PolarisMetaStoreSession> 
getOrCreateSessionSupplier(
       RealmId realmId) {
     if (!bootstrappedRealms.contains(realmId.id())) {
-      bootstrapRealmAndPrintCredentials(realmId.id());
+      bootstrapRealmsAndPrintCredentials(List.of(realmId.id()));
     }
     return super.getOrCreateSessionSupplier(realmId);
   }
 
-  private void bootstrapRealmAndPrintCredentials(String realmId) {
+  private void bootstrapRealmsAndPrintCredentials(List<String> realms) {
+    PolarisCredentialsBootstrap credentialsBootstrap =
+        PolarisCredentialsBootstrap.fromEnvironment();
     Map<String, PrincipalSecretsResult> results =
-        this.bootstrapRealms(
-            Collections.singletonList(realmId), 
PolarisCredentialsBootstrap.fromEnvironment());
-    bootstrappedRealms.add(realmId);
+        this.bootstrapRealms(realms, credentialsBootstrap);
+    bootstrappedRealms.addAll(realms);
 
-    PrincipalSecretsResult principalSecrets = results.get(realmId);
+    for (String realmId : realms) {
+      PrincipalSecretsResult principalSecrets = results.get(realmId);
 
-    String msg =
-        String.format(
-            "realm: %1s root principal credentials: %2s:%3s",
-            realmId,
-            principalSecrets.getPrincipalSecrets().getPrincipalClientId(),
-            principalSecrets.getPrincipalSecrets().getMainSecret());
-    System.out.println(msg);
+      String msg =
+          String.format(
+              "realm: %1s root principal credentials: %2s:%3s",
+              realmId,
+              principalSecrets.getPrincipalSecrets().getPrincipalClientId(),
+              principalSecrets.getPrincipalSecrets().getMainSecret());
+      System.out.println(msg);
+    }
   }
 }

Reply via email to