diff --git a/packages/jaeger-ui/src/utils/filter-spans.test.js b/packages/jaeger-ui/src/utils/filter-spans.test.js index e4a054141a..92adfdf283 100644 --- a/packages/jaeger-ui/src/utils/filter-spans.test.js +++ b/packages/jaeger-ui/src/utils/filter-spans.test.js @@ -188,6 +188,11 @@ describe('filterSpans', () => { expect(filterSpans('processTagKey2', spans)).toEqual(new Set([spanID2])); }); + it('should return no spans when logs is null', () => { + const nullSpan = { ...span0, logs: null }; + expect(filterSpans('logFieldKey1', [nullSpan])).toEqual(new Set([])); + }); + it("should return spans whose process.processTags' kv.value match a filter", () => { expect(filterSpans('processTagValue1', spans)).toEqual(new Set([spanID0, spanID2])); expect(filterSpans('processTagValue0', spans)).toEqual(new Set([spanID0])); diff --git a/packages/jaeger-ui/src/utils/filter-spans.tsx b/packages/jaeger-ui/src/utils/filter-spans.tsx index d6df7876cd..5817f65cbc 100644 --- a/packages/jaeger-ui/src/utils/filter-spans.tsx +++ b/packages/jaeger-ui/src/utils/filter-spans.tsx @@ -57,7 +57,7 @@ export default function filterSpans(textFilter: string, spans: Span[] | TNil) { isTextInFilters(includeFilters, span.operationName) || isTextInFilters(includeFilters, span.process.serviceName) || isTextInKeyValues(span.tags) || - span.logs.some(log => isTextInKeyValues(log.fields)) || + (span.logs !== null && span.logs.some(log => isTextInKeyValues(log.fields))) || isTextInKeyValues(span.process.tags) || includeFilters.some(filter => filter.replace(/^0*/, '') === span.spanID.replace(/^0*/, ''));