Skip to content

Commit 756e535

Browse files
authored
Remove PolarisDiagnostics from json utils (apache#2176)
With transitive cleanups of, PolarisStorageConfigurationInfo, ConnectionConfigInfoDpo, BaseMetaStoreManager, PolarisObjectMapperUtil, CurrentContext
1 parent e46f8c6 commit 756e535

File tree

24 files changed

+81
-229
lines changed

24 files changed

+81
-229
lines changed

persistence/relational-jdbc/src/main/java/org/apache/polaris/persistence/relational/jdbc/JdbcMetaStoreManagerFactory.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
3434
import org.apache.polaris.core.PolarisDiagnostics;
3535
import org.apache.polaris.core.config.RealmConfig;
36-
import org.apache.polaris.core.context.CallContext;
3736
import org.apache.polaris.core.context.RealmContext;
3837
import org.apache.polaris.core.entity.PolarisEntityConstants;
3938
import org.apache.polaris.core.entity.PrincipalEntity;
@@ -232,9 +231,6 @@ private PrincipalSecretsResult bootstrapServiceAndCreatePolarisPrincipalForRealm
232231
BasePersistence metaStore = sessionSupplierMap.get(realmContext.getRealmIdentifier()).get();
233232
PolarisCallContext polarisContext =
234233
new PolarisCallContext(realmContext, metaStore, diagServices);
235-
if (CallContext.getCurrentContext() == null) {
236-
CallContext.setCurrentContext(polarisContext);
237-
}
238234

239235
Optional<PrincipalEntity> preliminaryRootPrincipal =
240236
metaStoreManager.findRootPrincipal(polarisContext);
@@ -270,9 +266,6 @@ private void checkPolarisServiceBootstrappedForRealm(RealmContext realmContext)
270266
BasePersistence metaStore = sessionSupplierMap.get(realmContext.getRealmIdentifier()).get();
271267
PolarisCallContext polarisContext =
272268
new PolarisCallContext(realmContext, metaStore, diagServices);
273-
if (CallContext.getCurrentContext() == null) {
274-
CallContext.setCurrentContext(polarisContext);
275-
}
276269

277270
Optional<PrincipalEntity> rootPrincipal = metaStoreManager.findRootPrincipal(polarisContext);
278271
if (rootPrincipal.isEmpty()) {

polaris-core/src/main/java/org/apache/polaris/core/connection/ConnectionConfigInfoDpo.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,10 @@
2626
import com.fasterxml.jackson.databind.DeserializationFeature;
2727
import com.fasterxml.jackson.databind.ObjectMapper;
2828
import jakarta.annotation.Nonnull;
29-
import jakarta.annotation.Nullable;
3029
import java.net.MalformedURLException;
3130
import java.net.URI;
3231
import java.net.URL;
3332
import java.util.Map;
34-
import org.apache.polaris.core.PolarisDiagnostics;
3533
import org.apache.polaris.core.admin.model.ConnectionConfigInfo;
3634
import org.apache.polaris.core.admin.model.HadoopConnectionConfigInfo;
3735
import org.apache.polaris.core.admin.model.IcebergRestConnectionConfigInfo;
@@ -115,15 +113,12 @@ public String serialize() {
115113
}
116114
}
117115

118-
public static @Nullable ConnectionConfigInfoDpo deserialize(
119-
@Nonnull PolarisDiagnostics diagnostics, final @Nonnull String jsonStr) {
116+
public static ConnectionConfigInfoDpo deserialize(final @Nonnull String jsonStr) {
120117
try {
121118
return DEFAULT_MAPPER.readValue(jsonStr, ConnectionConfigInfoDpo.class);
122-
} catch (JsonProcessingException exception) {
123-
diagnostics.fail(
124-
"fail_to_deserialize_connection_configuration", exception, "jsonStr={}", jsonStr);
119+
} catch (JsonProcessingException ex) {
120+
throw new RuntimeException("deserialize failed: " + ex.getMessage(), ex);
125121
}
126-
return null;
127122
}
128123

129124
/** Validates the remote URI. */

polaris-core/src/main/java/org/apache/polaris/core/entity/CatalogEntity.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import java.util.Optional;
3131
import java.util.Set;
3232
import org.apache.iceberg.exceptions.BadRequestException;
33-
import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
3433
import org.apache.polaris.core.admin.model.AwsStorageConfigInfo;
3534
import org.apache.polaris.core.admin.model.AzureStorageConfigInfo;
3635
import org.apache.polaris.core.admin.model.Catalog;
@@ -195,8 +194,7 @@ public String getReplaceNewLocationPrefixWithCatalogDefault() {
195194
String configStr =
196195
getInternalPropertiesAsMap().get(PolarisEntityConstants.getStorageConfigInfoPropertyName());
197196
if (configStr != null) {
198-
return PolarisStorageConfigurationInfo.deserialize(
199-
new PolarisDefaultDiagServiceImpl(), configStr);
197+
return PolarisStorageConfigurationInfo.deserialize(configStr);
200198
}
201199
return null;
202200
}
@@ -217,7 +215,7 @@ public ConnectionConfigInfoDpo getConnectionConfigInfoDpo() {
217215
getInternalPropertiesAsMap()
218216
.get(PolarisEntityConstants.getConnectionConfigInfoPropertyName());
219217
if (configStr != null) {
220-
return ConnectionConfigInfoDpo.deserialize(new PolarisDefaultDiagServiceImpl(), configStr);
218+
return ConnectionConfigInfoDpo.deserialize(configStr);
221219
}
222220
return null;
223221
}

polaris-core/src/main/java/org/apache/polaris/core/entity/TaskEntity.java

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
*/
1919
package org.apache.polaris.core.entity;
2020

21-
import org.apache.polaris.core.PolarisCallContext;
22-
import org.apache.polaris.core.context.CallContext;
2321
import org.apache.polaris.core.persistence.PolarisObjectMapperUtil;
2422

2523
/**
@@ -40,17 +38,13 @@ public static TaskEntity of(PolarisBaseEntity polarisEntity) {
4038
}
4139

4240
public <T> T readData(Class<T> klass) {
43-
PolarisCallContext polarisCallContext = CallContext.getCurrentContext().getPolarisCallContext();
4441
return PolarisObjectMapperUtil.deserialize(
45-
polarisCallContext, getPropertiesAsMap().get(PolarisTaskConstants.TASK_DATA), klass);
42+
getPropertiesAsMap().get(PolarisTaskConstants.TASK_DATA), klass);
4643
}
4744

4845
public AsyncTaskType getTaskType() {
49-
PolarisCallContext polarisCallContext = CallContext.getCurrentContext().getPolarisCallContext();
5046
return PolarisObjectMapperUtil.deserialize(
51-
polarisCallContext,
52-
getPropertiesAsMap().get(PolarisTaskConstants.TASK_TYPE),
53-
AsyncTaskType.class);
47+
getPropertiesAsMap().get(PolarisTaskConstants.TASK_TYPE), AsyncTaskType.class);
5448
}
5549

5650
public static class Builder extends PolarisEntity.BaseBuilder<TaskEntity, TaskEntity.Builder> {
@@ -66,20 +60,12 @@ public Builder(TaskEntity original) {
6660
}
6761

6862
public Builder withTaskType(AsyncTaskType taskType) {
69-
PolarisCallContext polarisCallContext =
70-
CallContext.getCurrentContext().getPolarisCallContext();
71-
properties.put(
72-
PolarisTaskConstants.TASK_TYPE,
73-
PolarisObjectMapperUtil.serialize(polarisCallContext, taskType));
63+
properties.put(PolarisTaskConstants.TASK_TYPE, PolarisObjectMapperUtil.serialize(taskType));
7464
return this;
7565
}
7666

7767
public Builder withData(Object data) {
78-
PolarisCallContext polarisCallContext =
79-
CallContext.getCurrentContext().getPolarisCallContext();
80-
properties.put(
81-
PolarisTaskConstants.TASK_DATA,
82-
PolarisObjectMapperUtil.serialize(polarisCallContext, data));
68+
properties.put(PolarisTaskConstants.TASK_DATA, PolarisObjectMapperUtil.serialize(data));
8369
return this;
8470
}
8571

polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,7 @@ private void dropEntity(
246246
// if it is a principal, we also need to drop the secrets
247247
if (entity.getType() == PolarisEntityType.PRINCIPAL) {
248248
// get internal properties
249-
Map<String, String> properties =
250-
this.deserializeProperties(callCtx, entity.getInternalProperties());
249+
Map<String, String> properties = this.deserializeProperties(entity.getInternalProperties());
251250

252251
// get client_id
253252
String clientId = properties.get(PolarisEntityConstants.getClientIdPropertyName());
@@ -427,7 +426,7 @@ private void revokeGrantRecord(
427426
// validate input
428427
callCtx.getDiagServices().checkNotNull(catalog, "unexpected_null_catalog");
429428

430-
Map<String, String> internalProp = getInternalPropertyMap(callCtx, catalog);
429+
Map<String, String> internalProp = getInternalPropertyMap(catalog);
431430
String integrationIdentifierOrId =
432431
internalProp.get(PolarisEntityConstants.getStorageIntegrationIdentifierPropertyName());
433432
String storageConfigInfoStr =
@@ -442,8 +441,7 @@ private void revokeGrantRecord(
442441
callCtx,
443442
catalog.getCatalogId(),
444443
catalog.getId(),
445-
PolarisStorageConfigurationInfo.deserialize(
446-
callCtx.getDiagServices(), storageConfigInfoStr));
444+
PolarisStorageConfigurationInfo.deserialize(storageConfigInfoStr));
447445
} else {
448446
integration = null;
449447
}
@@ -754,7 +752,7 @@ private void revokeGrantRecord(
754752

755753
// get internal properties
756754
Map<String, String> properties =
757-
this.deserializeProperties(callCtx, refreshPrincipal.getInternalProperties());
755+
this.deserializeProperties(refreshPrincipal.getInternalProperties());
758756

759757
// get client_id
760758
String clientId = properties.get(PolarisEntityConstants.getClientIdPropertyName());
@@ -800,14 +798,14 @@ private void revokeGrantRecord(
800798
.generateNewPrincipalSecrets(callCtx, principal.getName(), principal.getId());
801799

802800
// generate properties
803-
Map<String, String> internalProperties = getInternalPropertyMap(callCtx, principal);
801+
Map<String, String> internalProperties = getInternalPropertyMap(principal);
804802
internalProperties.put(
805803
PolarisEntityConstants.getClientIdPropertyName(), principalSecrets.getPrincipalClientId());
806804

807805
// remember client id
808806
PolarisBaseEntity updatedPrincipal =
809807
new PolarisBaseEntity.Builder(principal)
810-
.internalProperties(this.serializeProperties(callCtx, internalProperties))
808+
.internalProperties(this.serializeProperties(internalProperties))
811809
.build();
812810
// now create and persist new catalog entity
813811
EntityResult lowLevelResult = this.persistNewEntity(callCtx, ms, updatedPrincipal);
@@ -862,7 +860,6 @@ private void revokeGrantRecord(
862860
PolarisBaseEntity principal = loadEntityResult.getEntity();
863861
Map<String, String> internalProps =
864862
PolarisObjectMapperUtil.deserializeProperties(
865-
callCtx,
866863
principal.getInternalProperties() == null ? "{}" : principal.getInternalProperties());
867864

868865
boolean doReset =
@@ -881,14 +878,14 @@ private void revokeGrantRecord(
881878
internalProps.put(
882879
PolarisEntityConstants.PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_STATE, "true");
883880
principalBuilder.internalProperties(
884-
PolarisObjectMapperUtil.serializeProperties(callCtx, internalProps));
881+
PolarisObjectMapperUtil.serializeProperties(internalProps));
885882
principalBuilder.entityVersion(principal.getEntityVersion() + 1);
886883
ms.writeEntity(callCtx, principalBuilder.build(), true, principal);
887884
} else if (internalProps.containsKey(
888885
PolarisEntityConstants.PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_STATE)) {
889886
internalProps.remove(PolarisEntityConstants.PRINCIPAL_CREDENTIAL_ROTATION_REQUIRED_STATE);
890887
principalBuilder.internalProperties(
891-
PolarisObjectMapperUtil.serializeProperties(callCtx, internalProps));
888+
PolarisObjectMapperUtil.serializeProperties(internalProps));
892889
principalBuilder.entityVersion(principal.getEntityVersion() + 1);
893890
ms.writeEntity(callCtx, principalBuilder.build(), true, principal);
894891
}
@@ -1228,10 +1225,10 @@ private void revokeGrantRecord(
12281225
properties.put(
12291226
PolarisTaskConstants.TASK_TYPE,
12301227
String.valueOf(AsyncTaskType.ENTITY_CLEANUP_SCHEDULER.typeCode()));
1231-
properties.put("data", PolarisObjectMapperUtil.serialize(callCtx, refreshEntityToDrop));
1228+
properties.put("data", PolarisObjectMapperUtil.serialize(refreshEntityToDrop));
12321229
PolarisBaseEntity.Builder taskEntityBuilder =
12331230
new PolarisBaseEntity.Builder()
1234-
.properties(PolarisObjectMapperUtil.serializeProperties(callCtx, properties))
1231+
.properties(PolarisObjectMapperUtil.serializeProperties(properties))
12351232
.id(ms.generateNewId(callCtx))
12361233
.catalogId(0L)
12371234
.name("entityCleanup_" + entityToDrop.getId())
@@ -1240,7 +1237,7 @@ private void revokeGrantRecord(
12401237
.createTimestamp(callCtx.getClock().millis());
12411238
if (cleanupProperties != null) {
12421239
taskEntityBuilder.internalProperties(
1243-
PolarisObjectMapperUtil.serializeProperties(callCtx, cleanupProperties));
1240+
PolarisObjectMapperUtil.serializeProperties(cleanupProperties));
12441241
}
12451242
// TODO: Add a way to create the task entities atomically with dropping the entity;
12461243
// in the meantime, if the server fails partway through a dropEntity, it's possible that
@@ -1524,7 +1521,7 @@ private void revokeGrantRecord(
15241521
PolarisBaseEntity.Builder updatedTaskBuilder =
15251522
new PolarisBaseEntity.Builder(task);
15261523
Map<String, String> properties =
1527-
PolarisObjectMapperUtil.deserializeProperties(callCtx, task.getProperties());
1524+
PolarisObjectMapperUtil.deserializeProperties(task.getProperties());
15281525
properties.put(PolarisTaskConstants.LAST_ATTEMPT_EXECUTOR_ID, executorId);
15291526
properties.put(
15301527
PolarisTaskConstants.LAST_ATTEMPT_START_TIME,
@@ -1536,7 +1533,7 @@ private void revokeGrantRecord(
15361533
properties.getOrDefault(PolarisTaskConstants.ATTEMPT_COUNT, "0"))
15371534
+ 1));
15381535
updatedTaskBuilder.properties(
1539-
PolarisObjectMapperUtil.serializeProperties(callCtx, properties));
1536+
PolarisObjectMapperUtil.serializeProperties(properties));
15401537
EntityResult result =
15411538
updateEntityPropertiesIfNotChanged(callCtx, null, updatedTaskBuilder.build());
15421539
if (result.getReturnStatus() == BaseResult.ReturnStatus.SUCCESS) {
@@ -1630,18 +1627,16 @@ private void revokeGrantRecord(
16301627
/**
16311628
* Get the internal property map for an entity
16321629
*
1633-
* @param callCtx the polaris call context
16341630
* @param entity the target entity
16351631
* @return a map of string representing the internal properties
16361632
*/
1637-
public Map<String, String> getInternalPropertyMap(
1638-
@Nonnull PolarisCallContext callCtx, @Nonnull PolarisBaseEntity entity) {
1633+
public Map<String, String> getInternalPropertyMap(@Nonnull PolarisBaseEntity entity) {
16391634
String internalPropStr = entity.getInternalProperties();
16401635
Map<String, String> res = new HashMap<>();
16411636
if (internalPropStr == null) {
16421637
return res;
16431638
}
1644-
return deserializeProperties(callCtx, internalPropStr);
1639+
return deserializeProperties(internalPropStr);
16451640
}
16461641

16471642
/** {@inheritDoc} */

polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
import com.fasterxml.jackson.core.JsonProcessingException;
2222
import com.fasterxml.jackson.core.type.TypeReference;
23-
import com.fasterxml.jackson.databind.JsonMappingException;
2423
import com.fasterxml.jackson.databind.ObjectMapper;
2524
import jakarta.annotation.Nonnull;
2625
import java.util.Map;
@@ -40,8 +39,7 @@ public abstract class BaseMetaStoreManager implements PolarisMetaStoreManager {
4039
public static PolarisStorageConfigurationInfo extractStorageConfiguration(
4140
@Nonnull PolarisCallContext callCtx, PolarisBaseEntity reloadedEntity) {
4241
Map<String, String> propMap =
43-
PolarisObjectMapperUtil.deserializeProperties(
44-
callCtx, reloadedEntity.getInternalProperties());
42+
PolarisObjectMapperUtil.deserializeProperties(reloadedEntity.getInternalProperties());
4543
String storageConfigInfoStr =
4644
propMap.get(PolarisEntityConstants.getStorageConfigInfoPropertyName());
4745

@@ -53,8 +51,7 @@ public static PolarisStorageConfigurationInfo extractStorageConfiguration(
5351
"catalogId={}, entityId={}",
5452
reloadedEntity.getCatalogId(),
5553
reloadedEntity.getId());
56-
return PolarisStorageConfigurationInfo.deserialize(
57-
callCtx.getDiagServices(), storageConfigInfoStr);
54+
return PolarisStorageConfigurationInfo.deserialize(storageConfigInfoStr);
5855
}
5956

6057
/**
@@ -63,17 +60,13 @@ public static PolarisStorageConfigurationInfo extractStorageConfiguration(
6360
* @param properties a map of key/value pairs
6461
* @return a String, the JSON representation of the map
6562
*/
66-
public String serializeProperties(PolarisCallContext callCtx, Map<String, String> properties) {
67-
68-
String jsonString = null;
63+
public String serializeProperties(Map<String, String> properties) {
6964
try {
7065
// Deserialize the JSON string to a Map<String, String>
71-
jsonString = MAPPER.writeValueAsString(properties);
66+
return MAPPER.writeValueAsString(properties);
7267
} catch (JsonProcessingException ex) {
73-
callCtx.getDiagServices().fail("got_json_processing_exception", "ex={}", ex);
68+
throw new RuntimeException("serializeProperties failed: " + ex.getMessage(), ex);
7469
}
75-
76-
return jsonString;
7770
}
7871

7972
/**
@@ -82,19 +75,13 @@ public String serializeProperties(PolarisCallContext callCtx, Map<String, String
8275
* @param properties a JSON string representing the set of properties
8376
* @return a Map of string
8477
*/
85-
public Map<String, String> deserializeProperties(PolarisCallContext callCtx, String properties) {
86-
87-
Map<String, String> retProperties = null;
78+
public Map<String, String> deserializeProperties(String properties) {
8879
try {
8980
// Deserialize the JSON string to a Map<String, String>
90-
retProperties = MAPPER.readValue(properties, new TypeReference<>() {});
91-
} catch (JsonMappingException ex) {
92-
callCtx.getDiagServices().fail("got_json_mapping_exception", "ex={}", ex);
81+
return MAPPER.readValue(properties, new TypeReference<>() {});
9382
} catch (JsonProcessingException ex) {
94-
callCtx.getDiagServices().fail("got_json_processing_exception", "ex={}", ex);
83+
throw new RuntimeException("deserializeProperties failed: " + ex.getMessage(), ex);
9584
}
96-
97-
return retProperties;
9885
}
9986

10087
/**

polaris-core/src/main/java/org/apache/polaris/core/persistence/LocalPolarisMetaStoreManagerFactory.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.apache.polaris.core.PolarisDefaultDiagServiceImpl;
2929
import org.apache.polaris.core.PolarisDiagnostics;
3030
import org.apache.polaris.core.config.RealmConfig;
31-
import org.apache.polaris.core.context.CallContext;
3231
import org.apache.polaris.core.context.RealmContext;
3332
import org.apache.polaris.core.entity.PolarisEntityConstants;
3433
import org.apache.polaris.core.entity.PrincipalEntity;
@@ -186,9 +185,6 @@ private PrincipalSecretsResult bootstrapServiceAndCreatePolarisPrincipalForRealm
186185
BasePersistence metaStore = sessionSupplierMap.get(realmContext.getRealmIdentifier()).get();
187186
PolarisCallContext polarisContext =
188187
new PolarisCallContext(realmContext, metaStore, diagServices);
189-
if (CallContext.getCurrentContext() == null) {
190-
CallContext.setCurrentContext(polarisContext);
191-
}
192188

193189
Optional<PrincipalEntity> preliminaryRootPrincipal =
194190
metaStoreManager.findRootPrincipal(polarisContext);
@@ -224,9 +220,6 @@ private void checkPolarisServiceBootstrappedForRealm(RealmContext realmContext)
224220
BasePersistence metaStore = sessionSupplierMap.get(realmContext.getRealmIdentifier()).get();
225221
PolarisCallContext polarisContext =
226222
new PolarisCallContext(realmContext, metaStore, diagServices);
227-
if (CallContext.getCurrentContext() == null) {
228-
CallContext.setCurrentContext(polarisContext);
229-
}
230223

231224
Optional<PrincipalEntity> rootPrincipal = metaStoreManager.findRootPrincipal(polarisContext);
232225
if (rootPrincipal.isEmpty()) {

0 commit comments

Comments
 (0)