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() { }