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 <[email protected]>
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() {
}