This is an automated email from the ASF dual-hosted git repository. lzljs3620320 pushed a commit to branch release-0.8 in repository https://gitbox.apache.org/repos/asf/paimon.git
commit 688d12adfc9c4d91d9be5edc761ad59e47ceb664 Author: Jingsong <[email protected]> AuthorDate: Tue May 14 17:02:51 2024 +0800 [core] Avoid potential NPE in FileStoreCommitImpl and TagAutoCreation --- paimon-core/src/main/java/org/apache/paimon/Snapshot.java | 1 + .../java/org/apache/paimon/operation/FileStoreCommitImpl.java | 5 ++++- .../src/main/java/org/apache/paimon/tag/TagAutoCreation.java | 8 ++++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/paimon-core/src/main/java/org/apache/paimon/Snapshot.java b/paimon-core/src/main/java/org/apache/paimon/Snapshot.java index 20d414092..6c2656d39 100644 --- a/paimon-core/src/main/java/org/apache/paimon/Snapshot.java +++ b/paimon-core/src/main/java/org/apache/paimon/Snapshot.java @@ -316,6 +316,7 @@ public class Snapshot { } @JsonGetter(FIELD_LOG_OFFSETS) + @Nullable public Map<Integer, Long> logOffsets() { return logOffsets; } diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommitImpl.java b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommitImpl.java index be5255a36..dab336b81 100644 --- a/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommitImpl.java +++ b/paimon-core/src/main/java/org/apache/paimon/operation/FileStoreCommitImpl.java @@ -793,7 +793,10 @@ public class FileStoreCommitImpl implements FileStoreCommit { oldMetas.addAll(previousManifests); // read the last snapshot to complete the bucket's offsets when logOffsets does not // contain all buckets - latestSnapshot.logOffsets().forEach(logOffsets::putIfAbsent); + Map<Integer, Long> latestLogOffsets = latestSnapshot.logOffsets(); + if (latestLogOffsets != null) { + latestLogOffsets.forEach(logOffsets::putIfAbsent); + } Long latestWatermark = latestSnapshot.watermark(); if (latestWatermark != null) { currentWatermark = diff --git a/paimon-core/src/main/java/org/apache/paimon/tag/TagAutoCreation.java b/paimon-core/src/main/java/org/apache/paimon/tag/TagAutoCreation.java index 60f113761..af7947925 100644 --- a/paimon-core/src/main/java/org/apache/paimon/tag/TagAutoCreation.java +++ b/paimon-core/src/main/java/org/apache/paimon/tag/TagAutoCreation.java @@ -109,10 +109,14 @@ public class TagAutoCreation { return false; } + Long watermark = latestSnapshot.watermark(); + if (watermark == null) { + return false; + } + LocalDateTime snapshotTime = LocalDateTime.ofInstant( - Instant.ofEpochMilli(latestSnapshot.watermark()), - ZoneId.systemDefault()); + Instant.ofEpochMilli(watermark), ZoneId.systemDefault()); return isAfterOrEqual(LocalDateTime.now().minus(idlenessTimeout), snapshotTime); } else if (timeExtractor instanceof ProcessTimeExtractor) {
