diff --git a/gobblin-data-management/src/main/java/org/apache/gobblin/data/management/copy/iceberg/IcebergTable.java b/gobblin-data-management/src/main/java/org/apache/gobblin/data/management/copy/iceberg/IcebergTable.java index 5221007cdc..e3ec46aa1e 100644 --- a/gobblin-data-management/src/main/java/org/apache/gobblin/data/management/copy/iceberg/IcebergTable.java +++ b/gobblin-data-management/src/main/java/org/apache/gobblin/data/management/copy/iceberg/IcebergTable.java @@ -234,8 +234,7 @@ protected void registerIcebergTable(TableMetadata srcMetadata, TableMetadata dst * * @param icebergPartitionFilterPredicate the predicate to filter partitions * @return a list of data files that match the partition filter predicate - * @throws TableNotFoundException if error occurred while accessing the table metadata - * @throws RuntimeException if error occurred while reading the manifest file + * @throws IOException if error occurred while accessing the table metadata or reading the manifest file */ public List getPartitionSpecificDataFiles(Predicate icebergPartitionFilterPredicate) throws IOException { @@ -286,7 +285,13 @@ protected void overwritePartition(List dataFiles, String partitionColN if (dataFiles.isEmpty()) { return; } - log.info("~{}~ SnapshotId before overwrite: {}", tableId, accessTableMetadata().currentSnapshot().snapshotId()); + TableMetadata tableMetadata = accessTableMetadata(); + Optional currentSnapshot = Optional.ofNullable(tableMetadata.currentSnapshot()); + if (currentSnapshot.isPresent()) { + log.info("~{}~ SnapshotId before overwrite: {}", tableId, currentSnapshot.get().snapshotId()); + } else { + log.warn("~{}~ No current snapshot found before overwrite", tableId); + } OverwriteFiles overwriteFiles = this.table.newOverwrite(); overwriteFiles.overwriteByRowFilter(Expressions.equal(partitionColName, partitionValue)); dataFiles.forEach(overwriteFiles::addFile);