浏览代码

HUE-8882 [impala] Fix invalidate delta when hive is missing (part 2)

Jean-Francois Desjeans Gauthier 6 年之前
父节点
当前提交
91af4c43b2
共有 3 个文件被更改,包括 6 次插入4 次删除
  1. 2 3
      apps/impala/src/impala/dbms.py
  2. 3 0
      apps/impala/src/impala/tests.py
  3. 1 1
      desktop/core/src/desktop/models.py

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

@@ -110,7 +110,7 @@ class ImpalaDbms(HiveServer2Dbms):
           raise PopupException(_("Hive and HMS not configured. Please do a full refresh"))
         diff_tables = self._get_different_tables(database)
         if len(diff_tables) > 10:
-          raise PopupException(_("Too many tables (%s) to invalidate. Please do a full refresh") % str(len(diff_tables)))
+          raise PopupException(_("Too many tables (%d) to invalidate. Please do a full refresh") % len(diff_tables))
         else:
           for table in diff_tables:
             hql = "INVALIDATE METADATA `%s`.`%s`" % (database, table)
@@ -182,8 +182,7 @@ class ImpalaDbms(HiveServer2Dbms):
 
 
   def _get_beeswax_tables(self, database):
-    interpreters = ['beeswax' if interpreter == 'hive' else interpreter for interpreter in Cluster(self.client.user).get_app_config().get_hive_metastore_interpreters()]
-    beeswax_query_server = dbms.get(user=self.client.user, query_server=beeswax_query_server_config(name=interpreters[0]))
+    beeswax_query_server = dbms.get(user=self.client.user, query_server=beeswax_query_server_config(name=Cluster(self.client.user).get_app_config().get_hive_metastore_interpreters()[0]))
     return beeswax_query_server.get_tables(database=database)
 
 

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

@@ -117,15 +117,18 @@ class TestMockedImpala:
 
         get_hive_metastore_interpreters.return_value = ['hive']
         ddms.invalidate('default')
+        ddms.client.query.assert_called_once_with(ddms.client.query.call_args[0][0])
         assert_true('customers' in ddms.client.query.call_args[0][0].hql_query) # diff of 1 table
 
         get_different_tables.return_value = ['customers','','','','','','','','','','']
         assert_raises(PopupException, ddms.invalidate, 'default') # diff of 11 tables. Limit is 10.
 
         ddms.invalidate('default', 'customers')
+        assert_true(ddms.client.query.call_count == 2) # Second call
         assert_true('customers' in ddms.client.query.call_args[0][0].hql_query) # invalidate 1 table
 
         ddms.invalidate()
+        assert_true(ddms.client.query.call_count == 3) # Third call
         assert_true('customers' not in ddms.client.query.call_args[0][0].hql_query) # Full invalidate
 
 class TestImpalaIntegration:

+ 1 - 1
desktop/core/src/desktop/models.py

@@ -1927,7 +1927,7 @@ class ClusterConfig():
       return None
 
   def get_hive_metastore_interpreters(self):
-    return list(filter(lambda interpreter: interpreter == 'hive' or interpreter == 'hms', [interpreter['type'] for interpreter in get_ordered_interpreters(self.user)]))
+    return [interpreter['type'] for interpreter in get_ordered_interpreters(self.user) if interpreter == 'hive' or interpreter == 'hms']
 
 class Cluster():