Skip to content

Commit

Permalink
Fix review comments
Browse files Browse the repository at this point in the history
Signed-off-by: Kanahathi Mohideen <kpmfazal@gmail.com>
  • Loading branch information
MUI-Pop committed Feb 5, 2023
1 parent 0318def commit adf1e94
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 34 deletions.
22 changes: 6 additions & 16 deletions packages/jaeger-ui/src/model/link-patterns.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -310,10 +310,7 @@ describe('getParameterInTrace()', () => {
};

it('returns an entry that is present', () => {
expect(getParameterInTrace('traceID', trace)).toEqual({
key: 'traceID',
value: trace.traceID,
});
expect(getParameterInTrace('startTime', trace)).toEqual(trace.startTime);
});

it('returns undefined when the entry cannot be found', () => {
Expand Down Expand Up @@ -385,30 +382,23 @@ describe('computeLinks()', () => {
text: 'second link (#{myOtherKey})',
},
{
type: 'tags',
type: 'logs',
key: 'myThirdKey',
url: 'http://example.com/?myKey1=#{myKey}&myKey=#{myThirdKey}&traceID=#{traceID}&startTime=#{startTime}',
text: 'third link (#{myThirdKey}) for traceID - #{traceID}',
url: 'http://example.com/?myKey1=#{myKey}&myKey=#{myThirdKey}&traceID=#{trace.traceID}&startTime=#{trace.startTime}',
text: 'third link (#{myThirdKey}) for traceID - #{trace.traceID}',
}
].map(processLinkPattern);

const spans = [
{ depth: 0, process: {}, tags: [{ key: 'myKey', value: 'valueOfMyKey' }] },
{ depth: 1, process: {}, logs: [{ fields: [{ key: 'myOtherKey', value: 'valueOfMy+Other+Key' }] }] },
{ depth: 1, process: {}, tags: [{ key: 'myThirdKey', value: 'valueOfThirdMyKey' }] },
{ depth: 1, process: {}, logs: [{ fields: [{ key: 'myOtherKey', value: 'valueOfMy+Other+Key' }, { key: 'myThirdKey', value: 'valueOfThirdMyKey' }] }] },
];
spans[1].references = [
{
refType: 'CHILD_OF',
span: spans[0],
},
];
spans[2].references = [
{
refType: 'CHILD_OF',
span: spans[0],
},
];

const trace = {
processes: [],
Expand All @@ -434,7 +424,7 @@ describe('computeLinks()', () => {
text: 'second link (valueOfMy+Other+Key)',
},
]);
expect(computeLinks(linkPatterns, spans[2], spans[2].tags, 0, trace)).toEqual([
expect(computeLinks(linkPatterns, spans[1], spans[1].logs[0].fields, 1, trace)).toEqual([
{
url: 'http://example.com/?myKey1=valueOfMyKey&myKey=valueOfThirdMyKey&traceID=trc1&startTime=1000',
text: 'third link (valueOfThirdMyKey) for traceID - trc1',
Expand Down
46 changes: 28 additions & 18 deletions packages/jaeger-ui/src/model/link-patterns.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -114,15 +114,23 @@ export function getParameterInAncestor(name: string, span: Span) {
return undefined;
}

export function getParameterInTrace(name: string, trace: Trace | undefined) {
if(trace) {
const validTraceKeys = (Object.keys(trace) as (keyof Trace)[]).filter(
const getValidTraceKeys = memoize(10)(
(trace: Trace) => {
const validKeys = (Object.keys(trace) as (keyof Trace)[]).filter(
key => typeof trace[key] === 'string' || typeof trace[key] === 'number'
);
return validKeys;
}
);

export function getParameterInTrace(name: string, trace: Trace | undefined) {

if(trace) {
const validTraceKeys = getValidTraceKeys(trace);

const key = name as keyof Trace;
if(validTraceKeys.includes(key)) {
return { key: key, value: trace[key] };
return trace[key];
}
}

Expand All @@ -135,20 +143,17 @@ function callTemplate(template: ProcessedTemplate, data: any) {

export function computeTraceLink(linkPatterns: ProcessedLinkPattern[], trace: Trace) {
const result: TLinksRV = [];
const validKeys = (Object.keys(trace) as (keyof Trace)[]).filter(
key => typeof trace[key] === 'string' || typeof trace[key] === 'number'
);

linkPatterns
.filter(pattern => pattern.type('traces'))
.forEach(pattern => {
const parameterValues: Record<string, any> = {};
const allParameters = pattern.parameters.every(parameter => {
const key = parameter as keyof Trace;
if (validKeys.includes(key)) {
const val = getParameterInTrace(parameter, trace);
if (val) {
// At this point is safe to access to trace object using parameter variable because
// we validated parameter against validKeys, this implies that parameter a keyof Trace.
parameterValues[parameter] = trace[key];
parameterValues[parameter] = val;
return true;
}
return false;
Expand Down Expand Up @@ -186,17 +191,22 @@ export function computeLinks(
if (pattern.type(type) && pattern.key(item.key) && pattern.value(item.value)) {
const parameterValues: Record<string, any> = {};
const allParameters = pattern.parameters.every(parameter => {
let entry = getParameterInArray(parameter, items);
let entry;

if (!entry && !processTags) {
// do not look in ancestors for process tags because the same object may appear in different places in the hierarchy
// and the cache in getLinks uses that object as a key
entry = getParameterInAncestor(parameter, span);
if(parameter.startsWith('trace.')) {
const traceVal = getParameterInTrace(parameter.split('trace.')[1], trace);
if(traceVal) {
entry = { key: parameter, value: traceVal };
}
}
else {
entry = getParameterInArray(parameter, items);

// look up in trace for matching keys
if(!entry) {
entry = getParameterInTrace(parameter, trace);
if (!entry && !processTags) {
// do not look in ancestors for process tags because the same object may appear in different places in the hierarchy
// and the cache in getLinks uses that object as a key
entry = getParameterInAncestor(parameter, span);
}
}

if (entry) {
Expand Down

0 comments on commit adf1e94

Please sign in to comment.