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

nrg4878 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 f9705a87ed8 HIVE-29587: Cleanup acid table dir after async drop (#6459)
f9705a87ed8 is described below

commit f9705a87ed82adba92eada36e89198fad22de05b
Author: Venu Reddy <[email protected]>
AuthorDate: Thu May 7 01:15:40 2026 +0530

    HIVE-29587: Cleanup acid table dir after async drop (#6459)
    
    * HIVE-29587: Cleanup acid table dir after async drop
    * Rework for comments
---
 .../hadoop/hive/ql/ddl/database/drop/DropDatabaseDesc.java |  2 +-
 .../hive/ql/ddl/database/drop/DropDatabaseOperation.java   |  2 +-
 ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java   |  2 +-
 .../hive/ql/txn/compactor/handler/CompactionCleaner.java   |  2 +-
 .../src/gen/thrift/gen-cpp/hive_metastore_types.cpp        |  8 +++++---
 .../src/gen/thrift/gen-cpp/hive_metastore_types.h          |  3 ++-
 .../apache/hadoop/hive/metastore/api/CompactionType.java   |  5 ++++-
 .../src/gen/thrift/gen-php/metastore/CompactionType.php    |  3 +++
 .../src/gen/thrift/gen-py/hive_metastore/ttypes.py         |  3 +++
 .../src/gen/thrift/gen-rb/hive_metastore_types.rb          |  5 +++--
 .../metastore-common/src/main/thrift/hive_metastore.thrift |  1 +
 .../apache/hadoop/hive/metastore/AcidEventListener.java    |  3 ++-
 .../hadoop/hive/metastore/handler/DropDatabaseHandler.java |  4 ----
 .../hadoop/hive/metastore/handler/DropTableHandler.java    |  8 +++++++-
 .../org/apache/hadoop/hive/metastore/txn/TxnStore.java     |  1 +
 .../org/apache/hadoop/hive/metastore/txn/TxnUtils.java     |  4 ++++
 .../hadoop/hive/metastore/txn/entities/CompactionInfo.java | 11 ++---------
 .../txn/jdbc/functions/CleanupRecordsFunction.java         | 14 +++++++++-----
 .../metastore/txn/jdbc/functions/MarkCleanedFunction.java  |  2 +-
 19 files changed, 51 insertions(+), 32 deletions(-)

diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseDesc.java 
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseDesc.java
index 5dab0ab5da3..be5e21a9ba8 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseDesc.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseDesc.java
@@ -68,7 +68,7 @@ public boolean getIfExists() {
     return ifExists;
   }
 
-  public boolean isCasdade() {
+  public boolean isCascade() {
     return cascade;
   }
 
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseOperation.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseOperation.java
index 3f3708c8db4..b544b7b4a24 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseOperation.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/database/drop/DropDatabaseOperation.java
@@ -57,7 +57,7 @@ public int execute() throws HiveException {
         ProactiveEviction.evict(context.getConf(), 
llapEvictRequestBuilder.build());
       }
       // Unregister the functions as well
-      if (desc.isCasdade()) {
+      if (desc.isCascade()) {
         FunctionRegistry.unregisterPermanentFunctions(dbName); // TODO 
catalog. add catalog for unregistering functions. Depend on HIVE-29282
       }
     } catch (NoSuchObjectException ex) {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java 
b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
index 9beeb20f1c2..cd33896807b 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/metadata/Hive.java
@@ -750,7 +750,7 @@ public void dropDatabase(DropDatabaseDesc desc)
     req.setName(desc.getDatabaseName());
     req.setIgnoreUnknownDb(desc.getIfExists());
     req.setDeleteData(desc.isDeleteData());
-    req.setCascade(desc.isCasdade());
+    req.setCascade(desc.isCascade());
     req.setSoftDelete(isSoftDelete);
     req.setTxnId(txnId);
     
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 b906432510f..2a593e4927f 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,7 +198,7 @@ private void cleanUsingLocation(CompactionInfo ci, String 
path, boolean requires
       deleted = fsRemover.clean(getCleaningRequestBasedOnLocation(ci, path));
     }
     if (!deleted.isEmpty()) {
-      txnHandler.markCleaned(ci.asSoftDeleted());
+      txnHandler.markCleaned(ci);
     } else {
       txnHandler.clearCleanerStart(ci);
     }
diff --git 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
index 4d827d63ad2..cac4a842147 100644
--- 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-cpp/hive_metastore_types.cpp
@@ -241,16 +241,18 @@ int _kCompactionTypeValues[] = {
   CompactionType::MAJOR,
   CompactionType::REBALANCE,
   CompactionType::ABORT_TXN_CLEANUP,
-  CompactionType::SMART_OPTIMIZE
+  CompactionType::SMART_OPTIMIZE,
+  CompactionType::DEFERRED_CLEANUP
 };
 const char* _kCompactionTypeNames[] = {
   "MINOR",
   "MAJOR",
   "REBALANCE",
   "ABORT_TXN_CLEANUP",
-  "SMART_OPTIMIZE"
+  "SMART_OPTIMIZE",
+  "DEFERRED_CLEANUP"
 };
-const std::map<int, const char*> 
_CompactionType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(5, 
_kCompactionTypeValues, _kCompactionTypeNames), 
::apache::thrift::TEnumIterator(-1, nullptr, nullptr));
+const std::map<int, const char*> 
_CompactionType_VALUES_TO_NAMES(::apache::thrift::TEnumIterator(6, 
_kCompactionTypeValues, _kCompactionTypeNames), 
::apache::thrift::TEnumIterator(-1, nullptr, nullptr));
 
 std::ostream& operator<<(std::ostream& out, const CompactionType::type& val) {
   std::map<int, const char*>::const_iterator it = 
_CompactionType_VALUES_TO_NAMES.find(val);
diff --git 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-cpp/hive_metastore_types.h
 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-cpp/hive_metastore_types.h
index fde2a96483a..02f6720de00 100644
--- 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-cpp/hive_metastore_types.h
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-cpp/hive_metastore_types.h
@@ -129,7 +129,8 @@ struct CompactionType {
     MAJOR = 2,
     REBALANCE = 3,
     ABORT_TXN_CLEANUP = 4,
-    SMART_OPTIMIZE = 5
+    SMART_OPTIMIZE = 5,
+    DEFERRED_CLEANUP = 6
   };
 };
 
diff --git 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/CompactionType.java
 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/CompactionType.java
index 3394aca64e0..a64074e96c1 100644
--- 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/CompactionType.java
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/CompactionType.java
@@ -13,7 +13,8 @@ public enum CompactionType implements org.apache.thrift.TEnum 
{
   MAJOR(2),
   REBALANCE(3),
   ABORT_TXN_CLEANUP(4),
-  SMART_OPTIMIZE(5);
+  SMART_OPTIMIZE(5),
+  DEFERRED_CLEANUP(6);
 
   private final int value;
 
@@ -45,6 +46,8 @@ public static CompactionType findByValue(int value) {
         return ABORT_TXN_CLEANUP;
       case 5:
         return SMART_OPTIMIZE;
+      case 6:
+        return DEFERRED_CLEANUP;
       default:
         return null;
     }
diff --git 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/CompactionType.php
 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/CompactionType.php
index 45982da0e8b..4cf4d405fa8 100644
--- 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/CompactionType.php
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-php/metastore/CompactionType.php
@@ -28,12 +28,15 @@ final class CompactionType
 
     const SMART_OPTIMIZE = 5;
 
+    const DEFERRED_CLEANUP = 6;
+
     static public $__names = array(
         1 => 'MINOR',
         2 => 'MAJOR',
         3 => 'REBALANCE',
         4 => 'ABORT_TXN_CLEANUP',
         5 => 'SMART_OPTIMIZE',
+        6 => 'DEFERRED_CLEANUP',
     );
 }
 
diff --git 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/ttypes.py
 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/ttypes.py
index 14f8b05ccbf..ee7b3f22c34 100644
--- 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/ttypes.py
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-py/hive_metastore/ttypes.py
@@ -158,6 +158,7 @@ class CompactionType(object):
     REBALANCE = 3
     ABORT_TXN_CLEANUP = 4
     SMART_OPTIMIZE = 5
+    DEFERRED_CLEANUP = 6
 
     _VALUES_TO_NAMES = {
         1: "MINOR",
@@ -165,6 +166,7 @@ class CompactionType(object):
         3: "REBALANCE",
         4: "ABORT_TXN_CLEANUP",
         5: "SMART_OPTIMIZE",
+        6: "DEFERRED_CLEANUP",
     }
 
     _NAMES_TO_VALUES = {
@@ -173,6 +175,7 @@ class CompactionType(object):
         "REBALANCE": 3,
         "ABORT_TXN_CLEANUP": 4,
         "SMART_OPTIMIZE": 5,
+        "DEFERRED_CLEANUP": 6,
     }
 
 
diff --git 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_types.rb
 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_types.rb
index 90480b9c978..3905ff02a88 100644
--- 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_types.rb
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-rb/hive_metastore_types.rb
@@ -73,8 +73,9 @@ module CompactionType
   REBALANCE = 3
   ABORT_TXN_CLEANUP = 4
   SMART_OPTIMIZE = 5
-  VALUE_MAP = {1 => "MINOR", 2 => "MAJOR", 3 => "REBALANCE", 4 => 
"ABORT_TXN_CLEANUP", 5 => "SMART_OPTIMIZE"}
-  VALID_VALUES = Set.new([MINOR, MAJOR, REBALANCE, ABORT_TXN_CLEANUP, 
SMART_OPTIMIZE]).freeze
+  DEFERRED_CLEANUP = 6
+  VALUE_MAP = {1 => "MINOR", 2 => "MAJOR", 3 => "REBALANCE", 4 => 
"ABORT_TXN_CLEANUP", 5 => "SMART_OPTIMIZE", 6 => "DEFERRED_CLEANUP"}
+  VALID_VALUES = Set.new([MINOR, MAJOR, REBALANCE, ABORT_TXN_CLEANUP, 
SMART_OPTIMIZE, DEFERRED_CLEANUP]).freeze
 end
 
 module GrantRevokeType
diff --git 
a/standalone-metastore/metastore-common/src/main/thrift/hive_metastore.thrift 
b/standalone-metastore/metastore-common/src/main/thrift/hive_metastore.thrift
index ec9246a32d3..14785a6e9b4 100644
--- 
a/standalone-metastore/metastore-common/src/main/thrift/hive_metastore.thrift
+++ 
b/standalone-metastore/metastore-common/src/main/thrift/hive_metastore.thrift
@@ -220,6 +220,7 @@ enum CompactionType {
     REBALANCE = 3,
     ABORT_TXN_CLEANUP = 4,
     SMART_OPTIMIZE = 5,
+    DEFERRED_CLEANUP = 6,
 }
 
 enum GrantRevokeType {
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/AcidEventListener.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/AcidEventListener.java
index 3b5eb0db028..d8f51ad3ce5 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/AcidEventListener.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/AcidEventListener.java
@@ -88,7 +88,8 @@ public void onDropTable(DropTableEvent tableEvent) throws 
MetaException {
         
         if (currentTxn > 0) {
           try {
-            CompactionRequest rqst = new CompactionRequest(table.getDbName(), 
table.getTableName(), CompactionType.MAJOR);
+            CompactionRequest rqst = new CompactionRequest(table.getDbName(), 
table.getTableName(),
+                CompactionType.DEFERRED_CLEANUP);
             
rqst.setRunas(TxnUtils.findUserToRunAs(table.getSd().getLocation(), table, 
conf));
             rqst.putToProperties("location", table.getSd().getLocation());
             rqst.putToProperties("ifPurge", 
Boolean.toString(isMustPurge(tableEvent.getEnvironmentContext(), table)));
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/DropDatabaseHandler.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/DropDatabaseHandler.java
index bc6e9b95320..1a980512160 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/DropDatabaseHandler.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/DropDatabaseHandler.java
@@ -28,7 +28,6 @@
 import java.util.concurrent.atomic.AtomicReference;
 
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.common.repl.ReplConst;
 import org.apache.hadoop.hive.metastore.Batchable;
 import org.apache.hadoop.hive.metastore.HMSHandler;
 import org.apache.hadoop.hive.metastore.IHMSHandler;
@@ -137,9 +136,6 @@ public DropDatabaseResult execute() throws TException, 
IOException {
         if (isSoftDelete) {
           context = new EnvironmentContext();
           context.putToProperties(hive_metastoreConstants.TXN_ID, 
String.valueOf(request.getTxnId()));
-          if (ReplChangeManager.isSourceOfReplication(db)) {
-            context.putToProperties(ReplConst.SOURCE_OF_REPLICATION, 
Boolean.TRUE.toString());
-          }
           request.setDeleteManagedDir(false);
         }
         DropTableRequest dropRequest = new DropTableRequest(name, 
table.getTableName());
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/DropTableHandler.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/DropTableHandler.java
index bc78b0e6d06..a655bf12cec 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/DropTableHandler.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/handler/DropTableHandler.java
@@ -29,6 +29,7 @@
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hive.common.TableName;
+import org.apache.hadoop.hive.common.repl.ReplConst;
 import org.apache.hadoop.hive.metastore.HMSHandler;
 import org.apache.hadoop.hive.metastore.IHMSHandler;
 import org.apache.hadoop.hive.metastore.MetaStoreListenerNotifier;
@@ -37,6 +38,7 @@
 import org.apache.hadoop.hive.metastore.Warehouse;
 import org.apache.hadoop.hive.metastore.api.Database;
 import org.apache.hadoop.hive.metastore.api.DropTableRequest;
+import org.apache.hadoop.hive.metastore.api.EnvironmentContext;
 import org.apache.hadoop.hive.metastore.api.GetTableRequest;
 import org.apache.hadoop.hive.metastore.api.MetaException;
 import org.apache.hadoop.hive.metastore.api.NoSuchObjectException;
@@ -88,7 +90,11 @@ public DropTableResult execute() throws TException {
         throw new MetaException("Drop table in REMOTE database " + 
db.getName() + " is not allowed");
       }
       isReplicated = isDbReplicationTarget(db);
-
+      EnvironmentContext context = request.getEnvContext();
+      if (!request.isDeleteData() && context != null && 
ReplChangeManager.isSourceOfReplication(db)) {
+        // Needed when the table data is asynchronously removed(soft delete)
+        context.putToProperties(ReplConst.SOURCE_OF_REPLICATION, 
Boolean.TRUE.toString());
+      }
       checkInterrupted();
       // Check if table is part of a materialized view.
       // If it is, it cannot be dropped.
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnStore.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnStore.java
index 138acedc854..22e6c279fc8 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnStore.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnStore.java
@@ -135,6 +135,7 @@ enum MUTEX_KEY {
   char REBALANCE_TYPE = 'r';
   char ABORT_TXN_CLEANUP_TYPE = 'c';
   char SMART_OPTIMIZE_TYPE = '*';
+  char DEFERRED_CLEANUP = 'd';
 
   String[] COMPACTION_STATES = new String[] {INITIATED_RESPONSE, 
WORKING_RESPONSE, CLEANING_RESPONSE, FAILED_RESPONSE,
       SUCCEEDED_RESPONSE, DID_NOT_INITIATE_RESPONSE, REFUSED_RESPONSE };
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
index 525d6654a27..aa613aa8192 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/TxnUtils.java
@@ -612,6 +612,8 @@ public static CompactionType 
dbCompactionType2ThriftType(char dbValue) throws SQ
         return CompactionType.ABORT_TXN_CLEANUP;
       case TxnStore.SMART_OPTIMIZE_TYPE:
         return CompactionType.SMART_OPTIMIZE;
+      case TxnStore.DEFERRED_CLEANUP:
+        return CompactionType.DEFERRED_CLEANUP;
       default:
         throw new SQLException("Unexpected compaction type " + dbValue);
     }
@@ -629,6 +631,8 @@ public static Character 
thriftCompactionType2DbType(CompactionType ct) throws Me
         return TxnStore.ABORT_TXN_CLEANUP_TYPE;
       case SMART_OPTIMIZE:
         return TxnStore.SMART_OPTIMIZE_TYPE;
+      case DEFERRED_CLEANUP:
+        return TxnStore.DEFERRED_CLEANUP;
       default:
         throw new MetaException("Unexpected compaction type " + ct);
     }
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 9c4c8a76857..a56b0a98ed9 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
@@ -88,7 +88,6 @@ 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;
@@ -192,7 +191,6 @@ public String toString() {
         .append("numberOfBuckets", numberOfBuckets)
         .append("orderByClause", orderByClause)
         .append("minOpenWriteTxnId", minOpenWriteTxnId)
-        .append("softDelete", softDelete)
         .build();
   }
 
@@ -372,13 +370,8 @@ public boolean isAbortedTxnCleanup() {
     return type == CompactionType.ABORT_TXN_CLEANUP;
   }
 
-  public CompactionInfo asSoftDeleted() {
-    this.softDelete = true;
-    return this;
-  }
-
-  public boolean isSoftDelete() {
-    return softDelete;
+  public boolean isDeferredCleanup() {
+    return CompactionType.DEFERRED_CLEANUP == type;
   }
 
   public boolean isSourceOfReplication() {
diff --git 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/functions/CleanupRecordsFunction.java
 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/functions/CleanupRecordsFunction.java
index 5a6696158a7..5d0d6f584f1 100644
--- 
a/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/functions/CleanupRecordsFunction.java
+++ 
b/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/txn/jdbc/functions/CleanupRecordsFunction.java
@@ -25,6 +25,7 @@
 import org.apache.hadoop.hive.metastore.api.MetaException;
 import org.apache.hadoop.hive.metastore.api.Partition;
 import org.apache.hadoop.hive.metastore.api.Table;
+import org.apache.hadoop.hive.metastore.txn.TxnStore;
 import org.apache.hadoop.hive.metastore.txn.jdbc.MultiDataSourceJdbcResource;
 import org.apache.hadoop.hive.metastore.txn.jdbc.TransactionalFunction;
 import org.slf4j.Logger;
@@ -66,7 +67,8 @@ public class CleanupRecordsFunction implements 
TransactionalFunction<Void> {
                 "\"CQ_DATABASE\" = :dbName AND " +
                 "(\"CQ_TABLE\" = :tableName OR :tableName IS NULL) AND " +
                 "(\"CQ_PARTITION\" = :partName OR :partName IS NULL) AND " +
-                "(\"CQ_TXN_ID\" != :txnId OR :txnId IS NULL)");
+                "(\"CQ_TXN_ID\" != :txnId OR :txnId IS NULL) AND " +
+                "(\"CQ_TYPE\" != :cType)");
         put((hiveObjectType, keepTxnToWriteIdMetaData) -> 
HIVE_OBJECT_TYPES.contains(hiveObjectType),
             "DELETE FROM \"COMPLETED_COMPACTIONS\" WHERE " +
                 "\"CC_DATABASE\" = :dbName AND " +
@@ -112,7 +114,6 @@ public CleanupRecordsFunction(HiveObjectType type, Database 
db, Table table, Ite
   public Void execute(MultiDataSourceJdbcResource jdbcResource) throws 
MetaException {
     // cleanup should be done only for objects belonging to default catalog
     List<MapSqlParameterSource> paramSources = new ArrayList<>();
-
     switch (type) {
       case DATABASE: {
         if (!defaultCatalog.equals(db.getCatalogName())) {
@@ -124,7 +125,8 @@ public Void execute(MultiDataSourceJdbcResource 
jdbcResource) throws MetaExcepti
             .addValue("dbName", db.getName().toLowerCase())
             .addValue("tableName", null, Types.VARCHAR)
             .addValue("partName", null, Types.VARCHAR)
-            .addValue("txnId", txnId, Types.BIGINT));
+            .addValue("txnId", txnId, Types.BIGINT)
+            .addValue("cType", Character.toString(TxnStore.DEFERRED_CLEANUP), 
Types.CHAR));
         break;
       }
       case TABLE: {
@@ -137,7 +139,8 @@ public Void execute(MultiDataSourceJdbcResource 
jdbcResource) throws MetaExcepti
             .addValue("dbName", table.getDbName().toLowerCase())
             .addValue("tableName", table.getTableName().toLowerCase(), 
Types.VARCHAR)
             .addValue("partName", null, Types.VARCHAR)
-            .addValue("txnId", null, Types.BIGINT));
+            .addValue("txnId", null, Types.BIGINT)
+            .addValue("cType", Character.toString(TxnStore.DEFERRED_CLEANUP), 
Types.CHAR));
         break;
       }
       case PARTITION: {
@@ -155,7 +158,8 @@ public Void execute(MultiDataSourceJdbcResource 
jdbcResource) throws MetaExcepti
               .addValue("dbName", table.getDbName().toLowerCase())
               .addValue("tableName", table.getTableName().toLowerCase(), 
Types.VARCHAR)
               .addValue("partName", Warehouse.makePartName(partCols, 
partVals), Types.VARCHAR)
-              .addValue("txnId", null, Types.BIGINT));
+              .addValue("txnId", null, Types.BIGINT)
+              .addValue("cType", 
Character.toString(TxnStore.DEFERRED_CLEANUP), Types.CHAR));
         }
       }
     }
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 27b67d1feae..5c07e654911 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,7 +50,7 @@ public MarkCleanedFunction(CompactionInfo info) {
   public Void execute(MultiDataSourceJdbcResource jdbcResource) throws 
MetaException {
     NamedParameterJdbcTemplate jdbcTemplate = jdbcResource.getJdbcTemplate();
     MapSqlParameterSource param;
-    if (info.isSoftDelete()) {
+    if (info.isDeferredCleanup()) {
       // Remove compaction queue record and return
       removeCompactionAndAbortRetryEntries(info, jdbcTemplate);
       return null;

Reply via email to