From 3b9886830e3437c53d3e3508d52afe387d667c0b Mon Sep 17 00:00:00 2001 From: Zodan Jodan Date: Wed, 15 Nov 2023 00:10:28 +0800 Subject: [PATCH] Loki: fix missing entries when there arent any derived fields (#78123) pushing nulls for log entries that does not have a derived field to preserve the order of log data derived fields --- public/app/plugins/datasource/loki/getDerivedFields.test.ts | 4 ++-- public/app/plugins/datasource/loki/getDerivedFields.ts | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/public/app/plugins/datasource/loki/getDerivedFields.test.ts b/public/app/plugins/datasource/loki/getDerivedFields.test.ts index 3c08cf4dd01..ba8a513d6bc 100644 --- a/public/app/plugins/datasource/loki/getDerivedFields.test.ts +++ b/public/app/plugins/datasource/loki/getDerivedFields.test.ts @@ -139,13 +139,13 @@ describe('getDerivedFields', () => { }); const trace3 = newFields.find((f) => f.name === 'trace3Name'); - expect(trace3!.values).toEqual(['bar', 'tar']); + expect(trace3!.values).toEqual(['bar', 'tar', null, null]); expect(trace3!.config.links![0]).toEqual({ url: 'http://localhost:8080/${__value.raw}', title: '', }); const trace4 = newFields.find((f) => f.name === 'trace4Name'); - expect(trace4!.values).toEqual([]); + expect(trace4!.values).toEqual([null, null, null, null]); }); }); diff --git a/public/app/plugins/datasource/loki/getDerivedFields.ts b/public/app/plugins/datasource/loki/getDerivedFields.ts index 8b3ebf9bfed..7f094dd624c 100644 --- a/public/app/plugins/datasource/loki/getDerivedFields.ts +++ b/public/app/plugins/datasource/loki/getDerivedFields.ts @@ -40,6 +40,7 @@ export function getDerivedFields(dataFrame: DataFrame, derivedFieldConfigs: Deri continue; } } + field.values.push(null); } else if (derivedFieldsGrouped[field.name][0].matcherType !== 'regex') { // `matcherRegex` will actually be used as a RegExp here const line = lineField.values[i]; @@ -50,6 +51,8 @@ export function getDerivedFields(dataFrame: DataFrame, derivedFieldConfigs: Deri continue; } + field.values.push(null); + } else { field.values.push(null); } }