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 a832e8a3ad8 HIVE-26666: Filter out compactions by id to minimise 
expense of db operations (Kirti Ruge, reviewed by Denys Kuzmenko, Laszlo Vegh)
a832e8a3ad8 is described below

commit a832e8a3ad88dd367dab8d2e3fcabba5ec51e4cd
Author: rkirtir <111496669+rkir...@users.noreply.github.com>
AuthorDate: Mon Nov 14 16:31:02 2022 +0530

    HIVE-26666: Filter out compactions by id to minimise expense of db 
operations (Kirti Ruge, reviewed by Denys Kuzmenko, Laszlo Vegh)
    
    Closes #3712
---
 .../storage/compact/AlterTableCompactOperation.java  | 20 +++++++++-----------
 .../hive/metastore/api/ShowCompactRequest.java       |  5 +++++
 2 files changed, 14 insertions(+), 11 deletions(-)

diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactOperation.java
 
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactOperation.java
index 7663e312755..2aa1128d0b6 100644
--- 
a/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactOperation.java
+++ 
b/ql/src/java/org/apache/hadoop/hive/ql/ddl/table/storage/compact/AlterTableCompactOperation.java
@@ -31,6 +31,7 @@ import java.util.Map;
 
 import org.apache.hadoop.hive.metastore.api.CompactionResponse;
 import org.apache.hadoop.hive.metastore.api.ShowCompactResponse;
+import org.apache.hadoop.hive.metastore.api.ShowCompactRequest;
 import org.apache.hadoop.hive.metastore.api.ShowCompactResponseElement;
 import org.apache.hadoop.hive.metastore.txn.TxnStore;
 import org.apache.hadoop.hive.ql.ErrorMsg;
@@ -126,16 +127,11 @@ public class AlterTableCompactOperation extends 
DDLOperation<AlterTableCompactDe
         context.getConsole().printInfo("Interrupted while waiting for 
compaction with id=" + resp.getId());
         break;
       }
-
-      //this could be expensive when there are a lot of compactions....
-      //todo: update to search by ID once HIVE-13353 is done
-      ShowCompactResponse allCompactions = context.getDb().showCompactions();
-      for (ShowCompactResponseElement compaction : 
allCompactions.getCompacts()) {
-        if (resp.getId() != compaction.getId()) {
-          continue;
-        }
-
-        switch (compaction.getState()) {
+      ShowCompactRequest request = new ShowCompactRequest(resp.getId());
+      ShowCompactResponse compaction = 
context.getDb().showCompactions(request);
+      if (compaction.getCompactsSize() == 1) {
+        ShowCompactResponseElement comp = compaction.getCompacts().get(0);
+        switch (comp.getState()) {
           case TxnStore.WORKING_RESPONSE:
           case TxnStore.INITIATED_RESPONSE:
             //still working
@@ -145,9 +141,11 @@ public class AlterTableCompactOperation extends 
DDLOperation<AlterTableCompactDe
           default:
             //done
             context.getConsole().printInfo("Compaction with id " + 
resp.getId() + " finished with status: " +
-                compaction.getState());
+                comp.getState());
             break wait;
         }
+      }else {
+        throw new HiveException("No suitable compaction found");
       }
     }
   }
diff --git 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ShowCompactRequest.java
 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ShowCompactRequest.java
index a3d09c3dc8c..271d01eb6e4 100644
--- 
a/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ShowCompactRequest.java
+++ 
b/standalone-metastore/metastore-common/src/gen/thrift/gen-javabean/org/apache/hadoop/hive/metastore/api/ShowCompactRequest.java
@@ -137,6 +137,11 @@ package org.apache.hadoop.hive.metastore.api;
     
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ShowCompactRequest.class,
 metaDataMap);
   }
 
+  public ShowCompactRequest(long id) {
+    this.id = id;
+    setIdIsSet(true);
+  }
+
   public ShowCompactRequest() {
   }
 

Reply via email to