소스 검색

HUE-1189 [beeswax] Autocomplete failure should not 500 the page

Fix tests
Romain Rigaux 12 년 전
부모
커밋
0da9f01954
3개의 변경된 파일13개의 추가작업 그리고 6개의 파일을 삭제
  1. 1 1
      apps/beeswax/src/beeswax/templates/execute.mako
  2. 9 5
      apps/beeswax/src/beeswax/views.py
  3. 3 0
      apps/impala/src/impala/tests.py

+ 1 - 1
apps/beeswax/src/beeswax/templates/execute.mako

@@ -703,7 +703,7 @@ ${layout.menubar(section='query')}
         lineNumbers: true,
         lineNumbers: true,
         mode: "text/x-hiveql",
         mode: "text/x-hiveql",
         extraKeys: {
         extraKeys: {
-          "Shift-Space": function () {
+          "Ctrl-Space": function () {
             CodeMirror.fromDot = false;
             CodeMirror.fromDot = false;
             codeMirror.execCommand("autocomplete");
             codeMirror.execCommand("autocomplete");
           },
           },

+ 9 - 5
apps/beeswax/src/beeswax/views.py

@@ -336,16 +336,20 @@ def execute_query(request, design_id=None):
   dbs = db.get_databases()
   dbs = db.get_databases()
   databases = ((db, db) for db in dbs)
   databases = ((db, db) for db in dbs)
 
 
+  # Todo: build lazily
   autocomplete = {}
   autocomplete = {}
   for database in dbs:
   for database in dbs:
     tables = db.get_tables(database=database)
     tables = db.get_tables(database=database)
     autocomplete_tables = []
     autocomplete_tables = []
     for table in tables:
     for table in tables:
-      t = db.get_table(database, table)
-      autocomplete_tables.append({
-        'name': t.name,
-        'cols': [column.name for column in t.cols]
-      })
+      try:
+        t = db.get_table(database, table)
+        autocomplete_tables.append({
+          'name': t.name,
+          'cols': [column.name for column in t.cols]
+        })
+      except Exception, e:
+        LOG.warn('Skipping table %s.%s : %s' % (database, table, e))
 
 
     autocomplete[database] = {
     autocomplete[database] = {
       'tables': autocomplete_tables
       'tables': autocomplete_tables

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

@@ -29,6 +29,9 @@ class MockDbms:
   def get_databases(self):
   def get_databases(self):
     return ['db1', 'db2']
     return ['db1', 'db2']
 
 
+  def get_tables(self, database):
+    return ['table1', 'table2']
+
 
 
 class TestImpala:
 class TestImpala:
   def setUp(self):
   def setUp(self):