This is an automated email from the ASF dual-hosted git repository.

dkuzmenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new d02e3bb2805 HIVE-29522: Prevent cleaner from creating 
COMPLETED_COMPACTIONS entries for soft-deleted ACID tables (#6399)
d02e3bb2805 is described below

commit d02e3bb2805c09689bd46222cff63ba99929f69f
Author: Venu Reddy <[email protected]>
AuthorDate: Fri Apr 17 20:23:35 2026 +0530

    HIVE-29522: Prevent cleaner from creating COMPLETED_COMPACTIONS entries for 
soft-deleted ACID tables (#6399)
---
 .../hive/ql/txn/compactor/handler/CompactionCleaner.java       |  1 +
 .../hadoop/hive/metastore/txn/entities/CompactionInfo.java     | 10 ++++++++++
 .../hive/metastore/txn/jdbc/functions/MarkCleanedFunction.java |  6 ++++++
 3 files changed, 17 insertions(+)

diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/handler/CompactionCleaner.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/handler/CompactionCleaner.java
index fd49bbb90f1..5e13f45bcf2 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/handler/CompactionCleaner.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/txn/compactor/handler/CompactionCleaner.java
@@ -198,6 +198,7 @@ private void cleanUsingLocation(CompactionInfo ci, String 
path, boolean requires
       deleted = fsRemover.clean(getCleaningRequestBasedOnLocation(ci, path));
     }
     if (!deleted.isEmpty()) {
+      ci.setSoftDelete(true);
       txnHandler.markCleaned(ci);
     } else {
       txnHandler.clearCleanerStart(ci);
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/entities/CompactionInfo.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/entities/CompactionInfo.java
index e1c1f492bab..5c392477c6a 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/entities/CompactionInfo.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/entities/CompactionInfo.java
@@ -87,6 +87,7 @@ public class CompactionInfo implements 
Comparable<CompactionInfo> {
   private String fullPartitionName = null;
   private String fullTableName = null;
   private StringableMap propertiesMap;
+  private boolean softDelete;
 
   public CompactionInfo(String dbname, String tableName, String partName, 
CompactionType type) {
     this.dbname = dbname;
@@ -190,6 +191,7 @@ public String toString() {
         .append("numberOfBuckets", numberOfBuckets)
         .append("orderByClause", orderByClause)
         .append("minOpenWriteTxnId", minOpenWriteTxnId)
+        .append("softDelete", softDelete)
         .build();
   }
 
@@ -368,4 +370,12 @@ public void setWriteIds(boolean hasUncompactedAborts, 
Set<Long> writeIds) {
   public boolean isAbortedTxnCleanup() {
     return type == CompactionType.ABORT_TXN_CLEANUP;
   }
+
+  public void setSoftDelete(boolean softDelete) {
+    this.softDelete = softDelete;
+  }
+
+  public boolean isSoftDelete() {
+    return softDelete;
+  }
 }
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/functions/MarkCleanedFunction.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/functions/MarkCleanedFunction.java
index 2bd96f53a1d..27b67d1feae 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/functions/MarkCleanedFunction.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/functions/MarkCleanedFunction.java
@@ -50,6 +50,12 @@ public MarkCleanedFunction(CompactionInfo info) {
   public Void execute(MultiDataSourceJdbcResource jdbcResource) throws 
MetaException {
     NamedParameterJdbcTemplate jdbcTemplate = jdbcResource.getJdbcTemplate();
     MapSqlParameterSource param;
+    if (info.isSoftDelete()) {
+      // Remove compaction queue record and return
+      removeCompactionAndAbortRetryEntries(info, jdbcTemplate);
+      return null;
+    }
+
     if (!info.isAbortedTxnCleanup()) {
       param = new MapSqlParameterSource()
           .addValue("id", info.id)

Reply via email to