From 991fa98b373ed0822df3a90dbbb6e6bfcf13964d Mon Sep 17 00:00:00 2001 From: Shaik-Sirajuddin Date: Fri, 13 Feb 2026 13:58:30 +0530 Subject: [PATCH 1/3] feat: accept spanProcessors from config --- packages/cli-v3/src/entryPoints/dev-run-worker.ts | 1 + packages/cli-v3/src/entryPoints/managed-run-worker.ts | 1 + packages/core/src/v3/config.ts | 10 +++++++++- packages/core/src/v3/otel/tracingSDK.ts | 10 ++++++++-- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/cli-v3/src/entryPoints/dev-run-worker.ts b/packages/cli-v3/src/entryPoints/dev-run-worker.ts index 7cd88ab5a9..f65cde31d4 100644 --- a/packages/cli-v3/src/entryPoints/dev-run-worker.ts +++ b/packages/cli-v3/src/entryPoints/dev-run-worker.ts @@ -207,6 +207,7 @@ async function doBootstrap() { instrumentations: config.telemetry?.instrumentations ?? config.instrumentations ?? [], exporters: config.telemetry?.exporters ?? [], logExporters: config.telemetry?.logExporters ?? [], + spanProcessors : config.telemetry?.spanProcessors ?? [], diagLogLevel: (env.TRIGGER_OTEL_LOG_LEVEL as TracingDiagnosticLogLevel) ?? "none", forceFlushTimeoutMillis: 30_000, resource: config.telemetry?.resource, diff --git a/packages/cli-v3/src/entryPoints/managed-run-worker.ts b/packages/cli-v3/src/entryPoints/managed-run-worker.ts index f1512f27f0..80b6be01ce 100644 --- a/packages/cli-v3/src/entryPoints/managed-run-worker.ts +++ b/packages/cli-v3/src/entryPoints/managed-run-worker.ts @@ -188,6 +188,7 @@ async function doBootstrap() { forceFlushTimeoutMillis: 30_000, exporters: config.telemetry?.exporters ?? [], logExporters: config.telemetry?.logExporters ?? [], + spanProcessors: config.telemetry?.spanProcessors ?? [], resource: config.telemetry?.resource, }); diff --git a/packages/core/src/v3/config.ts b/packages/core/src/v3/config.ts index 9c6871a264..105642307d 100644 --- a/packages/core/src/v3/config.ts +++ b/packages/core/src/v3/config.ts @@ -1,5 +1,5 @@ import type { Instrumentation } from "@opentelemetry/instrumentation"; -import type { SpanExporter } from "@opentelemetry/sdk-trace-base"; +import type { SpanExporter, SpanProcessor } from "@opentelemetry/sdk-trace-base"; import type { BuildExtension } from "./build/extensions.js"; import type { AnyOnFailureHookFunction, @@ -95,6 +95,14 @@ export type TriggerConfig = { */ instrumentations?: Array; + /** + * Span processors to use for OpenTelemetry. This is useful if you want to add custom span processors to your tasks. + * There are executed in the order passed before running exporters + * + * @see https://trigger.dev/docs/config/config-file#spanProcessors + */ + spanProcessors?: Array; + /** * Exporters to use for OpenTelemetry. This is useful if you want to add custom exporters to your tasks. * diff --git a/packages/core/src/v3/otel/tracingSDK.ts b/packages/core/src/v3/otel/tracingSDK.ts index 694212f71b..be9a68f467 100644 --- a/packages/core/src/v3/otel/tracingSDK.ts +++ b/packages/core/src/v3/otel/tracingSDK.ts @@ -1,4 +1,5 @@ import { + Context, DiagConsoleLogger, DiagLogLevel, TraceFlags, @@ -66,6 +67,7 @@ export type TracingSDKConfig = { url: string; forceFlushTimeoutMillis?: number; instrumentations?: Instrumentation[]; + spanProcessors?: SpanProcessor[]; exporters?: SpanExporter[]; logExporters?: LogRecordExporter[]; diagLogLevel?: TracingDiagnosticLogLevel; @@ -83,6 +85,7 @@ export class TracingSDK { public readonly getTracer: TracerProvider["getTracer"]; constructor(private readonly config: TracingSDKConfig) { + console.log("tracing sdk constructor called"); setLogLevel(config.diagLogLevel ?? "none"); const envResourceAttributesSerialized = getEnvVar("TRIGGER_OTEL_RESOURCE_ATTRIBUTES"); @@ -120,6 +123,11 @@ export class TracingSDK { const spanProcessors: Array = []; + //add span processor passed via config before exporters + for (const spanProcessor of config.spanProcessors ?? []) { + spanProcessors.push(spanProcessor); + } + spanProcessors.push( new TaskContextSpanProcessor( VERSION, @@ -139,10 +147,8 @@ export class TracingSDK { : new SimpleSpanProcessor(spanExporter) ) ); - const externalTraceId = idGenerator.generateTraceId(); const externalTraceContext = traceContext.getExternalTraceContext(); - for (const exporter of config.exporters ?? []) { spanProcessors.push( getEnvVar("TRIGGER_OTEL_BATCH_PROCESSING_ENABLED") === "1" From 8fe5c8c14ecb8679baa5505b978818c747a2c988 Mon Sep 17 00:00:00 2001 From: Shaik-Sirajuddin Date: Fri, 13 Feb 2026 14:07:54 +0530 Subject: [PATCH 2/3] chore: remove console.log 's --- packages/core/src/v3/config.ts | 2 +- packages/core/src/v3/otel/tracingSDK.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/core/src/v3/config.ts b/packages/core/src/v3/config.ts index 105642307d..e8e7b8ed4b 100644 --- a/packages/core/src/v3/config.ts +++ b/packages/core/src/v3/config.ts @@ -97,7 +97,7 @@ export type TriggerConfig = { /** * Span processors to use for OpenTelemetry. This is useful if you want to add custom span processors to your tasks. - * There are executed in the order passed before running exporters + * There are executed in the order passed before running exporters * * @see https://trigger.dev/docs/config/config-file#spanProcessors */ diff --git a/packages/core/src/v3/otel/tracingSDK.ts b/packages/core/src/v3/otel/tracingSDK.ts index be9a68f467..e6316f4d45 100644 --- a/packages/core/src/v3/otel/tracingSDK.ts +++ b/packages/core/src/v3/otel/tracingSDK.ts @@ -85,7 +85,6 @@ export class TracingSDK { public readonly getTracer: TracerProvider["getTracer"]; constructor(private readonly config: TracingSDKConfig) { - console.log("tracing sdk constructor called"); setLogLevel(config.diagLogLevel ?? "none"); const envResourceAttributesSerialized = getEnvVar("TRIGGER_OTEL_RESOURCE_ATTRIBUTES"); @@ -123,7 +122,7 @@ export class TracingSDK { const spanProcessors: Array = []; - //add span processor passed via config before exporters + //add span processor passed via config before adding exporters for (const spanProcessor of config.spanProcessors ?? []) { spanProcessors.push(spanProcessor); } @@ -147,8 +146,10 @@ export class TracingSDK { : new SimpleSpanProcessor(spanExporter) ) ); + const externalTraceId = idGenerator.generateTraceId(); const externalTraceContext = traceContext.getExternalTraceContext(); + for (const exporter of config.exporters ?? []) { spanProcessors.push( getEnvVar("TRIGGER_OTEL_BATCH_PROCESSING_ENABLED") === "1" From 3145c8e043de84200aba346899488c1ad5c28cae Mon Sep 17 00:00:00 2001 From: Shaik-Sirajuddin Date: Fri, 13 Feb 2026 14:30:54 +0530 Subject: [PATCH 3/3] chore: update comments --- packages/core/src/v3/config.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/core/src/v3/config.ts b/packages/core/src/v3/config.ts index e8e7b8ed4b..1df7053b93 100644 --- a/packages/core/src/v3/config.ts +++ b/packages/core/src/v3/config.ts @@ -98,8 +98,6 @@ export type TriggerConfig = { /** * Span processors to use for OpenTelemetry. This is useful if you want to add custom span processors to your tasks. * There are executed in the order passed before running exporters - * - * @see https://trigger.dev/docs/config/config-file#spanProcessors */ spanProcessors?: Array;