From 2407bc83ee8b33dae5951f922a588b921a85a0d1 Mon Sep 17 00:00:00 2001 From: Ivana Huckova <30407135+ivanahuckova@users.noreply.github.com> Date: Tue, 23 Jan 2024 15:20:29 +0100 Subject: [PATCH] Loki: Fix throwing error when no labels received (#81077) * Loki: Fix throwing error when no labels received * Remove es code --- .../plugins/datasource/loki/LanguageProvider.test.ts | 11 +++++++++++ .../app/plugins/datasource/loki/LanguageProvider.ts | 3 +++ 2 files changed, 14 insertions(+) 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);