You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by st...@apache.org on 2020/07/15 03:51:41 UTC

[phoenix-queryserver] branch master updated: PHOENIX-6007 PhoenixDB error handling improvements

This is an automated email from the ASF dual-hosted git repository.

stoty pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix-queryserver.git


The following commit(s) were added to refs/heads/master by this push:
     new 9980d41  PHOENIX-6007 PhoenixDB error handling improvements
9980d41 is described below

commit 9980d415f07879511d560e0999f08cda8c96759f
Author: Istvan Toth <st...@apache.org>
AuthorDate: Tue Jul 14 08:08:46 2020 +0200

    PHOENIX-6007 PhoenixDB error handling improvements
---
 python-phoenixdb/phoenixdb/avatica/client.py | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/python-phoenixdb/phoenixdb/avatica/client.py b/python-phoenixdb/phoenixdb/avatica/client.py
index 16885bb..9b28e65 100644
--- a/python-phoenixdb/phoenixdb/avatica/client.py
+++ b/python-phoenixdb/phoenixdb/avatica/client.py
@@ -93,6 +93,7 @@ def raise_sql_error(code, sqlstate, message):
     for prefix, error_class in SQLSTATE_ERROR_CLASSES:
         if sqlstate.startswith(prefix):
             raise error_class(message, code, sqlstate)
+    raise errors.InternalError(message, code, sqlstate)
 
 
 def parse_and_raise_sql_error(message):
@@ -112,15 +113,20 @@ def parse_error_page(html):
 
 
 def parse_error_protobuf(text):
-    message = common_pb2.WireMessage()
-    message.ParseFromString(text)
+    try:
+        message = common_pb2.WireMessage()
+        message.ParseFromString(text)
 
-    err = responses_pb2.ErrorResponse()
-    err.ParseFromString(message.wrapped_message)
+        err = responses_pb2.ErrorResponse()
+        if not err.ParseFromString(message.wrapped_message):
+            raise Exception('No error message found')
+    except Exception:
+        # Not a protobuf error, fall through
+        return
 
     parse_and_raise_sql_error(err.error_message)
     raise_sql_error(err.error_code, err.sql_state, err.error_message)
-    raise errors.InternalError(err.error_message)
+    # Not a protobuf error, fall through
 
 
 class AvaticaClient(object):