Browse Source

[impala] Use beeswax API error_handler decorator for impala API methods

Jenny Kim 10 years ago
parent
commit
081258b7b3
3 changed files with 11 additions and 18 deletions
  1. 8 13
      apps/impala/src/impala/api.py
  2. 0 2
      apps/impala/src/impala/dbms.py
  3. 3 3
      apps/impala/src/impala/tests.py

+ 8 - 13
apps/impala/src/impala/api.py

@@ -25,6 +25,7 @@ from django.views.decorators.http import require_POST
 
 
 from desktop.lib.django_util import JsonResponse
 from desktop.lib.django_util import JsonResponse
 
 
+from beeswax.api import error_handler
 from beeswax.server import dbms as beeswax_dbms
 from beeswax.server import dbms as beeswax_dbms
 
 
 from impala import dbms
 from impala import dbms
@@ -34,36 +35,30 @@ LOG = logging.getLogger(__name__)
 
 
 
 
 @require_POST
 @require_POST
+@error_handler
 def invalidate(request, database):
 def invalidate(request, database):
   query_server = dbms.get_query_server_config()
   query_server = dbms.get_query_server_config()
   db = beeswax_dbms.get(request.user, query_server=query_server)
   db = beeswax_dbms.get(request.user, query_server=query_server)
 
 
   response = {'status': 0, 'message': ''}
   response = {'status': 0, 'message': ''}
 
 
-  try:
-    flush_all = request.POST.get('flush_all', 'false').lower() == 'true'
-    db.invalidate(database, flush_all=flush_all)
-    response['message'] = _('Successfully invalidated metadata for `%s`') % database
-  except Exception, e:
-    response['status'] = -1
-    response['message'] = _(str(e))
+  flush_all = request.POST.get('flush_all', 'false').lower() == 'true'
+  db.invalidate(database, flush_all=flush_all)
+  response['message'] = _('Successfully invalidated metadata for `%s`') % database
 
 
   return JsonResponse(response)
   return JsonResponse(response)
 
 
 
 
 
 
 @require_POST
 @require_POST
+@error_handler
 def refresh_table(request, database, table):
 def refresh_table(request, database, table):
   query_server = dbms.get_query_server_config()
   query_server = dbms.get_query_server_config()
   db = beeswax_dbms.get(request.user, query_server=query_server)
   db = beeswax_dbms.get(request.user, query_server=query_server)
 
 
   response = {'status': 0, 'message': ''}
   response = {'status': 0, 'message': ''}
 
 
-  try:
-    db.refresh_table(database, table)
-    response['message'] = _('Successfully refreshed metadata for `%s`.`%s`') % (database, table)
-  except Exception, e:
-    response['status'] = -1
-    response['message'] = _(str(e))
+  db.refresh_table(database, table)
+  response['message'] = _('Successfully refreshed metadata for `%s`.`%s`') % (database, table)
 
 
   return JsonResponse(response)
   return JsonResponse(response)

+ 0 - 2
apps/impala/src/impala/dbms.py

@@ -106,7 +106,6 @@ class ImpalaDbms(HiveServer2Dbms):
       # Allow timeout exceptions to propagate
       # Allow timeout exceptions to propagate
       raise e
       raise e
     except Exception, e:
     except Exception, e:
-      LOG.error('Failed to invalidate `%s`: %s' % (database, smart_str(e)))
       msg = 'Failed to invalidate `%s`' % database
       msg = 'Failed to invalidate `%s`' % database
       raise QueryServerException(msg)
       raise QueryServerException(msg)
     finally:
     finally:
@@ -121,7 +120,6 @@ class ImpalaDbms(HiveServer2Dbms):
       query = hql_query(hql, database, query_type=QUERY_TYPES[1])
       query = hql_query(hql, database, query_type=QUERY_TYPES[1])
       handle = self.execute_and_wait(query, timeout_sec=10.0)
       handle = self.execute_and_wait(query, timeout_sec=10.0)
     except Exception, e:
     except Exception, e:
-      LOG.error('Failed to refresh `%s`.`%s`: %s' % (database, table, smart_str(e)))
       msg = 'Failed to refresh `%s`.`%s`' % (database, table)
       msg = 'Failed to refresh `%s`.`%s`' % (database, table)
       raise QueryServerException(msg)
       raise QueryServerException(msg)
     finally:
     finally:

+ 3 - 3
apps/impala/src/impala/tests.py

@@ -231,7 +231,7 @@ class TestImpalaIntegration:
     assert_true(data['properties'].get('http_addr'))
     assert_true(data['properties'].get('http_addr'))
 
 
 
 
-  def test_invalidate(self):
+  def test_invalidate_tables(self):
     # Helper function to get Impala and Beeswax (HMS) tables
     # Helper function to get Impala and Beeswax (HMS) tables
     def get_impala_beeswax_tables():
     def get_impala_beeswax_tables():
       impala_resp = self.client.get(reverse('impala:api_autocomplete_tables', kwargs={'database': self.DATABASE}))
       impala_resp = self.client.get(reverse('impala:api_autocomplete_tables', kwargs={'database': self.DATABASE}))
@@ -244,7 +244,7 @@ class TestImpalaIntegration:
 
 
     impala_tables, beeswax_tables = get_impala_beeswax_tables()
     impala_tables, beeswax_tables = get_impala_beeswax_tables()
     assert_equal(impala_tables, beeswax_tables,
     assert_equal(impala_tables, beeswax_tables,
-      "\ntest_invalidate: `%s`\nImpala Tables: %s\nBeeswax Tables: %s" % (self.DATABASE, ','.join(impala_tables), ','.join(beeswax_tables)))
+      "\ntest_invalidate_tables: `%s`\nImpala Tables: %s\nBeeswax Tables: %s" % (self.DATABASE, ','.join(impala_tables), ','.join(beeswax_tables)))
 
 
     hql = """
     hql = """
       CREATE TABLE new_table (a INT);
       CREATE TABLE new_table (a INT);
@@ -261,7 +261,7 @@ class TestImpalaIntegration:
     impala_tables, beeswax_tables = get_impala_beeswax_tables()
     impala_tables, beeswax_tables = get_impala_beeswax_tables()
     # Invalidate picks up new table
     # Invalidate picks up new table
     assert_equal(impala_tables, beeswax_tables,
     assert_equal(impala_tables, beeswax_tables,
-      "\ntest_invalidate: `%s`\nImpala Tables: %s\nBeeswax Tables: %s" % (self.DATABASE, ','.join(impala_tables), ','.join(beeswax_tables)))
+      "\ntest_invalidate_tables: `%s`\nImpala Tables: %s\nBeeswax Tables: %s" % (self.DATABASE, ','.join(impala_tables), ','.join(beeswax_tables)))
 
 
 
 
   def test_refresh_table(self):
   def test_refresh_table(self):