@temporalio/interceptors-opentelemetry 1.8.5 → 1.9.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,7 +25,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.OpenTelemetryWorkflowClientInterceptor = void 0;
27
27
  const otel = __importStar(require("@opentelemetry/api"));
28
- const otel_1 = require("@temporalio/common/lib/otel");
29
28
  const instrumentation_1 = require("../instrumentation");
30
29
  const workflow_1 = require("../workflow");
31
30
  /**
@@ -42,9 +41,9 @@ class OpenTelemetryWorkflowClientInterceptor {
42
41
  tracer: this.tracer,
43
42
  spanName: `${workflow_1.SpanName.WORKFLOW_START}${workflow_1.SPAN_DELIMITER}${input.workflowType}`,
44
43
  fn: async (span) => {
45
- const headers = await (0, otel_1.headersWithContext)(input.headers);
44
+ const headers = await (0, instrumentation_1.headersWithContext)(input.headers);
46
45
  const runId = await next({ ...input, headers });
47
- span.setAttribute(otel_1.RUN_ID_ATTR_KEY, runId);
46
+ span.setAttribute(instrumentation_1.RUN_ID_ATTR_KEY, runId);
48
47
  return runId;
49
48
  },
50
49
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAE3C,sDAAkF;AAClF,wDAAgD;AAChD,0CAAuD;AAMvD;;;;GAIG;AACH,MAAa,sCAAsC;IAGjD,YAAY,OAA4B;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAyB,EAAE,IAA8C;QACnF,OAAO,MAAM,IAAA,4BAAU,EAAC;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,GAAG,mBAAQ,CAAC,cAAc,GAAG,yBAAc,GAAG,KAAK,CAAC,YAAY,EAAE;YAC5E,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACjB,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAkB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACxD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,sBAAe,EAAE,KAAK,CAAC,CAAC;gBAC1C,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAnBD,wFAmBC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAE3C,wDAAqF;AACrF,0CAAuD;AAMvD;;;;GAIG;AACH,MAAa,sCAAsC;IAGjD,YAAY,OAA4B;QACtC,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAyB,EAAE,IAA8C;QACnF,OAAO,MAAM,IAAA,4BAAU,EAAC;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,GAAG,mBAAQ,CAAC,cAAc,GAAG,yBAAc,GAAG,KAAK,CAAC,YAAY,EAAE;YAC5E,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACjB,MAAM,OAAO,GAAG,MAAM,IAAA,oCAAkB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACxD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;gBAChD,IAAI,CAAC,YAAY,CAAC,iCAAe,EAAE,KAAK,CAAC,CAAC;gBAC1C,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF;AAnBD,wFAmBC"}
@@ -3,6 +3,19 @@
3
3
  * @module
4
4
  */
5
5
  import * as otel from '@opentelemetry/api';
6
+ import { Headers } from '@temporalio/common';
7
+ /** Default trace header for opentelemetry interceptors */
8
+ export declare const TRACE_HEADER = "_tracer-data";
9
+ /** As in workflow run id */
10
+ export declare const RUN_ID_ATTR_KEY = "run_id";
11
+ /**
12
+ * If found, return an otel Context deserialized from the provided headers
13
+ */
14
+ export declare function extractContextFromHeaders(headers: Headers): Promise<otel.Context | undefined>;
15
+ /**
16
+ * Given headers, return new headers with the current otel context inserted
17
+ */
18
+ export declare function headersWithContext(headers: Headers): Promise<Headers>;
6
19
  export interface InstrumentOptions<T> {
7
20
  tracer: otel.Tracer;
8
21
  spanName: string;
@@ -23,12 +23,39 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.instrument = void 0;
26
+ exports.instrument = exports.headersWithContext = exports.extractContextFromHeaders = exports.RUN_ID_ATTR_KEY = exports.TRACE_HEADER = void 0;
27
27
  /**
28
28
  * opentelemetry instrumentation helper functions
29
29
  * @module
30
30
  */
31
31
  const otel = __importStar(require("@opentelemetry/api"));
32
+ const common_1 = require("@temporalio/common");
33
+ /** Default trace header for opentelemetry interceptors */
34
+ exports.TRACE_HEADER = '_tracer-data';
35
+ /** As in workflow run id */
36
+ exports.RUN_ID_ATTR_KEY = 'run_id';
37
+ const payloadConverter = common_1.defaultPayloadConverter;
38
+ /**
39
+ * If found, return an otel Context deserialized from the provided headers
40
+ */
41
+ async function extractContextFromHeaders(headers) {
42
+ const encodedSpanContext = headers[exports.TRACE_HEADER];
43
+ if (encodedSpanContext === undefined) {
44
+ return undefined;
45
+ }
46
+ const textMap = payloadConverter.fromPayload(encodedSpanContext);
47
+ return otel.propagation.extract(otel.context.active(), textMap, otel.defaultTextMapGetter);
48
+ }
49
+ exports.extractContextFromHeaders = extractContextFromHeaders;
50
+ /**
51
+ * Given headers, return new headers with the current otel context inserted
52
+ */
53
+ async function headersWithContext(headers) {
54
+ const carrier = {};
55
+ otel.propagation.inject(otel.context.active(), carrier, otel.defaultTextMapSetter);
56
+ return { ...headers, [exports.TRACE_HEADER]: payloadConverter.toPayload(carrier) };
57
+ }
58
+ exports.headersWithContext = headersWithContext;
32
59
  async function wrapWithSpan(span, fn, acceptableErrors) {
33
60
  try {
34
61
  const ret = await fn(span);
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;GAGG;AACH,yDAA2C;AAE3C,KAAK,UAAU,YAAY,CACzB,IAAe,EACf,EAAmC,EACnC,gBAA4C;IAE5C,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC;KACZ;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;YAC5D,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;SAClD;QACD,MAAM,GAAG,CAAC;KACX;YAAS;QACR,IAAI,CAAC,GAAG,EAAE,CAAC;KACZ;AACH,CAAC;AASD;;GAEG;AACI,KAAK,UAAU,UAAU,CAAI,EAClC,MAAM,EACN,QAAQ,EACR,EAAE,EACF,OAAO,EACP,gBAAgB,GACK;IACrB,IAAI,OAAO,EAAE;QACX,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACjD,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAChH,CAAC;AAbD,gCAaC"}
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../src/instrumentation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;GAGG;AACH,yDAA2C;AAC3C,+CAAsE;AAEtE,0DAA0D;AAC7C,QAAA,YAAY,GAAG,cAAc,CAAC;AAC3C,4BAA4B;AACf,QAAA,eAAe,GAAG,QAAQ,CAAC;AAExC,MAAM,gBAAgB,GAAG,gCAAuB,CAAC;AAEjD;;GAEG;AACI,KAAK,UAAU,yBAAyB,CAAC,OAAgB;IAC9D,MAAM,kBAAkB,GAAG,OAAO,CAAC,oBAAY,CAAC,CAAC;IACjD,IAAI,kBAAkB,KAAK,SAAS,EAAE;QACpC,OAAO,SAAS,CAAC;KAClB;IACD,MAAM,OAAO,GAA2B,gBAAgB,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACzF,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAC7F,CAAC;AAPD,8DAOC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CAAC,OAAgB;IACvD,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnF,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,oBAAY,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;AAC7E,CAAC;AAJD,gDAIC;AAED,KAAK,UAAU,YAAY,CACzB,IAAe,EACf,EAAmC,EACnC,gBAA4C;IAE5C,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;QACjD,OAAO,GAAG,CAAC;KACZ;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,gBAAgB,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;YAC5D,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;SAClD;QACD,MAAM,GAAG,CAAC;KACX;YAAS;QACR,IAAI,CAAC,GAAG,EAAE,CAAC;KACZ;AACH,CAAC;AAUD;;GAEG;AACI,KAAK,UAAU,UAAU,CAAI,EAClC,MAAM,EACN,QAAQ,EACR,EAAE,EACF,OAAO,EACP,gBAAgB,GACK;IACrB,IAAI,OAAO,EAAE;QACX,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACjD,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAChH,CAAC;AAbD,gCAaC"}
@@ -25,7 +25,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.makeWorkflowExporter = exports.OpenTelemetryActivityInboundInterceptor = void 0;
27
27
  const otel = __importStar(require("@opentelemetry/api"));
28
- const otel_1 = require("@temporalio/common/lib/otel");
29
28
  const instrumentation_1 = require("../instrumentation");
30
29
  const workflow_1 = require("../workflow");
31
30
  /**
@@ -40,7 +39,7 @@ class OpenTelemetryActivityInboundInterceptor {
40
39
  this.tracer = options?.tracer ?? otel.trace.getTracer('@temporalio/interceptor-activity');
41
40
  }
42
41
  async execute(input, next) {
43
- const context = await (0, otel_1.extractContextFromHeaders)(input.headers);
42
+ const context = await (0, instrumentation_1.extractContextFromHeaders)(input.headers);
44
43
  const spanName = `${workflow_1.SpanName.ACTIVITY_EXECUTE}${workflow_1.SPAN_DELIMITER}${this.ctx.info.activityType}`;
45
44
  return await (0, instrumentation_1.instrument)({ tracer: this.tracer, spanName, fn: () => next(input), context });
46
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/worker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAI3C,sDAAwE;AAExE,wDAAgD;AAChD,0CAAwG;AAMxG;;;;;GAKG;AACH,MAAa,uCAAuC;IAGlD,YAA+B,GAAoB,EAAE,OAA4B;QAAlD,QAAG,GAAH,GAAG,CAAiB;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAA2B,EAAE,IAAsD;QAC/F,MAAM,OAAO,GAAG,MAAM,IAAA,gCAAyB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,GAAG,mBAAQ,CAAC,gBAAgB,GAAG,yBAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9F,OAAO,MAAM,IAAA,4BAAU,EAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7F,CAAC;CACF;AAZD,0FAYC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,QAAsB,EACtB,QAAkB;IAElB,OAAO;QACL,MAAM,EAAE;YACN,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;gBACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBACxC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBAC3C,qFAAqF;oBACrF,OAAO,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;gBACH,0CAA0C;gBAC1C,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAjBD,oDAiBC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,YAA8B,EAAE,QAAkB;IAC7E,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,YAAY,CAAC;IAC9C,OAAO;QACL,WAAW;YACT,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,QAAQ;QACR,GAAG,IAAI;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/worker/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAA2C;AAK3C,wDAA2E;AAC3E,0CAAwG;AAMxG;;;;;GAKG;AACH,MAAa,uCAAuC;IAGlD,YAA+B,GAAoB,EAAE,OAA4B;QAAlD,QAAG,GAAH,GAAG,CAAiB;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAA2B,EAAE,IAAsD;QAC/F,MAAM,OAAO,GAAG,MAAM,IAAA,2CAAyB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,GAAG,mBAAQ,CAAC,gBAAgB,GAAG,yBAAc,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9F,OAAO,MAAM,IAAA,4BAAU,EAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7F,CAAC;CACF;AAZD,0FAYC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,QAAsB,EACtB,QAAkB;IAElB,OAAO;QACL,MAAM,EAAE;YACN,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;gBACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBACxC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBAC3C,qFAAqF;oBACrF,OAAO,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;gBACH,0CAA0C;gBAC1C,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAjBD,oDAiBC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,YAA8B,EAAE,QAAkB;IAC7E,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,YAAY,CAAC;IAC9C,OAAO;QACL,WAAW;YACT,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,QAAQ;QACR,GAAG,IAAI;KACR,CAAC;AACJ,CAAC"}
@@ -31,7 +31,6 @@ exports.OpenTelemetryInternalsInterceptor = exports.OpenTelemetryOutboundInterce
31
31
  // eslint-disable-next-line import/no-unassigned-import
32
32
  require("./runtime"); // Patch the Workflow isolate runtime for opentelemetry
33
33
  const tracing = __importStar(require("@opentelemetry/sdk-trace-base"));
34
- const otel_1 = require("@temporalio/common/lib/otel");
35
34
  const workflow_1 = require("@temporalio/workflow");
36
35
  const instrumentation_1 = require("../instrumentation");
37
36
  const context_manager_1 = require("./context-manager");
@@ -63,7 +62,7 @@ class OpenTelemetryInboundInterceptor {
63
62
  this.tracer = getTracer();
64
63
  }
65
64
  async execute(input, next) {
66
- const context = await (0, otel_1.extractContextFromHeaders)(input.headers);
65
+ const context = await (0, instrumentation_1.extractContextFromHeaders)(input.headers);
67
66
  return await (0, instrumentation_1.instrument)({
68
67
  tracer: this.tracer,
69
68
  spanName: `${definitions_1.SpanName.WORKFLOW_EXECUTE}${definitions_1.SPAN_DELIMITER}${(0, workflow_1.workflowInfo)().workflowType}`,
@@ -88,7 +87,7 @@ class OpenTelemetryOutboundInterceptor {
88
87
  tracer: this.tracer,
89
88
  spanName: `${definitions_1.SpanName.ACTIVITY_START}${definitions_1.SPAN_DELIMITER}${input.activityType}`,
90
89
  fn: async () => {
91
- const headers = await (0, otel_1.headersWithContext)(input.headers);
90
+ const headers = await (0, instrumentation_1.headersWithContext)(input.headers);
92
91
  return next({
93
92
  ...input,
94
93
  headers,
@@ -101,7 +100,7 @@ class OpenTelemetryOutboundInterceptor {
101
100
  tracer: this.tracer,
102
101
  spanName: `${definitions_1.SpanName.CHILD_WORKFLOW_START}${definitions_1.SPAN_DELIMITER}${input.workflowType}`,
103
102
  fn: async () => {
104
- const headers = await (0, otel_1.headersWithContext)(input.headers);
103
+ const headers = await (0, instrumentation_1.headersWithContext)(input.headers);
105
104
  return next({
106
105
  ...input,
107
106
  headers,
@@ -114,7 +113,7 @@ class OpenTelemetryOutboundInterceptor {
114
113
  tracer: this.tracer,
115
114
  spanName: `${definitions_1.SpanName.CONTINUE_AS_NEW}${definitions_1.SPAN_DELIMITER}${input.options.workflowType}`,
116
115
  fn: async () => {
117
- const headers = await (0, otel_1.headersWithContext)(input.headers);
116
+ const headers = await (0, instrumentation_1.headersWithContext)(input.headers);
118
117
  return next({
119
118
  ...input,
120
119
  headers,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temporalio/interceptors-opentelemetry",
3
- "version": "1.8.5",
3
+ "version": "1.9.0-rc.0",
4
4
  "description": "Temporal.io SDK interceptors bundle for tracing with opentelemetry",
5
5
  "main": "lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -18,11 +18,11 @@
18
18
  "@opentelemetry/core": "^1.12.0",
19
19
  "@opentelemetry/resources": "^1.12.0",
20
20
  "@opentelemetry/sdk-trace-base": "^1.12.0",
21
- "@temporalio/activity": "1.8.5",
22
- "@temporalio/client": "1.8.5",
23
- "@temporalio/common": "1.8.5",
24
- "@temporalio/worker": "1.8.5",
25
- "@temporalio/workflow": "1.8.5"
21
+ "@temporalio/activity": "1.9.0-rc.0",
22
+ "@temporalio/client": "1.9.0-rc.0",
23
+ "@temporalio/common": "1.9.0-rc.0",
24
+ "@temporalio/worker": "1.9.0-rc.0",
25
+ "@temporalio/workflow": "1.9.0-rc.0"
26
26
  },
27
27
  "bugs": {
28
28
  "url": "https://github.com/temporalio/sdk-typescript/issues"
@@ -40,5 +40,5 @@
40
40
  "src",
41
41
  "lib"
42
42
  ],
43
- "gitHead": "1a03096ceb2d63345c3f2c190d975c2a54c7b4a5"
43
+ "gitHead": "ca3e508e62de02b2c9bb40d0d889003cebba282d"
44
44
  }
@@ -1,7 +1,6 @@
1
1
  import * as otel from '@opentelemetry/api';
2
2
  import { Next, WorkflowClientInterceptor, WorkflowStartInput } from '@temporalio/client';
3
- import { headersWithContext, RUN_ID_ATTR_KEY } from '@temporalio/common/lib/otel';
4
- import { instrument } from '../instrumentation';
3
+ import { instrument, headersWithContext, RUN_ID_ATTR_KEY } from '../instrumentation';
5
4
  import { SpanName, SPAN_DELIMITER } from '../workflow';
6
5
 
7
6
  export interface InterceptorOptions {
@@ -3,6 +3,35 @@
3
3
  * @module
4
4
  */
5
5
  import * as otel from '@opentelemetry/api';
6
+ import { Headers, defaultPayloadConverter } from '@temporalio/common';
7
+
8
+ /** Default trace header for opentelemetry interceptors */
9
+ export const TRACE_HEADER = '_tracer-data';
10
+ /** As in workflow run id */
11
+ export const RUN_ID_ATTR_KEY = 'run_id';
12
+
13
+ const payloadConverter = defaultPayloadConverter;
14
+
15
+ /**
16
+ * If found, return an otel Context deserialized from the provided headers
17
+ */
18
+ export async function extractContextFromHeaders(headers: Headers): Promise<otel.Context | undefined> {
19
+ const encodedSpanContext = headers[TRACE_HEADER];
20
+ if (encodedSpanContext === undefined) {
21
+ return undefined;
22
+ }
23
+ const textMap: Record<string, string> = payloadConverter.fromPayload(encodedSpanContext);
24
+ return otel.propagation.extract(otel.context.active(), textMap, otel.defaultTextMapGetter);
25
+ }
26
+
27
+ /**
28
+ * Given headers, return new headers with the current otel context inserted
29
+ */
30
+ export async function headersWithContext(headers: Headers): Promise<Headers> {
31
+ const carrier = {};
32
+ otel.propagation.inject(otel.context.active(), carrier, otel.defaultTextMapSetter);
33
+ return { ...headers, [TRACE_HEADER]: payloadConverter.toPayload(carrier) };
34
+ }
6
35
 
7
36
  async function wrapWithSpan<T>(
8
37
  span: otel.Span,
@@ -33,6 +62,7 @@ export interface InstrumentOptions<T> {
33
62
  context?: otel.Context;
34
63
  acceptableErrors?: (err: unknown) => boolean;
35
64
  }
65
+
36
66
  /**
37
67
  * Wraps `fn` in a span which ends when function returns or throws
38
68
  */
@@ -2,9 +2,8 @@ import * as otel from '@opentelemetry/api';
2
2
  import { Resource } from '@opentelemetry/resources';
3
3
  import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';
4
4
  import { Context as ActivityContext } from '@temporalio/activity';
5
- import { extractContextFromHeaders } from '@temporalio/common/lib/otel';
6
5
  import { ActivityExecuteInput, ActivityInboundCallsInterceptor, InjectedSink, Next } from '@temporalio/worker';
7
- import { instrument } from '../instrumentation';
6
+ import { instrument, extractContextFromHeaders } from '../instrumentation';
8
7
  import { OpenTelemetryWorkflowExporter, SerializableSpan, SpanName, SPAN_DELIMITER } from '../workflow';
9
8
 
10
9
  export interface InterceptorOptions {
@@ -3,7 +3,6 @@
3
3
  import './runtime'; // Patch the Workflow isolate runtime for opentelemetry
4
4
  import * as otel from '@opentelemetry/api';
5
5
  import * as tracing from '@opentelemetry/sdk-trace-base';
6
- import { extractContextFromHeaders, headersWithContext } from '@temporalio/common/lib/otel';
7
6
  import {
8
7
  ActivityInput,
9
8
  ContinueAsNew,
@@ -17,7 +16,7 @@ import {
17
16
  WorkflowInternalsInterceptor,
18
17
  WorkflowOutboundCallsInterceptor,
19
18
  } from '@temporalio/workflow';
20
- import { instrument } from '../instrumentation';
19
+ import { instrument, extractContextFromHeaders, headersWithContext } from '../instrumentation';
21
20
  import { ContextManager } from './context-manager';
22
21
  import { SpanName, SPAN_DELIMITER } from './definitions';
23
22
  import { SpanExporter } from './span-exporter';