Quellcode durchsuchen

HUE-6149 [search] Smarter catching of Solr error message

Romain Rigaux vor 8 Jahren
Ursprung
Commit
679ad16f34

+ 5 - 4
desktop/libs/dashboard/src/dashboard/api.py

@@ -29,12 +29,12 @@ from libsolr.api import SolrApi
 
 from search.conf import SOLR_URL
 
+from dashboard.controller import can_edit_index
 from dashboard.dashboard_api import get_engine
 from dashboard.data_export import download as export_download
 from dashboard.decorators import allow_viewer_only
 from dashboard.facet_builder import _guess_gap, _zoom_range_facet, _new_range_facet
 from dashboard.models import Collection2, augment_solr_response, pairwise2, augment_solr_exception
-from dashboard.controller import can_edit_index
 
 
 LOG = logging.getLogger(__name__)
@@ -60,10 +60,11 @@ def search(request):
     except RestException, e:
       try:
         message = json.loads(e.message)
-        response['error'] = message['error'].get('msg', message['error']['trace'])
+        msg = message['error'].get('msg')
+        response['error'] = msg if msg else message['error']['trace']
       except Exception, e2:
-        LOG.exception('failed to extract json message: %s' % force_unicode(e2))
-        LOG.exception('failed to parse json response: %s' % force_unicode(e))
+        LOG.exception('Failed to extract json message: %s' % force_unicode(e2))
+        LOG.exception('Failed to parse json response: %s' % force_unicode(e))
         response['error'] = force_unicode(e)
     except Exception, e:
       raise PopupException(e, title=_('Error while accessing Solr'))

+ 2 - 2
desktop/libs/dashboard/src/dashboard/models.py

@@ -507,8 +507,8 @@ def augment_solr_response(response, collection, query):
           dimension = 1
 
           column = 'count'
-          if len(collection_facet['properties']['facets']) == 1:
-            agg_keys = [key for key, value in counts[0].items() if key.lower().startswith('agg_')]
+          agg_keys = [key for key, value in counts[0].items() if key.lower().startswith('agg_')]
+          if len(collection_facet['properties']['facets']) == 1 and agg_keys:
             legend = agg_keys[0].split(':', 2)[1]
             column = agg_keys[0]
           else:

+ 1 - 1
desktop/libs/dashboard/src/dashboard/views.py

@@ -32,9 +32,9 @@ from search.conf import LATEST
 
 from dashboard.dashboard_api import get_engine
 from dashboard.decorators import allow_owner_only
-from dashboard.models import Collection2
 from dashboard.conf import get_engines
 from dashboard.controller import DashboardController, can_edit_index
+from dashboard.models import Collection2
 
 
 LOG = logging.getLogger(__name__)