From a45bc54a38a20c9c6baa60c3b1c06ff631fc358a Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Wed, 9 Oct 2024 12:26:15 +0200 Subject: [PATCH] fix(sdk): added SpanHandle & NoopSpanHandle for typescript - instana.currentSpan().getTraceId() --- packages/collector/src/types/shared.d.ts | 6 +- .../misc/typescript/ts_cjs/src/app_1.ts | 4 ++ packages/core/src/core.d.ts | 63 +++++++++++++++++++ 3 files changed, 70 insertions(+), 3 deletions(-) diff --git a/packages/collector/src/types/shared.d.ts b/packages/collector/src/types/shared.d.ts index dc8fff051f..b3845b0287 100644 --- a/packages/collector/src/types/shared.d.ts +++ b/packages/collector/src/types/shared.d.ts @@ -1,8 +1,8 @@ import { CollectorConfig } from './collector'; -import { GenericLogger, InstanaBaseSpan } from '@instana/core/src/core'; +import { GenericLogger, SpanHandle, NoopSpanHandle } from '@instana/core/src/core'; export interface Init { - currentSpan(): { span: InstanaBaseSpan }; + currentSpan(): SpanHandle | NoopSpanHandle; isTracing(): boolean; isConnected(): boolean; setLogger(logger: GenericLogger): void; @@ -15,7 +15,7 @@ export interface Init { export type InitFunction = { (config?: CollectorConfig): Init; - currentSpan(): { span: InstanaBaseSpan }; + currentSpan(): SpanHandle | NoopSpanHandle; isTracing(): boolean; isConnected(): boolean; setLogger(logger: GenericLogger): void; diff --git a/packages/collector/test/tracing/misc/typescript/ts_cjs/src/app_1.ts b/packages/collector/test/tracing/misc/typescript/ts_cjs/src/app_1.ts index 28e6b3fdd1..1839ea3499 100644 --- a/packages/collector/test/tracing/misc/typescript/ts_cjs/src/app_1.ts +++ b/packages/collector/test/tracing/misc/typescript/ts_cjs/src/app_1.ts @@ -32,6 +32,10 @@ app.get('/request', async (req, res) => { throw new Error('No current span available.'); } + if (!currentSpan.getTraceId()) { + throw new Error('getTraceId fn not available.'); + } + await fetch(`http://127.0.0.1:${agentPort}`); res.json({ success: true }); }); diff --git a/packages/core/src/core.d.ts b/packages/core/src/core.d.ts index c3090b49a4..4a841ad131 100644 --- a/packages/core/src/core.d.ts +++ b/packages/core/src/core.d.ts @@ -79,3 +79,66 @@ export interface InstanaBaseSpan { /** function to perform cleanup */ cleanup?: () => void; } + +export interface SpanHandle { + span: InstanaBaseSpan; + + getTraceId(): string | null; + getSpanId(): string | null; + getParentSpanId(): string | null; + getName(): string | null; + + isEntrySpan(): boolean; + isExitSpan(): boolean; + isIntermediateSpan(): boolean; + + getTimestamp(): number; + getDuration(): number; + getErrorCount(): number; + + getCorrelationId(): string | null; + setCorrelationId(correlationId: string): void; + + getCorrelationType(): string | null; + setCorrelationType(correlationType: string): void; + + annotate(path: string | string[], value: any): void; + + markAsErroneous(errorMessage?: string, errorMessagePath?: string | string[]): void; + markAsNonErroneous(errorMessagePath?: string | string[]): void; + + disableAutoEnd(): void; + end(errorCount?: boolean | number): void; + cancel(): void; +} + +export interface NoopSpanHandle { + span: undefined; + getTraceId(): null; + getSpanId(): null; + getParentSpanId(): null; + getName(): null; + + isEntrySpan(): boolean; + isExitSpan(): boolean; + isIntermediateSpan(): boolean; + + getTimestamp(): number; + getDuration(): number; + getErrorCount(): number; + + getCorrelationId(): null; + setCorrelationId(correlationId: string): void; + + getCorrelationType(): null; + setCorrelationType(correlationType: string): void; + + annotate(path: string | string[], value: any): void; + + markAsErroneous(errorMessage?: string, errorMessagePath?: string | string[]): void; + markAsNonErroneous(errorMessagePath?: string | string[]): void; + + disableAutoEnd(): void; + end(errorCount?: boolean | number): void; + cancel(): void; +}