소스 검색

fix(graphite): minor fix/improvement to graphite error handling when doing metric exploration in query editor, fixes #5778

Torkel Ödegaard 9 년 전
부모
커밋
0d26bc63ae
2개의 변경된 파일15개의 추가작업 그리고 3개의 파일을 삭제
  1. 12 1
      public/app/core/services/alert_srv.ts
  2. 3 2
      public/app/plugins/datasource/graphite/query_ctrl.ts

+ 12 - 1
public/app/core/services/alert_srv.ts

@@ -16,7 +16,7 @@ export class AlertSrv {
 
   init() {
     this.$rootScope.onAppEvent('alert-error', (e, alert) => {
-      this.set(alert[0], alert[1], 'error', 0);
+      this.set(alert[0], alert[1], 'error', 7000);
     }, this.$rootScope);
 
     this.$rootScope.onAppEvent('alert-warning', (e, alert) => {
@@ -27,10 +27,21 @@ export class AlertSrv {
       this.set(alert[0], alert[1], 'success', 3000);
     }, this.$rootScope);
 
+    appEvents.on('alert-error', options => {
+      this.set(options[0], options[1], 'error', 7000);
+    });
+
     appEvents.on('confirm-modal', this.showConfirmModal.bind(this));
   }
 
   set(title, text, severity, timeout) {
+    if (_.isObject(text)) {
+      console.log('alert error', text);
+      if (text.statusText) {
+        text = `HTTP Error (${text.status}) ${text.statusText}`;
+      }
+    }
+
     var newAlert = {
       title: title || '',
       text: text || '',

+ 3 - 2
public/app/plugins/datasource/graphite/query_ctrl.ts

@@ -9,6 +9,7 @@ import moment from 'moment';
 import gfunc from './gfunc';
 import {Parser} from './parser';
 import {QueryCtrl} from 'app/plugins/sdk';
+import appEvents from 'app/core/app_events';
 
 export class GraphiteQueryCtrl extends QueryCtrl {
   static templateUrl = 'partials/query.editor.html';
@@ -141,7 +142,7 @@ export class GraphiteQueryCtrl extends QueryCtrl {
         }
       }
     }).catch(err => {
-      this.error = err.message || 'Failed to issue metric query';
+      appEvents.emit('alert-error', ['Error', err]);
     });
   }
 
@@ -178,7 +179,7 @@ export class GraphiteQueryCtrl extends QueryCtrl {
       altSegments.unshift(this.uiSegmentSrv.newSegment('*'));
       return altSegments;
     }).catch(err => {
-      this.error = err.message || 'Failed to issue metric query';
+      appEvents.emit('alert-error', ['Error', err]);
       return [];
     });
   }