diff --git a/src/config.ts b/src/config.ts index 171e95787..cba72f973 100644 --- a/src/config.ts +++ b/src/config.ts @@ -213,6 +213,13 @@ export interface Config { */ tracePolicy?: TracePolicy; + /** + * If specified, the Trace Agent will use this context header propagation + * implementation instead of @opencensus/propagation-stackdriver, the default + * trace context header format. + */ + propagation?: OpenCensusPropagation; + /** * Buffer the captured traces for `flushDelaySeconds` seconds before * publishing to the Stackdriver Trace API, unless the buffer fills up first. diff --git a/src/index.ts b/src/index.ts index 3f1761707..e7ece4e57 100644 --- a/src/index.ts +++ b/src/index.ts @@ -146,7 +146,10 @@ function initConfig(userConfig: Forceable): Forceable { contextHeaderBehavior: mergedConfig.contextHeaderBehavior as TraceContextHeaderBehavior }, - overrides: {tracePolicy: mergedConfig.tracePolicy} + overrides: { + tracePolicy: mergedConfig.tracePolicy, + propagation: mergedConfig.propagation + } }; } diff --git a/src/tracing.ts b/src/tracing.ts index d85017bd9..0b95a4978 100644 --- a/src/tracing.ts +++ b/src/tracing.ts @@ -18,7 +18,7 @@ import {v1 as stackdriverPropagation} from '@opencensus/propagation-stackdriver' import * as path from 'path'; import {cls, TraceCLSConfig} from './cls'; -import {TracePolicy} from './config'; +import {OpenCensusPropagation, TracePolicy} from './config'; import {LEVELS, Logger} from './logger'; import {StackdriverTracer} from './trace-api'; import {pluginLoader, PluginLoaderConfig} from './trace-plugin-loader'; @@ -31,7 +31,8 @@ export type TopLevelConfig = { writerConfig: TraceWriterConfig; pluginLoaderConfig: PluginLoaderConfig; tracePolicyConfig: TracePolicyConfig; - overrides: {tracePolicy?: TracePolicy;}; + overrides: + {tracePolicy?: TracePolicy; propagation?: OpenCensusPropagation;}; }|{ enabled: false; }; @@ -121,7 +122,8 @@ export class Tracing implements Component { const tracePolicy = this.config.overrides.tracePolicy || new BuiltinTracePolicy(this.config.tracePolicyConfig); - const propagation = stackdriverPropagation; + const propagation = + this.config.overrides.propagation || stackdriverPropagation; const tracerComponents = {logger: this.logger, tracePolicy, propagation};