This is an automated email from the ASF dual-hosted git repository. tmarshall pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit fa604fb5059307321a174db02469b4f5fb78410f Author: Bharath Vissapragada <bhara...@cloudera.com> AuthorDate: Fri Feb 8 11:29:55 2019 -0800 IMPALA-8177: Log DDL failures in coordinator logs If a DDL fails for some reason, it helps to log the failure message in the coordinator logs so that we can differentiate between failed and successful DDL queries. For ex: [0d66cd6004b4:21000] default> drop database foo; Query: drop database foo ERROR: ImpalaRuntimeException: Error making 'dropDatabase' RPC to Hive Metastore: CAUSED BY: NoSuchObjectException: foo ----- coordinator logs ------- I0208 12:13:26.251695 25474 Frontend.java:1242] 704e86fff482c0b5:f0501f9400000000] Analyzing query: drop database foo I0208 12:13:26.253773 25474 Frontend.java:1282] 704e86fff482c0b5:f0501f9400000000] Analysis finished. I0208 12:13:26.419946 25474 client-request-state.cc:176] 704e86fff482c0b5:f0501f9400000000] ImpalaRuntimeException: Error making 'dropDatabase' RPC to Hive Metastore: CAUSED BY: NoSuchObjectException: foo I0208 12:13:26.419992 25474 impala-server.cc:1142] 704e86fff482c0b5:f0501f9400000000] UnregisterQuery(): query_id=704e86fff482c0b5:f0501f9400000000 I0208 12:13:26.419997 25474 impala-server.cc:1249] 704e86fff482c0b5:f0501f9400000000] Cancel(): query_id=704e86fff482c0b5:f0501f9400000000 ------------------------------- Testing: Verified manually by running a few DDLs that fail and then inspecting the coordinator log file. Change-Id: Ie89291ee27156c701e07cea44ad3ee07ec54ab42 Reviewed-on: http://gerrit.cloudera.org:8080/12414 Reviewed-by: Bharath Vissapragada <bhara...@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenk...@cloudera.com> --- be/src/common/status.h | 9 +++++++++ be/src/service/client-request-state.cc | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/be/src/common/status.h b/be/src/common/status.h index 3fd5b5b..41f7663 100644 --- a/be/src/common/status.h +++ b/be/src/common/status.h @@ -359,6 +359,15 @@ std::ostream& operator<<(std::ostream& os, const Status& status); if (UNLIKELY(!_status.ok())) return _status; \ } while (false) +#define LOG_AND_RETURN_IF_ERROR(stmt) \ + do { \ + const ::impala::Status& _status = (stmt); \ + if (UNLIKELY(!_status.ok())) { \ + LOG(INFO) << _status.GetDetail(); \ + return _status; \ + } \ + } while (false) + #define RETURN_VOID_IF_ERROR(stmt) \ do { \ if (UNLIKELY(!(stmt).ok())) return; \ diff --git a/be/src/service/client-request-state.cc b/be/src/service/client-request-state.cc index bac6c1c..b1070bd 100644 --- a/be/src/service/client-request-state.cc +++ b/be/src/service/client-request-state.cc @@ -21,6 +21,7 @@ #include <limits> #include <gutil/strings/substitute.h> +#include "common/status.h" #include "exec/kudu-util.h" #include "kudu/rpc/rpc_controller.h" #include "runtime/backend-client.h" @@ -183,7 +184,7 @@ Status ClientRequestState::Exec(TExecRequest* exec_request) { } case TStmtType::DDL: { DCHECK(exec_request_.__isset.catalog_op_request); - RETURN_IF_ERROR(ExecDdlRequest()); + LOG_AND_RETURN_IF_ERROR(ExecDdlRequest()); break; } case TStmtType::LOAD: {