diff --git a/public/app/plugins/datasource/loki/LanguageProvider.test.ts b/public/app/plugins/datasource/loki/LanguageProvider.test.ts index c83324cfea9..7702a424ee5 100644 --- a/public/app/plugins/datasource/loki/LanguageProvider.test.ts +++ b/public/app/plugins/datasource/loki/LanguageProvider.test.ts @@ -138,6 +138,17 @@ describe('Language completion provider', () => { start: 1546372800000, }); }); + + it('should work if request returns undefined', async () => { + const datasource = setup({}); + datasource.getTimeRangeParams = jest + .fn() + .mockImplementation((range: TimeRange) => ({ start: range.from.valueOf(), end: range.to.valueOf() })); + const languageProvider = new LanguageProvider(datasource); + languageProvider.request = jest.fn().mockResolvedValue(undefined); + const series = await languageProvider.fetchSeriesLabels('stream', { timeRange: mockTimeRange }); + expect(series).toEqual({}); + }); }); describe('label values', () => { diff --git a/public/app/plugins/datasource/loki/LanguageProvider.ts b/public/app/plugins/datasource/loki/LanguageProvider.ts index 631aef68b3f..460140b35f1 100644 --- a/public/app/plugins/datasource/loki/LanguageProvider.ts +++ b/public/app/plugins/datasource/loki/LanguageProvider.ts @@ -172,6 +172,9 @@ export default class LokiLanguageProvider extends LanguageProvider { if (!value) { const params = { 'match[]': interpolatedMatch, start, end }; const data = await this.request(url, params); + if (!Array.isArray(data)) { + return {}; + } const { values } = processLabels(data); value = values; this.seriesCache.set(cacheKey, value);