From bd8da0cf25e44dd18b0637499f977be13b1590e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zolt=C3=A1n=20Bedi?= Date: Mon, 4 Nov 2024 15:45:41 +0100 Subject: [PATCH] JaegerDS: Remove whitespace from traceID in query (#95786) --- .../plugins/datasource/jaeger/datasource.test.ts | 16 ++++++++++++++++ .../app/plugins/datasource/jaeger/datasource.ts | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/public/app/plugins/datasource/jaeger/datasource.test.ts b/public/app/plugins/datasource/jaeger/datasource.test.ts index 38ef7b4f286..f3d3c826e2f 100644 --- a/public/app/plugins/datasource/jaeger/datasource.test.ts +++ b/public/app/plugins/datasource/jaeger/datasource.test.ts @@ -101,6 +101,22 @@ describe('JaegerDatasource', () => { expect(mock).toHaveBeenCalledWith({ url: `${defaultSettings.url}/api/traces/a%2Fb` }); }); + it('should trim whitespace from traceid', async () => { + const mock = setupFetchMock({ data: [testResponse] }); + const ds = new JaegerDatasource(defaultSettings); + const query = { + ...defaultQuery, + targets: [ + { + query: 'a/b ', + refId: '1', + }, + ], + }; + await lastValueFrom(ds.query(query)); + expect(mock).toHaveBeenCalledWith({ url: `${defaultSettings.url}/api/traces/a%2Fb` }); + }); + it('returns empty response if trace id is not specified', async () => { const ds = new JaegerDatasource(defaultSettings); const response = await lastValueFrom( diff --git a/public/app/plugins/datasource/jaeger/datasource.ts b/public/app/plugins/datasource/jaeger/datasource.ts index 9af8bde29f7..a26e755cd98 100644 --- a/public/app/plugins/datasource/jaeger/datasource.ts +++ b/public/app/plugins/datasource/jaeger/datasource.ts @@ -79,7 +79,7 @@ export class JaegerDatasource extends DataSourceApi let { start, end } = this.getTimeRange(options.range); if (target.queryType !== 'search' && target.query) { - let url = `/api/traces/${encodeURIComponent(this.templateSrv.replace(target.query, options.scopedVars))}`; + let url = `/api/traces/${encodeURIComponent(this.templateSrv.replace(target.query.trim(), options.scopedVars))}`; if (this.traceIdTimeParams) { url += `?start=${start}&end=${end}`; }