Browse Source

Create cacheKey at top-level

Responsibility is now to pass the cacheKey through
to `datasourceRequest` in each datasources'
implementation of `query`.
stuart nelson 9 years ago
parent
commit
bc7c2cd3f5

+ 4 - 0
public/app/features/panel/metrics_panel_ctrl.ts

@@ -182,6 +182,10 @@ class MetricsPanelCtrl extends PanelCtrl {
       cacheTimeout: this.panel.cacheTimeout
     };
 
+    metricsQuery.targets.forEach(function(target) {
+      target.cacheKey = target.expr + target.refId + metricsQuery.panelId;
+    });
+
     return datasource.query(metricsQuery);
   }
 

+ 3 - 2
public/app/plugins/datasource/prometheus/datasource.ts

@@ -25,7 +25,7 @@ export function PrometheusDatasource(instanceSettings, $q, backendSrv, templateS
     var options: any = {
       url: this.url + url,
       method: method,
-      cacheKey: cacheKey
+      cacheKey: cacheKey,
     };
 
     if (this.basicAuth || this.withCredentials) {
@@ -76,6 +76,7 @@ export function PrometheusDatasource(instanceSettings, $q, backendSrv, templateS
 
       var query: any = {};
       query.expr = templateSrv.replace(target.expr, options.scopedVars, self.interpolateQueryExpr);
+      query.cacheKey = target.cacheKey;
 
       var interval = target.interval || options.interval;
       var intervalFactor = target.intervalFactor || 1;
@@ -123,7 +124,7 @@ export function PrometheusDatasource(instanceSettings, $q, backendSrv, templateS
 
   this.performTimeSeriesQuery = function(query, start, end) {
     var url = '/api/v1/query_range?query=' + encodeURIComponent(query.expr) + '&start=' + start + '&end=' + end + '&step=' + query.step;
-    return this._request('GET', url, query.expr.toString());
+    return this._request('GET', url, query.cacheKey);
   };
 
   this.performSuggestQuery = function(query) {