diff --git a/public/app/features/explore/TraceView/createSpanLink.test.ts b/public/app/features/explore/TraceView/createSpanLink.test.ts index 15715806dc4..8a6ff0f10eb 100644 --- a/public/app/features/explore/TraceView/createSpanLink.test.ts +++ b/public/app/features/explore/TraceView/createSpanLink.test.ts @@ -665,6 +665,34 @@ describe('createSpanLinkFactory', () => { ); }); + it('formats query correctly if only filterByTraceID is true', () => { + const createLink = setupSpanLinkFactory( + { + datasourceUid: searchUID, + filterByTraceID: true, + }, + searchUID + ); + + expect(createLink).toBeDefined(); + const links = createLink!( + createTraceSpan({ + process: { + serviceName: 'service', + tags: [], + }, + }) + ); + + const linkDef = links?.logLinks?.[0]; + expect(linkDef).toBeDefined(); + expect(linkDef!.href).toBe( + `/explore?left=${encodeURIComponent( + `{"range":{"from":"2020-10-14T01:00:00.000Z","to":"2020-10-14T01:00:01.000Z"},"datasource":"searchUID","queries":[{"query":"\\"7946b05c2e2e4e5a\\"","refId":"","metrics":[{"id":"1","type":"logs"}]}],"panelsState":{}}` + )}` + ); + }); + it('should format one tag correctly', () => { const createLink = setupSpanLinkFactory( { diff --git a/public/app/features/explore/TraceView/createSpanLink.tsx b/public/app/features/explore/TraceView/createSpanLink.tsx index d66595fc64a..29e963ab53a 100644 --- a/public/app/features/explore/TraceView/createSpanLink.tsx +++ b/public/app/features/explore/TraceView/createSpanLink.tsx @@ -318,15 +318,19 @@ function getLinkForElasticsearchOrOpensearch( return acc; }, []); - let query = ''; - if (tags.length > 0) { - query += `${tags.join(' AND ')}`; - } - if (filterByTraceID && span.traceID) { - query = `"${span.traceID}" AND ` + query; - } + let queryArr = []; if (filterBySpanID && span.spanID) { - query = `"${span.spanID}" AND ` + query; + queryArr.push(`"${span.spanID}"`); + } + + if (filterByTraceID && span.traceID) { + queryArr.push(`"${span.traceID}"`); + } + + if (tags.length > 0) { + for (const tag of tags) { + queryArr.push(tag); + } } const dataLink: DataLink = { @@ -336,7 +340,7 @@ function getLinkForElasticsearchOrOpensearch( datasourceUid: dataSourceSettings.uid, datasourceName: dataSourceSettings.name, query: { - query: query, + query: queryArr.join(' AND '), refId: '', metrics: [ {