From c9b3557590326020453457bf1570f9c73e437621 Mon Sep 17 00:00:00 2001 From: Christopher Lambert <1204398+XN137@users.noreply.github.com> Date: Mon, 18 Aug 2025 09:58:25 +0200 Subject: [PATCH] Remove BaseMetaStoreManager.serializeProperties similar to 7af85be7f45c933a377314a669e2a16633c93532 we should prefer the existing helper methods on the entity instead --- .../AtomicOperationMetaStoreManager.java | 26 +++----------- .../persistence/BaseMetaStoreManager.java | 35 ------------------- .../TransactionalMetaStoreManagerImpl.java | 26 +++----------- 3 files changed, 10 insertions(+), 77 deletions(-) diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java index c52e9273f1..8af4c654dd 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/AtomicOperationMetaStoreManager.java @@ -252,7 +252,7 @@ private void dropEntity( // if it is a principal, we also need to drop the secrets if (entity.getType() == PolarisEntityType.PRINCIPAL) { // get internal properties - Map properties = this.deserializeProperties(entity.getInternalProperties()); + Map properties = entity.getInternalPropertiesAsMap(); // get client_id String clientId = properties.get(PolarisEntityConstants.getClientIdPropertyName()); @@ -432,7 +432,7 @@ private void revokeGrantRecord( // validate input callCtx.getDiagServices().checkNotNull(catalog, "unexpected_null_catalog"); - Map internalProp = getInternalPropertyMap(catalog); + Map internalProp = catalog.getInternalPropertiesAsMap(); String integrationIdentifierOrId = internalProp.get(PolarisEntityConstants.getStorageIntegrationIdentifierPropertyName()); String storageConfigInfoStr = @@ -751,8 +751,7 @@ private void revokeGrantRecord( principal); // get internal properties - Map properties = - this.deserializeProperties(refreshPrincipal.getInternalProperties()); + Map properties = refreshPrincipal.getInternalPropertiesAsMap(); // get client_id String clientId = properties.get(PolarisEntityConstants.getClientIdPropertyName()); @@ -798,14 +797,14 @@ private void revokeGrantRecord( .generateNewPrincipalSecrets(callCtx, principal.getName(), principal.getId()); // generate properties - Map internalProperties = getInternalPropertyMap(principal); + Map internalProperties = principal.getInternalPropertiesAsMap(); internalProperties.put( PolarisEntityConstants.getClientIdPropertyName(), principalSecrets.getPrincipalClientId()); // remember client id PolarisBaseEntity updatedPrincipal = new PolarisBaseEntity.Builder(principal) - .internalProperties(this.serializeProperties(internalProperties)) + .internalPropertiesAsMap(internalProperties) .build(); // now create and persist new catalog entity EntityResult lowLevelResult = this.persistNewEntity(callCtx, ms, updatedPrincipal); @@ -1616,21 +1615,6 @@ private void revokeGrantRecord( } } - /** - * Get the internal property map for an entity - * - * @param entity the target entity - * @return a map of string representing the internal properties - */ - public Map getInternalPropertyMap(@Nonnull PolarisBaseEntity entity) { - String internalPropStr = entity.getInternalProperties(); - Map res = new HashMap<>(); - if (internalPropStr == null) { - return res; - } - return deserializeProperties(internalPropStr); - } - /** {@inheritDoc} */ @Override public @Nonnull ResolvedEntityResult loadResolvedEntityById( diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java index a56eeda3dc..6fb8448d14 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/BaseMetaStoreManager.java @@ -18,9 +18,6 @@ */ package org.apache.polaris.core.persistence; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.core.type.TypeReference; -import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.Nonnull; import java.util.Map; import org.apache.polaris.core.PolarisCallContext; @@ -34,8 +31,6 @@ /** Shared basic PolarisMetaStoreManager logic for transactional and non-transactional impls. */ public abstract class BaseMetaStoreManager implements PolarisMetaStoreManager { - /** mapper, allows to serialize/deserialize properties to/from JSON */ - private static final ObjectMapper MAPPER = new ObjectMapper(); public static PolarisStorageConfigurationInfo extractStorageConfiguration( @Nonnull PolarisDiagnostics diagnostics, PolarisBaseEntity reloadedEntity) { @@ -52,36 +47,6 @@ public static PolarisStorageConfigurationInfo extractStorageConfiguration( return PolarisStorageConfigurationInfo.deserialize(storageConfigInfoStr); } - /** - * Given the internal property as a map of key/value pairs, serialize it to a String - * - * @param properties a map of key/value pairs - * @return a String, the JSON representation of the map - */ - public String serializeProperties(Map properties) { - try { - // Deserialize the JSON string to a Map - return MAPPER.writeValueAsString(properties); - } catch (JsonProcessingException ex) { - throw new RuntimeException("serializeProperties failed: " + ex.getMessage(), ex); - } - } - - /** - * Given the serialized properties, deserialize those to a {@code Map} - * - * @param properties a JSON string representing the set of properties - * @return a Map of string - */ - public Map deserializeProperties(String properties) { - try { - // Deserialize the JSON string to a Map - return MAPPER.readValue(properties, new TypeReference<>() {}); - } catch (JsonProcessingException ex) { - throw new RuntimeException("deserializeProperties failed: " + ex.getMessage(), ex); - } - } - /** * Performs basic validation of expected invariants on a new entity, then returns the entity with * fields filled out for which the persistence layer is responsible. diff --git a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java index 18484a5516..7ea948457d 100644 --- a/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java +++ b/polaris-core/src/main/java/org/apache/polaris/core/persistence/transactional/TransactionalMetaStoreManagerImpl.java @@ -237,7 +237,7 @@ private void dropEntity( // if it is a principal, we also need to drop the secrets if (entity.getType() == PolarisEntityType.PRINCIPAL) { // get internal properties - Map properties = this.deserializeProperties(entity.getInternalProperties()); + Map properties = entity.getInternalPropertiesAsMap(); // get client_id String clientId = properties.get(PolarisEntityConstants.getClientIdPropertyName()); @@ -763,8 +763,7 @@ private void bootstrapPolarisService( principal); // get internal properties - Map properties = - this.deserializeProperties(refreshPrincipal.getInternalProperties()); + Map properties = refreshPrincipal.getInternalPropertiesAsMap(); // get client_id String clientId = properties.get(PolarisEntityConstants.getClientIdPropertyName()); @@ -821,14 +820,14 @@ private void bootstrapPolarisService( ms.generateNewPrincipalSecretsInCurrentTxn(callCtx, principal.getName(), principal.getId()); // generate properties - Map internalProperties = getInternalPropertyMap(principal); + Map internalProperties = principal.getInternalPropertiesAsMap(); internalProperties.put( PolarisEntityConstants.getClientIdPropertyName(), principalSecrets.getPrincipalClientId()); // remember client id PolarisBaseEntity updatedPrincipal = new PolarisBaseEntity.Builder(principal) - .internalProperties(this.serializeProperties(internalProperties)) + .internalPropertiesAsMap(internalProperties) .build(); // now create and persist new catalog entity @@ -955,7 +954,7 @@ private void bootstrapPolarisService( // get metastore we should be using TransactionalPersistence ms = ((TransactionalPersistence) callCtx.getMetaStore()); - Map internalProp = getInternalPropertyMap(catalog); + Map internalProp = catalog.getInternalPropertiesAsMap(); String integrationIdentifierOrId = internalProp.get(PolarisEntityConstants.getStorageIntegrationIdentifierPropertyName()); String storageConfigInfoStr = @@ -2062,21 +2061,6 @@ private PolarisEntityResolver resolveSecurableToRoleGrant( } } - /** - * Get the internal property map for an entity - * - * @param entity the target entity - * @return a map of string representing the internal properties - */ - public Map getInternalPropertyMap(@Nonnull PolarisBaseEntity entity) { - String internalPropStr = entity.getInternalProperties(); - Map res = new HashMap<>(); - if (internalPropStr == null) { - return res; - } - return deserializeProperties(internalPropStr); - } - /** {@link #loadResolvedEntityById(PolarisCallContext, long, long, PolarisEntityType)} */ private @Nonnull ResolvedEntityResult loadResolvedEntityById( @Nonnull PolarisCallContext callCtx,