diff --git a/docs/layouts/shortcodes/generated/core_configuration.html b/docs/layouts/shortcodes/generated/core_configuration.html
index 6fb2c72650fe..7d6bacccb026 100644
--- a/docs/layouts/shortcodes/generated/core_configuration.html
+++ b/docs/layouts/shortcodes/generated/core_configuration.html
@@ -593,6 +593,12 @@
Duration |
The check interval of partition expiration. |
+
+ partition.expiration-max-num |
+ 100 |
+ Integer |
+ The default deleted num of partition expiration. |
+
partition.expiration-strategy |
values-time |
diff --git a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java
index 765d5a1e32d6..8aebf2f289a0 100644
--- a/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java
+++ b/paimon-common/src/main/java/org/apache/paimon/CoreOptions.java
@@ -809,6 +809,12 @@ public class CoreOptions implements Serializable {
.defaultValue(Duration.ofHours(1))
.withDescription("The check interval of partition expiration.");
+ public static final ConfigOption PARTITION_EXPIRATION_MAX_NUM =
+ key("partition.expiration-max-num")
+ .intType()
+ .defaultValue(100)
+ .withDescription("The default deleted num of partition expiration.");
+
public static final ConfigOption PARTITION_TIMESTAMP_FORMATTER =
key("partition.timestamp-formatter")
.stringType()
@@ -2126,6 +2132,10 @@ public Duration partitionExpireCheckInterval() {
return options.get(PARTITION_EXPIRATION_CHECK_INTERVAL);
}
+ public int partitionExpireMaxNum() {
+ return options.get(PARTITION_EXPIRATION_MAX_NUM);
+ }
+
public PartitionExpireStrategy partitionExpireStrategy() {
return options.get(PARTITION_EXPIRATION_STRATEGY);
}
diff --git a/paimon-core/src/main/java/org/apache/paimon/AbstractFileStore.java b/paimon-core/src/main/java/org/apache/paimon/AbstractFileStore.java
index 1a538ad89e47..54f554aa46d3 100644
--- a/paimon-core/src/main/java/org/apache/paimon/AbstractFileStore.java
+++ b/paimon-core/src/main/java/org/apache/paimon/AbstractFileStore.java
@@ -309,7 +309,8 @@ public PartitionExpire newPartitionExpire(String commitUser) {
newScan(),
newCommit(commitUser),
metastoreClient,
- options.endInputCheckPartitionExpire());
+ options.endInputCheckPartitionExpire(),
+ options.partitionExpireMaxNum());
}
@Override
diff --git a/paimon-core/src/main/java/org/apache/paimon/operation/PartitionExpire.java b/paimon-core/src/main/java/org/apache/paimon/operation/PartitionExpire.java
index 62a9b796476a..d432a37dfd9c 100644
--- a/paimon-core/src/main/java/org/apache/paimon/operation/PartitionExpire.java
+++ b/paimon-core/src/main/java/org/apache/paimon/operation/PartitionExpire.java
@@ -54,7 +54,7 @@ public class PartitionExpire {
private LocalDateTime lastCheck;
private final PartitionExpireStrategy strategy;
private final boolean endInputCheckPartitionExpire;
- private int maxExpires;
+ private int maxExpireNum;
public PartitionExpire(
Duration expirationTime,
@@ -63,7 +63,8 @@ public PartitionExpire(
FileStoreScan scan,
FileStoreCommit commit,
@Nullable MetastoreClient metastoreClient,
- boolean endInputCheckPartitionExpire) {
+ boolean endInputCheckPartitionExpire,
+ int maxExpireNum) {
this.expirationTime = expirationTime;
this.checkInterval = checkInterval;
this.strategy = strategy;
@@ -72,7 +73,7 @@ public PartitionExpire(
this.metastoreClient = metastoreClient;
this.lastCheck = LocalDateTime.now();
this.endInputCheckPartitionExpire = endInputCheckPartitionExpire;
- this.maxExpires = Integer.MAX_VALUE;
+ this.maxExpireNum = maxExpireNum;
}
public PartitionExpire(
@@ -81,8 +82,17 @@ public PartitionExpire(
PartitionExpireStrategy strategy,
FileStoreScan scan,
FileStoreCommit commit,
- @Nullable MetastoreClient metastoreClient) {
- this(expirationTime, checkInterval, strategy, scan, commit, metastoreClient, false);
+ @Nullable MetastoreClient metastoreClient,
+ int maxExpireNum) {
+ this(
+ expirationTime,
+ checkInterval,
+ strategy,
+ scan,
+ commit,
+ metastoreClient,
+ false,
+ maxExpireNum);
}
public PartitionExpire withLock(Lock lock) {
@@ -90,8 +100,8 @@ public PartitionExpire withLock(Lock lock) {
return this;
}
- public PartitionExpire withMaxExpires(int maxExpires) {
- this.maxExpires = maxExpires;
+ public PartitionExpire withMaxExpireNum(int maxExpireNum) {
+ this.maxExpireNum = maxExpireNum;
return this;
}
@@ -145,6 +155,7 @@ private List