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);
+ }
}
}