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

Reply via email to