You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by mi...@apache.org on 2023/05/02 21:32:55 UTC
[impala] 03/03: IMPALA-10585: Only retry SELECT queries
This is an automated email from the ASF dual-hosted git repository.
michaelsmith pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/impala.git
commit f826f7212438604990fa707315195d77b3bf2a5d
Author: Csaba Ringhofer <cs...@cloudera.com>
AuthorDate: Tue May 2 16:17:40 2023 +0200
IMPALA-10585: Only retry SELECT queries
Before this patch if retry_failed_queries=1 then DML queries were
also retried if there were failed backends. This was not handled
correctly in the coordinator and could lead to:
- duplicate rows for external tables
- incorrect transaction handling for Hive ACID tables
Testing is also missing for DMLs + retry_failed_queries.
This is a quick fix that disables retrying non-select statements.
Followup commits can add more sophisticated handling and tests.
Testing:
- manually checked that INSERTs are not retried
Change-Id: I7a0ae7994ad1dc82bfb5989c924c95b66ff81b81
Reviewed-on: http://gerrit.cloudera.org:8080/19830
Reviewed-by: Impala Public Jenkins <im...@cloudera.com>
Tested-by: Michael Smith <mi...@cloudera.com>
---
be/src/runtime/query-driver.cc | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/be/src/runtime/query-driver.cc b/be/src/runtime/query-driver.cc
index 0c9001dca..954ddd085 100644
--- a/be/src/runtime/query-driver.cc
+++ b/be/src/runtime/query-driver.cc
@@ -129,6 +129,12 @@ void QueryDriver::TryQueryRetry(
if (exec_request_->query_options.retry_failed_queries) {
lock_guard<mutex> l(*client_request_state->lock());
+ if (client_request_state->stmt_type() != TStmtType::QUERY) {
+ // Retrying DML queries would be useful but currently it is
+ // buggy / untested (see IMPALA-10585).
+ return;
+ }
+
// Queries can only be retried if no rows for the query have been fetched
// (IMPALA-9225).
if (client_request_state->fetched_rows()) {