Skip to content

Commit 991fa98

Browse files
feat: accept spanProcessors from config
1 parent ba320a4 commit 991fa98

4 files changed

Lines changed: 19 additions & 3 deletions

File tree

packages/cli-v3/src/entryPoints/dev-run-worker.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ async function doBootstrap() {
207207
instrumentations: config.telemetry?.instrumentations ?? config.instrumentations ?? [],
208208
exporters: config.telemetry?.exporters ?? [],
209209
logExporters: config.telemetry?.logExporters ?? [],
210+
spanProcessors : config.telemetry?.spanProcessors ?? [],
210211
diagLogLevel: (env.TRIGGER_OTEL_LOG_LEVEL as TracingDiagnosticLogLevel) ?? "none",
211212
forceFlushTimeoutMillis: 30_000,
212213
resource: config.telemetry?.resource,

packages/cli-v3/src/entryPoints/managed-run-worker.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ async function doBootstrap() {
188188
forceFlushTimeoutMillis: 30_000,
189189
exporters: config.telemetry?.exporters ?? [],
190190
logExporters: config.telemetry?.logExporters ?? [],
191+
spanProcessors: config.telemetry?.spanProcessors ?? [],
191192
resource: config.telemetry?.resource,
192193
});
193194

packages/core/src/v3/config.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { Instrumentation } from "@opentelemetry/instrumentation";
2-
import type { SpanExporter } from "@opentelemetry/sdk-trace-base";
2+
import type { SpanExporter, SpanProcessor } from "@opentelemetry/sdk-trace-base";
33
import type { BuildExtension } from "./build/extensions.js";
44
import type {
55
AnyOnFailureHookFunction,
@@ -95,6 +95,14 @@ export type TriggerConfig = {
9595
*/
9696
instrumentations?: Array<Instrumentation>;
9797

98+
/**
99+
* Span processors to use for OpenTelemetry. This is useful if you want to add custom span processors to your tasks.
100+
* There are executed in the order passed before running exporters
101+
*
102+
* @see https://trigger.dev/docs/config/config-file#spanProcessors
103+
*/
104+
spanProcessors?: Array<SpanProcessor>;
105+
98106
/**
99107
* Exporters to use for OpenTelemetry. This is useful if you want to add custom exporters to your tasks.
100108
*

packages/core/src/v3/otel/tracingSDK.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {
2+
Context,
23
DiagConsoleLogger,
34
DiagLogLevel,
45
TraceFlags,
@@ -66,6 +67,7 @@ export type TracingSDKConfig = {
6667
url: string;
6768
forceFlushTimeoutMillis?: number;
6869
instrumentations?: Instrumentation[];
70+
spanProcessors?: SpanProcessor[];
6971
exporters?: SpanExporter[];
7072
logExporters?: LogRecordExporter[];
7173
diagLogLevel?: TracingDiagnosticLogLevel;
@@ -83,6 +85,7 @@ export class TracingSDK {
8385
public readonly getTracer: TracerProvider["getTracer"];
8486

8587
constructor(private readonly config: TracingSDKConfig) {
88+
console.log("tracing sdk constructor called");
8689
setLogLevel(config.diagLogLevel ?? "none");
8790

8891
const envResourceAttributesSerialized = getEnvVar("TRIGGER_OTEL_RESOURCE_ATTRIBUTES");
@@ -120,6 +123,11 @@ export class TracingSDK {
120123

121124
const spanProcessors: Array<SpanProcessor> = [];
122125

126+
//add span processor passed via config before exporters
127+
for (const spanProcessor of config.spanProcessors ?? []) {
128+
spanProcessors.push(spanProcessor);
129+
}
130+
123131
spanProcessors.push(
124132
new TaskContextSpanProcessor(
125133
VERSION,
@@ -139,10 +147,8 @@ export class TracingSDK {
139147
: new SimpleSpanProcessor(spanExporter)
140148
)
141149
);
142-
143150
const externalTraceId = idGenerator.generateTraceId();
144151
const externalTraceContext = traceContext.getExternalTraceContext();
145-
146152
for (const exporter of config.exporters ?? []) {
147153
spanProcessors.push(
148154
getEnvVar("TRIGGER_OTEL_BATCH_PROCESSING_ENABLED") === "1"

0 commit comments

Comments
 (0)