This is an automated email from the ASF dual-hosted git repository.
taowang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/amoro.git
The following commit(s) were added to refs/heads/master by this push:
new 085d66e24 [AMORO-3517]fix:MixedTableMaintainer would never expire a
non-pk base… (#3518)
085d66e24 is described below
commit 085d66e2458216fc7301ed0dbcef1a73cc96bc9d
Author: Nico CHen <[email protected]>
AuthorDate: Wed Apr 16 16:55:39 2025 +0800
[AMORO-3517]fix:MixedTableMaintainer would never expire a non-pk base…
(#3518)
[AMORO-3517]fix:MixedTableMaintainer would never expire a non-pk base table
if it would not been batched written any longer.
---
.../server/optimizing/maintainer/MixedTableMaintainer.java | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git
a/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/maintainer/MixedTableMaintainer.java
b/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/maintainer/MixedTableMaintainer.java
index c36a870da..e95a9507e 100644
---
a/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/maintainer/MixedTableMaintainer.java
+++
b/amoro-ams/src/main/java/org/apache/amoro/server/optimizing/maintainer/MixedTableMaintainer.java
@@ -460,13 +460,22 @@ public class MixedTableMaintainer implements
TableMaintainer {
@Override
protected long mustOlderThan(TableRuntime tableRuntime, long now) {
+ DataExpirationConfig expiringDataConfig =
+ tableRuntime.getTableConfiguration().getExpiringDataConfig();
+ long dataExpiringSnapshotTime =
+ expiringDataConfig.isEnabled()
+ && expiringDataConfig.getBaseOnRule()
+ == DataExpirationConfig.BaseOnRule.LAST_COMMIT_TIME
+ ? fetchLatestNonOptimizedSnapshotTime(table)
+ : Long.MAX_VALUE;
+
return min(
// The snapshots keep time for base store
now - snapshotsKeepTime(tableRuntime),
// The snapshot optimizing plan based should not be expired for
committing
fetchOptimizingPlanSnapshotTime(table, tableRuntime),
// The latest non-optimized snapshot should not be expired for data
expiring
- fetchLatestNonOptimizedSnapshotTime(table),
+ dataExpiringSnapshotTime,
// The latest flink committed snapshot should not be expired for
recovering flink job
fetchLatestFlinkCommittedSnapshotTime(table),
// The latest snapshot contains the optimized sequence should not be
expired for MOR