Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion src/trace/context/Context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

import Span from '../../trace/span/Span';
import Segment from '../../trace/context/Segment';
import { Component } from '../../trace/Component';
import { Component } from '../Component';
import { ContextCarrier } from './ContextCarrier';

export default interface Context {
Expand Down Expand Up @@ -51,4 +51,10 @@ export default interface Context {
/* This should be called upon entering the new async context for a span that has previously executed .async(), it
should be the first thing the callback function belonging to the span does. */
resync(span: Span): void;

/**
* Returns the global trace id of the current trace, if there is no trace when invoking this method,
* "N/A" is returned.
*/
traceId(): string;
}
9 changes: 8 additions & 1 deletion src/trace/context/DummyContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import Context from '../../trace/context/Context';
import Span from '../../trace/span/Span';
import DummySpan from '../../trace/span/DummySpan';
import Segment from '../../trace/context/Segment';
import { Component } from '../../trace/Component';
import { Component } from '../Component';
import { ContextCarrier } from './ContextCarrier';
import ContextManager from './ContextManager';

Expand Down Expand Up @@ -71,4 +71,11 @@ export default class DummyContext implements Context {
resync(span: DummySpan) {
ContextManager.restore(span);
}

traceId(): string {
if (!this.segment.relatedTraces) {
return 'N/A';
}
return this.segment.relatedTraces[0].toString();
}
}
17 changes: 13 additions & 4 deletions src/trace/context/SpanContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import LocalSpan from '../../trace/span/LocalSpan';
import SegmentRef from './SegmentRef';
import ContextManager from './ContextManager';
import Tag from '../../Tag';
import { Component } from '../../trace/Component';
import { Component } from '../Component';
import { createLogger } from '../../logging';
import { ContextCarrier } from './ContextCarrier';
import { SpanType } from '../../proto/language-agent/Tracing_pb';
Expand All @@ -55,7 +55,7 @@ export default class SpanContext implements Context {
}

spanCheck(spanType: SpanType, operation: string, carrier?: ContextCarrier): [Span | null, Span?] {
let span = this.ignoreCheck(operation, SpanType.ENTRY, carrier);
const span = this.ignoreCheck(operation, SpanType.ENTRY, carrier);

if (span)
return [span];
Expand All @@ -75,7 +75,7 @@ export default class SpanContext implements Context {
const span = new spanClass({
id: context.spanId++,
parentId: this.finished ? -1 : parent?.id ?? -1,
context: context,
context,
operation,
});

Expand All @@ -101,6 +101,7 @@ export default class SpanContext implements Context {
}

newEntrySpan(operation: string, carrier?: ContextCarrier, inherit?: Component): Span {
// tslint:disable-next-line:prefer-const
let [span, parent] = this.spanCheck(SpanType.ENTRY, operation, carrier);

if (span)
Expand All @@ -127,6 +128,7 @@ export default class SpanContext implements Context {
}

newExitSpan(operation: string, component: Component, inherit?: Component): Span {
// tslint:disable-next-line:prefer-const
let [span, parent] = this.spanCheck(SpanType.EXIT, operation);

if (span)
Expand All @@ -151,7 +153,7 @@ export default class SpanContext implements Context {
}

newLocalSpan(operation: string): Span {
let [span, parent] = this.spanCheck(SpanType.LOCAL, operation);
const [span, parent] = this.spanCheck(SpanType.LOCAL, operation);

if (span)
return span;
Expand Down Expand Up @@ -228,4 +230,11 @@ export default class SpanContext implements Context {

ContextManager.restore(span);
}

traceId(): string {
if (!this.segment.relatedTraces) {
return 'N/A';
}
return this.segment.relatedTraces[0].toString();
}
}