IMPALA-1470: Fix error message with catalog down When the catalog server cannot be reached, currently impala client would report a NullpointerException to shell with no context. The improved error message with this patch is: > ERROR: InternalException: Error requesting prioritized load: Couldn't open transport for localhost:26000 (connect() failed: Connection refused) > Error making an RPC call to Catalog server.
The bug is when the client gets an RPC error, it tries to box the error into a field of a Thrift struct but does not set the optional field to be present. This patch makes the status field in TPrioritizeLoadResponse required. Change-Id: Ic695faf89b146bdaa145aaca87f85579137b67c5 Reviewed-on: http://gerrit.cloudera.org:8080/7539 Reviewed-by: Tim Armstrong <[email protected]> Tested-by: Impala Public Jenkins Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/ae720087 Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/ae720087 Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/ae720087 Branch: refs/heads/master Commit: ae72008747d453f4378fddb8a245b570b0528e30 Parents: 3059024 Author: Tianyi Wang <[email protected]> Authored: Mon Jul 31 11:59:54 2017 -0700 Committer: Impala Public Jenkins <[email protected]> Committed: Tue Aug 1 07:35:28 2017 +0000 ---------------------------------------------------------------------- be/src/service/fe-support.cc | 4 +--- common/thrift/CatalogService.thrift | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/ae720087/be/src/service/fe-support.cc ---------------------------------------------------------------------- diff --git a/be/src/service/fe-support.cc b/be/src/service/fe-support.cc index 0bc6285..379829d 100644 --- a/be/src/service/fe-support.cc +++ b/be/src/service/fe-support.cc @@ -427,9 +427,7 @@ Java_org_apache_impala_service_FeSupport_NativePrioritizeLoad( Status status = catalog_op_executor.PrioritizeLoad(request, &result); if (!status.ok()) { LOG(ERROR) << status.GetDetail(); - // Create a new Status, copy in this error, then update the result. - Status catalog_service_status(result.status); - catalog_service_status.MergeStatus(status); + status.AddDetail("Error making an RPC call to Catalog server."); status.ToThrift(&result.status); } http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/ae720087/common/thrift/CatalogService.thrift ---------------------------------------------------------------------- diff --git a/common/thrift/CatalogService.thrift b/common/thrift/CatalogService.thrift index 7ba431b..ef19d25 100644 --- a/common/thrift/CatalogService.thrift +++ b/common/thrift/CatalogService.thrift @@ -248,7 +248,7 @@ struct TPrioritizeLoadRequest { struct TPrioritizeLoadResponse { // The status of the operation, OK if the operation was successful. - 1: optional Status.TStatus status + 1: required Status.TStatus status } // Request to perform a privilege check with the Sentry Service to determine
