소스 검색

HUE-6132 [metadata] Better handling of topTables error

Romain Rigaux 8 년 전
부모
커밋
0b67ce8
2개의 변경된 파일27개의 추가작업 그리고 8개의 파일을 삭제
  1. 6 5
      desktop/core/src/desktop/templates/assist.mako
  2. 21 3
      desktop/libs/metadata/src/metadata/optimizer_api.py

+ 6 - 5
desktop/core/src/desktop/templates/assist.mako

@@ -1697,9 +1697,12 @@ from notebook.conf import get_ordered_interpreters
     <!-- /ko -->
     <br/>
     <ul data-bind="foreach: activeTables">
-      <li data-bind="click: function (data, event) { showContextPopover(data, event, 'left') }">
+      <li>
+        ## Click name to select
         <span data-bind="text: name"></span>
-        <i class="fa fa-info"></i>
+        <a href="javascript:void(0)" data-bind="click: function (data, event) { showContextPopover(data, event, 'left') }">
+          <i class="fa fa-info"></i>
+        </a>
         <i class="fa fa-fw fa-clock-o muted" title="02/01/2017 10:15 PM"></i>
       </li>
     </ul>
@@ -1710,12 +1713,9 @@ from notebook.conf import get_ordered_interpreters
         <ul>
           <li>'country-code' is a popular field <a href="javascript:void(0)">add</a></li>
           <li>'gender' would be a good dimension with low cardinality (2) <a href="javascript:void(0)">add</a></li>
-          <li>'ts_s=17Q1' is the latest partition <a href="javascript:void(0)">add</a></li>
           <li>'f1'</li>
           <li>'f2'</li>
           <li>'f3'</li>
-          <li>'f4'</li>
-          <li>'f5'</li>
         </ul>
       </fieldset>
     </form>
@@ -1727,6 +1727,7 @@ from notebook.conf import get_ordered_interpreters
           <li>Popular fields for the tables are: [code, salary, amount]</li>
           <li>The query would run 2x faster by adding a WHERE date_f > '2017-01-01'</li>
           <li>Parameterize the query?</li>
+          <li>'ts_s=17Q1' is the latest partition <a href="javascript:void(0)">add</a></li>
           <li>Could be automated with integrated scheduler</li>
           <li>Data has not been refreshed since last run 3 days ago  <i class="fa fa-warning"></i> <i class="fa fa-refresh"></i></li></li>
           <li>A schema change happened last week, a new column 'salary_med' was added</li>

+ 21 - 3
desktop/libs/metadata/src/metadata/optimizer_api.py

@@ -24,7 +24,7 @@ from django.http import Http404
 from django.views.decorators.http import require_POST
 
 from desktop.lib.django_util import JsonResponse
-from desktop.lib.i18n import force_unicode
+from desktop.lib.i18n import force_unicode, smart_unicode
 from desktop.models import Document2
 from libsentry.privilege_checker import PrivilegeChecker
 from notebook.models import Notebook
@@ -43,12 +43,27 @@ except ImportError, e:
   LOG.warn("Hive lib not enabled")
 
 
+class NavOptException(Exception):
+  def __init__(self, message=None):
+    self.message = message or _('No error message, please check the logs.')
+
+  def __unicode__(self):
+    return smart_unicode(self.message)
+
+
+
 def error_handler(view_fn):
   def decorator(*args, **kwargs):
     try:
       return view_fn(*args, **kwargs)
     except Http404, e:
       raise e
+    except NavOptException, e:
+      LOG.exception(e)
+      response = {
+        'status': -1,
+        'message': e.message
+      }
     except Exception, e:
       LOG.exception(e)
       response = {
@@ -84,10 +99,13 @@ def top_tables(request):
   response = {'status': -1}
 
   database = request.POST.get('database', 'default')
-  len = request.POST.get('len', 1000)
+  limit = request.POST.get('len', 1000)
 
   api = OptimizerApi()
-  data = api.top_tables(database_name=database, page_size=len)
+  data = api.top_tables(database_name=database, page_size=limit)
+
+  if data['code'] == 'UNKNOWN':
+    raise NavOptException(data.get('message'))
 
   tables = [{
       'eid': table['eid'],