PanelQueryState: check for existing running query (#16894)

Fixes #16880
pull/16884/head
Ryan McKinley 6 years ago committed by Torkel Ödegaard
parent ec500ed416
commit 513c79d392
  1. 16
      public/app/features/dashboard/state/PanelQueryState.test.ts
  2. 1
      public/app/features/dashboard/state/PanelQueryState.ts

@ -34,14 +34,22 @@ describe('PanelQueryState', () => {
expect(empty.series.length).toBe(0);
expect(hasRun).toBeFalsy();
empty = await state.execute(
ds,
getQueryOptions({ targets: [{ hide: true, refId: 'X' }, { hide: true, refId: 'Y' }, { hide: true, refId: 'Z' }] })
);
const query = getQueryOptions({
targets: [{ hide: true, refId: 'X' }, { hide: true, refId: 'Y' }, { hide: true, refId: 'Z' }],
});
empty = await state.execute(ds, query);
// should not run any hidden queries'
expect(state.getActiveRunner()).toBeFalsy();
expect(empty.series.length).toBe(0);
expect(hasRun).toBeFalsy();
// Check for the same query
expect(state.isSameQuery(ds, query)).toBeTruthy();
// Check for differnet queries
expect(state.isSameQuery(new MockDataSourceApi('test'), query)).toBeFalsy();
expect(state.isSameQuery(ds, getQueryOptions({ targets: [{ refId: 'differnet' }] }))).toBeFalsy();
});
});

@ -95,6 +95,7 @@ export class PanelQueryState {
execute(ds: DataSourceApi, req: DataQueryRequest): Promise<PanelData> {
this.request = req;
this.datasource = ds;
// Return early if there are no queries to run
if (!req.targets.length) {

Loading…
Cancel
Save