Bläddra i källkod

[core] Check for new query handle exception message for handling expired queries better in query history (#4009)

- Impala changed the invalid query handle exception alerts content.
- Hue didn't capture the 'Invalid or unknown query handle' exception from Impala side. It was 'Invalid query handle' from long time.
- We are now also checking for the new exception message to be at par with all versions.
Harsh Gupta 9 månader sedan
förälder
incheckning
761e1393f4

+ 1 - 1
apps/beeswax/src/beeswax/api.py

@@ -86,7 +86,7 @@ def error_handler(view_fn):
         'message': message,
       }
 
-      if re.search('database is locked|Invalid query handle|not JSON serializable', message, re.IGNORECASE):
+      if re.search('database is locked|Invalid query handle|Invalid or unknown query handle|not JSON serializable', message, re.IGNORECASE):
         response['status'] = 2  # Frontend will not display this type of error
         LOG.warning('error_handler silencing the exception: %s' % e)
       return JsonResponse(response)

+ 2 - 2
apps/beeswax/src/beeswax/server/hive_server2_lib.py

@@ -1114,8 +1114,8 @@ class HiveServerClient(object):
       (res, session) = self.call(self._client.GetLog, req)
       return res.log
     except Exception as e:
-      if 'Invalid query handle' in str(e):
-        message = 'Invalid query handle'
+      if 'Invalid query handle' in str(e) or 'Invalid or unknown query handle' in str(e):
+        message = 'Invalid or unknown query handle'
         LOG.error('%s: %s' % (message, e))
       else:
         message = 'Error when fetching the logs of the operation.'

+ 2 - 2
apps/beeswax/src/beeswax/views.py

@@ -439,9 +439,9 @@ def execute_query(request, design_id=None, query_history_id=None):
       else:
         action = 'editor-results'
     except QueryServerException as e:
-      if 'Invalid query handle' in e.message or 'Invalid OperationHandle' in e.message:
+      if 'Invalid query handle' in e.message or 'Invalid OperationHandle' in e.message or 'Invalid or unknown query handle' in e.message:
         query_history.save_state(QueryHistory.STATE.expired)
-        LOG.warning("Invalid query handle", exc_info=sys.exc_info())
+        LOG.warning("Invalid or unknown query handle", exc_info=sys.exc_info())
         action = 'editor-expired-results'
       else:
         raise e

+ 1 - 1
desktop/libs/notebook/src/notebook/connectors/hive_metastore.py

@@ -51,7 +51,7 @@ def query_error_handler(func):
         raise QueryError(message)
     except QueryServerException as e:
       message = force_unicode(str(e))
-      if 'Invalid query handle' in message or 'Invalid OperationHandle' in message:
+      if 'Invalid query handle' in message or 'Invalid OperationHandle' in message or 'Invalid or unknown query handle' in message:
         raise QueryExpired(e)
       else:
         raise QueryError(message)

+ 2 - 2
desktop/libs/notebook/src/notebook/connectors/hiveserver2.py

@@ -115,7 +115,7 @@ def query_error_handler(func):
         raise QueryError(message)
     except QueryServerException as e:
       message = force_unicode(str(e))
-      if 'Invalid query handle' in message or 'Invalid OperationHandle' in message:
+      if 'Invalid query handle' in message or 'Invalid OperationHandle' in message or 'Invalid or unknown query handle' in message:
         raise QueryExpired(e)
       else:
         raise QueryError(message)
@@ -394,7 +394,7 @@ class HS2Api(Api):
     try:
       results = db.fetch(handle, start_over=start_over, rows=rows)
     except QueryServerException as ex:
-      if re.search('(client inactivity)|(Invalid query handle)', str(ex)) and ex.message:
+      if re.search('(client inactivity)|(Invalid query handle)|(Invalid or unknown query handle)', str(ex)) and ex.message:
         raise QueryExpired(message=ex.message)
       else:
         raise QueryError(ex)

+ 1 - 1
desktop/libs/notebook/src/notebook/connectors/rdbms.py

@@ -33,7 +33,7 @@ def query_error_handler(func):
       return func(*args, **kwargs)
     except Exception as e:
       message = force_unicode(e)
-      if 'Invalid query handle' in message or 'Invalid OperationHandle' in message:
+      if 'Invalid query handle' in message or 'Invalid OperationHandle' in message or 'Invalid or unknown query handle' in message:
         raise QueryExpired(e)
       else:
         raise QueryError(message).with_traceback(sys.exc_info()[2])

+ 1 - 1
desktop/libs/notebook/src/notebook/connectors/sql_alchemy.py

@@ -98,7 +98,7 @@ def query_error_handler(func):
       raise
     except Exception as e:
       message = force_unicode(e)
-      if 'Invalid query handle' in message or 'Invalid OperationHandle' in message:
+      if 'Invalid query handle' in message or 'Invalid OperationHandle' in message or 'Invalid or unknown query handle' in message:
         raise QueryExpired(e)
       else:
         LOG.exception('Query Error')