Skip to content

Commit 1dbb2dc

Browse files
Merge branch 'main' into renovate/pyiceberg-0.x
2 parents 8589174 + 9832549 commit 1dbb2dc

File tree

13 files changed

+74
-161
lines changed

13 files changed

+74
-161
lines changed

client/python/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ pytest-cov = ">= 2.8.1"
5757
tox = ">= 3.9.0"
5858
flake8 = ">= 4.0.0"
5959
types-python-dateutil = ">= 2.8.19.14"
60-
mypy = ">=1.17, <=1.17.1"
60+
mypy = ">=1.18, <=1.18.1"
6161
pyiceberg = "==0.10.0"
6262
pre-commit = "==4.3.0"
6363
openapi-generator-cli = "==7.11.0.post0"

polaris-core/src/main/java/org/apache/polaris/core/auth/PolarisSecretsManager.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import jakarta.annotation.Nonnull;
2222
import org.apache.polaris.core.PolarisCallContext;
2323
import org.apache.polaris.core.persistence.dao.entity.PrincipalSecretsResult;
24-
import software.amazon.awssdk.annotations.NotNull;
2524

2625
/** Manages secrets for Polaris principals. */
2726
public interface PolarisSecretsManager {
@@ -74,7 +73,7 @@ PrincipalSecretsResult rotatePrincipalSecrets(
7473
PrincipalSecretsResult resetPrincipalSecrets(
7574
@Nonnull PolarisCallContext callCtx,
7675
long principalId,
77-
@NotNull String resolvedClientId,
76+
@Nonnull String resolvedClientId,
7877
String customClientSecret);
7978

8079
/**

runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisAdminService.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
import com.google.common.base.Strings;
2525
import jakarta.annotation.Nonnull;
2626
import jakarta.annotation.Nullable;
27-
import jakarta.validation.constraints.NotNull;
27+
import jakarta.enterprise.context.RequestScoped;
28+
import jakarta.inject.Inject;
2829
import jakarta.ws.rs.core.SecurityContext;
2930
import java.util.ArrayList;
3031
import java.util.Arrays;
@@ -135,6 +136,7 @@
135136
* provide different implementations of PolarisEntityManager to abstract away the implementation of
136137
* the persistence layer.
137138
*/
139+
@RequestScoped
138140
public class PolarisAdminService {
139141
private static final Logger LOGGER = LoggerFactory.getLogger(PolarisAdminService.class);
140142

@@ -151,15 +153,16 @@ public class PolarisAdminService {
151153
// Initialized in the authorize methods.
152154
private PolarisResolutionManifest resolutionManifest = null;
153155

156+
@Inject
154157
public PolarisAdminService(
155-
@NotNull PolarisDiagnostics diagnostics,
156-
@NotNull CallContext callContext,
157-
@NotNull ResolutionManifestFactory resolutionManifestFactory,
158-
@NotNull PolarisMetaStoreManager metaStoreManager,
159-
@NotNull UserSecretsManager userSecretsManager,
160-
@NotNull SecurityContext securityContext,
161-
@NotNull PolarisAuthorizer authorizer,
162-
@NotNull ReservedProperties reservedProperties) {
158+
@Nonnull PolarisDiagnostics diagnostics,
159+
@Nonnull CallContext callContext,
160+
@Nonnull ResolutionManifestFactory resolutionManifestFactory,
161+
@Nonnull PolarisMetaStoreManager metaStoreManager,
162+
@Nonnull UserSecretsManager userSecretsManager,
163+
@Nonnull SecurityContext securityContext,
164+
@Nonnull PolarisAuthorizer authorizer,
165+
@Nonnull ReservedProperties reservedProperties) {
163166
this.callContext = callContext;
164167
this.realmConfig = callContext.getRealmConfig();
165168
this.resolutionManifestFactory = resolutionManifestFactory;
@@ -700,7 +703,7 @@ private Map<String, SecretReference> extractSecretReferences(
700703
* @see #extractSecretReferences
701704
*/
702705
private boolean requiresSecretReferenceExtraction(
703-
@NotNull ConnectionConfigInfo connectionConfigInfo) {
706+
@Nonnull ConnectionConfigInfo connectionConfigInfo) {
704707
return connectionConfigInfo.getAuthenticationParameters().getAuthenticationType()
705708
!= AuthenticationParameters.AuthenticationTypeEnum.IMPLICIT;
706709
}

runtime/service/src/main/java/org/apache/polaris/service/admin/PolarisServiceImpl.java

Lines changed: 6 additions & 85 deletions
Large diffs are not rendered by default.

runtime/service/src/main/java/org/apache/polaris/service/auth/DefaultActiveRolesProvider.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.apache.polaris.core.entity.PolarisEntity;
3636
import org.apache.polaris.core.entity.PolarisEntityType;
3737
import org.apache.polaris.core.entity.PrincipalRoleEntity;
38-
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
3938
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
4039
import org.apache.polaris.core.persistence.dao.entity.EntityResult;
4140
import org.apache.polaris.core.persistence.dao.entity.LoadGrantsResult;
@@ -55,7 +54,7 @@ public class DefaultActiveRolesProvider implements ActiveRolesProvider {
5554

5655
@Inject PolarisDiagnostics diagnostics;
5756
@Inject CallContext callContext;
58-
@Inject MetaStoreManagerFactory metaStoreManagerFactory;
57+
@Inject PolarisMetaStoreManager metaStoreManager;
5958

6059
@Override
6160
public Set<String> getActiveRoles(PolarisPrincipal principal) {
@@ -68,9 +67,7 @@ public Set<String> getActiveRoles(PolarisPrincipal principal) {
6867
}
6968
List<PrincipalRoleEntity> activeRoles =
7069
loadActivePrincipalRoles(
71-
principal.getRoles(),
72-
persistedPolarisPrincipal.getEntity(),
73-
metaStoreManagerFactory.getOrCreateMetaStoreManager(callContext.getRealmContext()));
70+
principal.getRoles(), persistedPolarisPrincipal.getEntity(), metaStoreManager);
7471
return activeRoles.stream().map(PrincipalRoleEntity::getName).collect(Collectors.toSet());
7572
}
7673

runtime/service/src/main/java/org/apache/polaris/service/auth/DefaultAuthenticator.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import org.apache.polaris.core.entity.PolarisEntity;
3232
import org.apache.polaris.core.entity.PolarisEntityType;
3333
import org.apache.polaris.core.entity.PrincipalEntity;
34-
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
3534
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
3635
import org.slf4j.Logger;
3736
import org.slf4j.LoggerFactory;
@@ -50,14 +49,12 @@ public class DefaultAuthenticator implements Authenticator {
5049

5150
private static final Logger LOGGER = LoggerFactory.getLogger(DefaultAuthenticator.class);
5251

53-
@Inject MetaStoreManagerFactory metaStoreManagerFactory;
5452
@Inject CallContext callContext;
53+
@Inject PolarisMetaStoreManager metaStoreManager;
5554

5655
@Override
5756
public PolarisPrincipal authenticate(PolarisCredential credentials) {
5857
LOGGER.debug("Resolving principal for credentials={}", credentials);
59-
PolarisMetaStoreManager metaStoreManager =
60-
metaStoreManagerFactory.getOrCreateMetaStoreManager(callContext.getRealmContext());
6158
PolarisEntity principal = null;
6259
try {
6360
// If the principal id is present, prefer to use it to load the principal entity,

runtime/service/src/test/java/org/apache/polaris/service/admin/ManagementServiceTest.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,12 @@
4141
import org.apache.polaris.core.admin.model.UpdateCatalogRequest;
4242
import org.apache.polaris.core.auth.PolarisAuthorizerImpl;
4343
import org.apache.polaris.core.auth.PolarisPrincipal;
44-
import org.apache.polaris.core.context.RealmContext;
4544
import org.apache.polaris.core.entity.PolarisBaseEntity;
4645
import org.apache.polaris.core.entity.PolarisEntityConstants;
4746
import org.apache.polaris.core.entity.PolarisEntitySubType;
4847
import org.apache.polaris.core.entity.PolarisEntityType;
4948
import org.apache.polaris.core.entity.PrincipalEntity;
5049
import org.apache.polaris.core.entity.PrincipalRoleEntity;
51-
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
5250
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
5351
import org.apache.polaris.core.persistence.dao.entity.BaseResult;
5452
import org.apache.polaris.core.persistence.dao.entity.CreateCatalogResult;
@@ -228,12 +226,6 @@ public void testUpdateCatalogWithDisallowedStorageConfig() {
228226
.hasMessage("Explicitly setting S3 endpoints is not allowed.");
229227
}
230228

231-
private PolarisMetaStoreManager setupMetaStoreManager() {
232-
MetaStoreManagerFactory metaStoreManagerFactory = services.metaStoreManagerFactory();
233-
RealmContext realmContext = services.realmContext();
234-
return metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext);
235-
}
236-
237229
private PolarisAdminService setupPolarisAdminService(
238230
PolarisMetaStoreManager metaStoreManager, PolarisCallContext callContext) {
239231
return new PolarisAdminService(
@@ -297,7 +289,7 @@ private PrincipalRoleEntity createRole(
297289

298290
@Test
299291
public void testCannotAssignFederatedEntities() {
300-
PolarisMetaStoreManager metaStoreManager = setupMetaStoreManager();
292+
PolarisMetaStoreManager metaStoreManager = services.metaStoreManager();
301293
PolarisCallContext callContext = services.newCallContext();
302294
PolarisAdminService polarisAdminService =
303295
setupPolarisAdminService(metaStoreManager, callContext);
@@ -316,7 +308,7 @@ public void testCannotAssignFederatedEntities() {
316308

317309
@Test
318310
public void testCanListCatalogs() {
319-
PolarisMetaStoreManager metaStoreManager = setupMetaStoreManager();
311+
PolarisMetaStoreManager metaStoreManager = services.metaStoreManager();
320312
PolarisCallContext callContext = services.newCallContext();
321313
PolarisAdminService polarisAdminService =
322314
setupPolarisAdminService(metaStoreManager, callContext);
@@ -356,7 +348,7 @@ public void testCanListCatalogs() {
356348

357349
@Test
358350
public void testCreateCatalogReturnErrorOnFailure() {
359-
PolarisMetaStoreManager metaStoreManager = Mockito.spy(setupMetaStoreManager());
351+
PolarisMetaStoreManager metaStoreManager = Mockito.spy(services.metaStoreManager());
360352
PolarisCallContext callContext = services.newCallContext();
361353
PolarisAdminService polarisAdminService =
362354
setupPolarisAdminService(metaStoreManager, callContext);

runtime/service/src/test/java/org/apache/polaris/service/admin/PolarisServiceImplTest.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import static org.assertj.core.api.Assertions.assertThatThrownBy;
2323
import static org.mockito.Mockito.when;
2424

25+
import jakarta.ws.rs.core.SecurityContext;
2526
import java.lang.reflect.Method;
2627
import java.util.List;
2728
import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
@@ -35,12 +36,13 @@
3536
import org.apache.polaris.core.admin.model.PolarisCatalog;
3637
import org.apache.polaris.core.admin.model.StorageConfigInfo;
3738
import org.apache.polaris.core.auth.PolarisAuthorizer;
39+
import org.apache.polaris.core.auth.PolarisPrincipal;
3840
import org.apache.polaris.core.config.FeatureConfiguration;
3941
import org.apache.polaris.core.config.RealmConfig;
4042
import org.apache.polaris.core.context.CallContext;
41-
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
43+
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
4244
import org.apache.polaris.core.persistence.resolver.ResolutionManifestFactory;
43-
import org.apache.polaris.core.secrets.UserSecretsManagerFactory;
45+
import org.apache.polaris.core.secrets.UserSecretsManager;
4446
import org.apache.polaris.service.config.ReservedProperties;
4547
import org.apache.polaris.service.events.listeners.NoOpPolarisEventListener;
4648
import org.apache.polaris.service.events.listeners.PolarisEventListener;
@@ -52,25 +54,29 @@ public class PolarisServiceImplTest {
5254

5355
private final PolarisDiagnostics diagnostics = new PolarisDefaultDiagServiceImpl();
5456
private ResolutionManifestFactory resolutionManifestFactory;
55-
private MetaStoreManagerFactory metaStoreManagerFactory;
56-
private UserSecretsManagerFactory userSecretsManagerFactory;
57+
private PolarisMetaStoreManager metaStoreManager;
58+
private UserSecretsManager userSecretsManager;
5759
private PolarisAuthorizer polarisAuthorizer;
5860
private CallContext callContext;
5961
private ReservedProperties reservedProperties;
6062
private RealmConfig realmConfig;
6163
private PolarisEventListener polarisEventListener;
6264

65+
private PolarisAdminService adminService;
6366
private PolarisServiceImpl polarisService;
6467

6568
@BeforeEach
6669
void setUp() {
6770
resolutionManifestFactory = Mockito.mock(ResolutionManifestFactory.class);
68-
metaStoreManagerFactory = Mockito.mock(MetaStoreManagerFactory.class);
69-
userSecretsManagerFactory = Mockito.mock(UserSecretsManagerFactory.class);
71+
metaStoreManager = Mockito.mock(PolarisMetaStoreManager.class);
72+
userSecretsManager = Mockito.mock(UserSecretsManager.class);
7073
polarisAuthorizer = Mockito.mock(PolarisAuthorizer.class);
7174
callContext = Mockito.mock(CallContext.class);
7275
reservedProperties = Mockito.mock(ReservedProperties.class);
7376
realmConfig = Mockito.mock(RealmConfig.class);
77+
SecurityContext securityContext = Mockito.mock(SecurityContext.class);
78+
Mockito.when(securityContext.getUserPrincipal())
79+
.thenReturn(Mockito.mock(PolarisPrincipal.class));
7480
polarisEventListener = new NoOpPolarisEventListener();
7581

7682
when(callContext.getRealmConfig()).thenReturn(realmConfig);
@@ -80,16 +86,18 @@ void setUp() {
8086
FeatureConfiguration.SUPPORTED_EXTERNAL_CATALOG_AUTHENTICATION_TYPES))
8187
.thenReturn(List.of("OAUTH"));
8288

83-
polarisService =
84-
new PolarisServiceImpl(
89+
adminService =
90+
new PolarisAdminService(
8591
diagnostics,
92+
callContext,
8693
resolutionManifestFactory,
87-
metaStoreManagerFactory,
88-
userSecretsManagerFactory,
94+
metaStoreManager,
95+
userSecretsManager,
96+
securityContext,
8997
polarisAuthorizer,
90-
callContext,
91-
reservedProperties,
92-
polarisEventListener);
98+
reservedProperties);
99+
polarisService =
100+
new PolarisServiceImpl(realmConfig, reservedProperties, polarisEventListener, adminService);
93101
}
94102

95103
@Test

runtime/service/src/test/java/org/apache/polaris/service/auth/DefaultAuthenticatorTest.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.apache.polaris.core.PolarisCallContext;
2626
import org.apache.polaris.core.context.RealmContext;
2727
import org.apache.polaris.core.entity.PolarisEntityType;
28-
import org.apache.polaris.core.persistence.MetaStoreManagerFactory;
2928
import org.apache.polaris.core.persistence.PolarisMetaStoreManager;
3029
import org.apache.polaris.core.persistence.dao.entity.BaseResult;
3130
import org.apache.polaris.core.persistence.dao.entity.EntityResult;
@@ -46,11 +45,8 @@ public void setUp() {
4645
polarisCallContext = Mockito.mock(PolarisCallContext.class);
4746
when(polarisCallContext.getRealmContext()).thenReturn(realmContext);
4847
metaStoreManager = Mockito.mock(PolarisMetaStoreManager.class);
49-
MetaStoreManagerFactory metaStoreManagerFactory = Mockito.mock(MetaStoreManagerFactory.class);
50-
when(metaStoreManagerFactory.getOrCreateMetaStoreManager(realmContext))
51-
.thenReturn(metaStoreManager);
5248
authenticator = new DefaultAuthenticator();
53-
authenticator.metaStoreManagerFactory = metaStoreManagerFactory;
49+
authenticator.metaStoreManager = metaStoreManager;
5450
authenticator.callContext = polarisCallContext;
5551
}
5652

runtime/service/src/test/java/org/apache/polaris/service/catalog/io/FileIOFactoryTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,7 @@ public void testLoadFileIOForCleanupTask(String scheme) {
169169

170170
List<PolarisBaseEntity> tasks =
171171
testServices
172-
.metaStoreManagerFactory()
173-
.getOrCreateMetaStoreManager(realmContext)
172+
.metaStoreManager()
174173
.loadTasks(callContext.getPolarisCallContext(), "testExecutor", PageToken.fromLimit(1))
175174
.getEntities();
176175
Assertions.assertThat(tasks).hasSize(1);
@@ -228,7 +227,7 @@ IcebergCatalog createCatalog(TestServices services, String scheme) {
228227
services.polarisDiagnostics(),
229228
services.storageCredentialCache(),
230229
services.resolverFactory(),
231-
services.metaStoreManagerFactory().getOrCreateMetaStoreManager(realmContext),
230+
services.metaStoreManager(),
232231
callContext,
233232
passthroughView,
234233
services.securityContext(),

0 commit comments

Comments
 (0)