Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
package org.apache.polaris.core.persistence;

import java.util.List;
import java.util.function.Supplier;
import org.apache.polaris.core.auth.AuthenticatedPolarisPrincipal;
import org.apache.polaris.core.context.CallContext;
import org.apache.polaris.core.entity.PolarisEntity;
Expand All @@ -42,7 +41,6 @@
*/
public class PolarisEntityManager {
private final PolarisMetaStoreManager metaStoreManager;
private final Supplier<PolarisMetaStoreSession> sessionSupplier;
private final EntityCache entityCache;

private final StorageCredentialCache credentialCache;
Expand All @@ -51,27 +49,16 @@ public class PolarisEntityManager {
private ResolvedPolarisEntity implicitResolvedRootContainerEntity = null;

/**
* @param sessionSupplier must return a new independent metastore session affiliated with the
* backing store under the {@code delegate} on each invocation.
* @param metaStoreManager the metastore manager for the current realm
* @param credentialCache the storage credential cache for the current realm
*/
public PolarisEntityManager(
PolarisMetaStoreManager metaStoreManager,
Supplier<PolarisMetaStoreSession> sessionSupplier,
StorageCredentialCache credentialCache) {
PolarisMetaStoreManager metaStoreManager, StorageCredentialCache credentialCache) {
this.metaStoreManager = metaStoreManager;
this.sessionSupplier = sessionSupplier;
this.entityCache = new EntityCache(metaStoreManager);
this.credentialCache = credentialCache;
}

public PolarisMetaStoreSession newMetaStoreSession() {
return sessionSupplier.get();
}

public PolarisMetaStoreManager getMetaStoreManager() {
return metaStoreManager;
}

public Resolver prepareResolver(
@NotNull CallContext callContext,
@NotNull AuthenticatedPolarisPrincipal authenticatedPrincipal,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
import org.apache.polaris.service.config.ConfigurationStoreAware;
import org.apache.polaris.service.config.PolarisApplicationConfig;
import org.apache.polaris.service.config.RealmEntityManagerFactory;
import org.apache.polaris.service.context.CallContextResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -55,10 +54,8 @@ protected void run(
if (metaStoreManagerFactory instanceof ConfigurationStoreAware) {
((ConfigurationStoreAware) metaStoreManagerFactory).setConfigurationStore(configurationStore);
}
RealmEntityManagerFactory entityManagerFactory =
new RealmEntityManagerFactory(metaStoreManagerFactory);
CallContextResolver callContextResolver = configuration.getCallContextResolver();
callContextResolver.setEntityManagerFactory(entityManagerFactory);
callContextResolver.setMetaStoreManagerFactory(metaStoreManagerFactory);
if (callContextResolver instanceof ConfigurationStoreAware csa) {
csa.setConfigurationStore(configurationStore);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
import org.apache.polaris.service.catalog.api.IcebergRestOAuth2Api;
import org.apache.polaris.service.catalog.io.FileIOFactory;
import org.apache.polaris.service.config.ConfigurationStoreAware;
import org.apache.polaris.service.config.HasEntityManagerFactory;
import org.apache.polaris.service.config.HasMetaStoreManagerFactory;
import org.apache.polaris.service.config.OAuth2ApiService;
import org.apache.polaris.service.config.PolarisApplicationConfig;
import org.apache.polaris.service.config.RealmEntityManagerFactory;
Expand Down Expand Up @@ -184,13 +184,13 @@ public void run(PolarisApplicationConfig configuration, Environment environment)
RealmEntityManagerFactory entityManagerFactory =
new RealmEntityManagerFactory(metaStoreManagerFactory);
CallContextResolver callContextResolver = configuration.getCallContextResolver();
callContextResolver.setEntityManagerFactory(entityManagerFactory);
callContextResolver.setMetaStoreManagerFactory(metaStoreManagerFactory);
if (callContextResolver instanceof ConfigurationStoreAware csa) {
csa.setConfigurationStore(configurationStore);
}

RealmContextResolver realmContextResolver = configuration.getRealmContextResolver();
realmContextResolver.setEntityManagerFactory(entityManagerFactory);
realmContextResolver.setMetaStoreManagerFactory(metaStoreManagerFactory);
environment
.servlets()
.addFilter(
Expand Down Expand Up @@ -223,11 +223,13 @@ public void run(PolarisApplicationConfig configuration, Environment environment)
"Initializing PolarisCallContextCatalogFactory for metaStoreManagerType {}",
metaStoreManagerFactory);
CallContextCatalogFactory catalogFactory =
new PolarisCallContextCatalogFactory(entityManagerFactory, taskExecutor, fileIOFactory);
new PolarisCallContextCatalogFactory(
entityManagerFactory, metaStoreManagerFactory, taskExecutor, fileIOFactory);

PolarisAuthorizer authorizer = new PolarisAuthorizerImpl(configurationStore);
IcebergCatalogAdapter catalogAdapter =
new IcebergCatalogAdapter(catalogFactory, entityManagerFactory, authorizer);
new IcebergCatalogAdapter(
catalogFactory, entityManagerFactory, metaStoreManagerFactory, authorizer);
environment.jersey().register(new IcebergRestCatalogApi(catalogAdapter));
environment.jersey().register(new IcebergRestConfigurationApi(catalogAdapter));

Expand Down Expand Up @@ -269,7 +271,7 @@ public void run(PolarisApplicationConfig configuration, Environment environment)

DiscoverableAuthenticator<String, AuthenticatedPolarisPrincipal> authenticator =
configuration.getPolarisAuthenticator();
authenticator.setEntityManagerFactory(entityManagerFactory);
authenticator.setMetaStoreManagerFactory(metaStoreManagerFactory);
AuthFilter<String, AuthenticatedPolarisPrincipal> oauthCredentialAuthFilter =
new OAuthCredentialAuthFilter.Builder<AuthenticatedPolarisPrincipal>()
.setAuthenticator(authenticator)
Expand All @@ -278,13 +280,14 @@ public void run(PolarisApplicationConfig configuration, Environment environment)
environment.jersey().register(new AuthDynamicFeature(oauthCredentialAuthFilter));
environment.healthChecks().register("polaris", new PolarisHealthCheck());
OAuth2ApiService oauth2Service = configuration.getOauth2Service();
if (oauth2Service instanceof HasEntityManagerFactory emfAware) {
emfAware.setEntityManagerFactory(entityManagerFactory);
if (oauth2Service instanceof HasMetaStoreManagerFactory emfAware) {
emfAware.setMetaStoreManagerFactory(metaStoreManagerFactory);
}
environment.jersey().register(new IcebergRestOAuth2Api(oauth2Service));
environment.jersey().register(new IcebergExceptionMapper());
environment.jersey().register(new PolarisExceptionMapper());
PolarisServiceImpl polarisService = new PolarisServiceImpl(entityManagerFactory, authorizer);
PolarisServiceImpl polarisService =
new PolarisServiceImpl(entityManagerFactory, metaStoreManagerFactory, authorizer);
environment.jersey().register(new PolarisCatalogsApi(polarisService));
environment.jersey().register(new PolarisPrincipalsApi(polarisService));
environment.jersey().register(new PolarisPrincipalRolesApi(polarisService));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
import org.apache.polaris.service.config.ConfigurationStoreAware;
import org.apache.polaris.service.config.PolarisApplicationConfig;
import org.apache.polaris.service.config.RealmEntityManagerFactory;
import org.apache.polaris.service.context.CallContextResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -50,10 +49,8 @@ protected void run(
if (metaStoreManagerFactory instanceof ConfigurationStoreAware) {
((ConfigurationStoreAware) metaStoreManagerFactory).setConfigurationStore(configurationStore);
}
RealmEntityManagerFactory entityManagerFactory =
new RealmEntityManagerFactory(metaStoreManagerFactory);
CallContextResolver callContextResolver = configuration.getCallContextResolver();
callContextResolver.setEntityManagerFactory(entityManagerFactory);
callContextResolver.setMetaStoreManagerFactory(metaStoreManagerFactory);
if (callContextResolver instanceof ConfigurationStoreAware csa) {
csa.setConfigurationStore(configurationStore);
}
Expand Down
Loading