Эх сурвалжийг харах

[impala] get_exec_summary error handling for closed/invalid query handles

Jenny Kim 10 жил өмнө
parent
commit
4616a7491d

+ 4 - 8
apps/impala/src/impala/server.py

@@ -41,17 +41,13 @@ class ImpalaServerClient(HiveServerClient):
     req = ImpalaHiveServer2Service.TGetExecSummaryReq(operationHandle=operation_handle, sessionHandle=session_handle)
 
     # GetExecSummary() only works for closed queries
-    self.close_operation(operation_handle)
+    try:
+      self.close_operation(operation_handle)
+    except QueryServerException, e:
+      LOG.warn('Failed to close operation for query handle, query may be invalid or already closed.')
 
     resp = self.call(self._client.GetExecSummary, req)
 
-    if resp.status is not None and resp.status.statusCode not in (TStatusCode.SUCCESS_STATUS,):
-      if hasattr(resp.status, 'errorMessage') and resp.status.errorMessage:
-        message = resp.status.errorMessage
-      else:
-        message = ''
-      raise QueryServerException(Exception('Bad status for request %s:\n%s' % (req, resp)), message=message)
-
     return self._serialize_exec_summary(resp.summary)
 
 

+ 7 - 0
apps/impala/src/impala/tests.py

@@ -314,6 +314,13 @@ class TestImpalaIntegration:
     assert_true('nodes' in data['summary'], data)
     assert_true(len(data['summary']['nodes']) > 0, data['summary']['nodes'])
 
+    # Attempt to call get_exec_summary on a closed query
+    resp = self.client.post(reverse('impala:get_exec_summary', kwargs={'query_history_id': query_history.id}))
+    data = json.loads(resp.content)
+    assert_equal(0, data['status'], data)
+    assert_true('nodes' in data['summary'], data)
+    assert_true(len(data['summary']['nodes']) > 0, data['summary']['nodes'])
+
 
 # Could be refactored with SavedQuery.create_empty()
 def create_saved_query(app_name, owner):