diff --git a/core/src/main/java/org/apache/iceberg/BaseMetastoreTableOperations.java b/core/src/main/java/org/apache/iceberg/BaseMetastoreTableOperations.java index 0d4432e860c8..3b8295aa7e9a 100644 --- a/core/src/main/java/org/apache/iceberg/BaseMetastoreTableOperations.java +++ b/core/src/main/java/org/apache/iceberg/BaseMetastoreTableOperations.java @@ -148,8 +148,8 @@ protected void refreshFromMetadataLocation(String newLocation, Predicate io().deleteFile(previousMetadataFile.file())); } } + + private static TableMetadata checkUUID(TableMetadata currentMetadata, TableMetadata newMetadata) { + String newUUID = newMetadata.uuid(); + if (currentMetadata != null && currentMetadata.uuid() != null && newUUID != null) { + Preconditions.checkState(newUUID.equals(currentMetadata.uuid()), + "Table UUID does not match: current=%s != refreshed=%s", currentMetadata.uuid(), newUUID); + } + return newMetadata; + } } diff --git a/core/src/main/java/org/apache/iceberg/util/JsonUtil.java b/core/src/main/java/org/apache/iceberg/util/JsonUtil.java index 976a1cc3933c..9d46584687dc 100644 --- a/core/src/main/java/org/apache/iceberg/util/JsonUtil.java +++ b/core/src/main/java/org/apache/iceberg/util/JsonUtil.java @@ -91,7 +91,10 @@ public static String getStringOrNull(String property, JsonNode node) { return null; } JsonNode pNode = node.get(property); - Preconditions.checkArgument(pNode != null && !pNode.isNull() && pNode.isTextual(), + if (pNode != null && pNode.isNull()) { + return null; + } + Preconditions.checkArgument(pNode != null && pNode.isTextual(), "Cannot parse %s from non-string value: %s", property, pNode); return pNode.asText(); }