This is an automated email from the ASF dual-hosted git repository. tarmstrong pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit 03af0b2c8c4d7a9db2fbcc63b93bcb0348e4d82f Author: Zoltan Borok-Nagy <borokna...@cloudera.com> AuthorDate: Tue Jan 5 13:00:58 2021 +0100 IMPALA-10422: EXPLAIN statements leak ACID transactions and locks Currently EXPLAIN statements might open ACID transactions and create locks on ACID tables. This is not necessary since we won't modify the table. But the real problem is that these transactions and locks are leaked and open forever. They are even getting heartbeated while the coordinator is still running. The solution is to not consume any ACID resources for EXPLAIN statements. Testing: * Added EXPLAIN INSERT OVERWRITE in front of an actual INSERT OVERWRITE in an e2e test Change-Id: I05113b1fd9a3eb2d0dd6cf723df916457f3fbf39 Reviewed-on: http://gerrit.cloudera.org:8080/16923 Reviewed-by: Csaba Ringhofer <csringho...@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenk...@cloudera.com> --- fe/src/main/java/org/apache/impala/service/Frontend.java | 4 ++-- .../workloads/functional-query/queries/QueryTest/acid-insert.test | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/fe/src/main/java/org/apache/impala/service/Frontend.java b/fe/src/main/java/org/apache/impala/service/Frontend.java index 3a71fdf..046295d 100644 --- a/fe/src/main/java/org/apache/impala/service/Frontend.java +++ b/fe/src/main/java/org/apache/impala/service/Frontend.java @@ -1639,8 +1639,8 @@ public class Frontend { return result; } } - if (analysisResult.isInsertStmt() || - analysisResult.isCreateTableAsSelectStmt()) { + if (!analysisResult.isExplainStmt() && + (analysisResult.isInsertStmt() || analysisResult.isCreateTableAsSelectStmt())) { InsertStmt insertStmt = analysisResult.getInsertStmt(); FeTable targetTable = insertStmt.getTargetTable(); if (AcidUtils.isTransactionalTable( diff --git a/testdata/workloads/functional-query/queries/QueryTest/acid-insert.test b/testdata/workloads/functional-query/queries/QueryTest/acid-insert.test index 8665c56..ed9a741 100644 --- a/testdata/workloads/functional-query/queries/QueryTest/acid-insert.test +++ b/testdata/workloads/functional-query/queries/QueryTest/acid-insert.test @@ -25,6 +25,9 @@ select i from insertonly_nopart order by i; INT ==== ---- QUERY +# IMPALA-10422: Run EXPLAIN before INSERT OVERWRITE to check that +# EXPLAIN statements don't leak transactions and locks. +explain insert overwrite insertonly_nopart values (10); insert overwrite insertonly_nopart values (10); ==== ---- QUERY