@aws/durable-execution-sdk-js-otel 1.1.0 → 1.2.1

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.
Files changed (48) hide show
  1. package/README.md +338 -12
  2. package/dist/execution-plugin.mjs +227 -50
  3. package/dist/execution-plugin.mjs.map +1 -1
  4. package/dist/index.mjs +1 -1
  5. package/dist/invocation-plugin.mjs +209 -105
  6. package/dist/invocation-plugin.mjs.map +1 -1
  7. package/dist/otel-execution.mjs +1 -1
  8. package/dist/otel-execution.mjs.map +1 -1
  9. package/dist/otel-invocation.mjs +2 -2
  10. package/dist/otel-invocation.mjs.map +1 -1
  11. package/dist/{global-id-generator.mjs → plugin-registration.mjs} +147 -4
  12. package/dist/plugin-registration.mjs.map +1 -0
  13. package/dist-cjs/execution-plugin.js +240 -63
  14. package/dist-cjs/execution-plugin.js.map +1 -1
  15. package/dist-cjs/index.js +10 -10
  16. package/dist-cjs/invocation-plugin.js +221 -117
  17. package/dist-cjs/invocation-plugin.js.map +1 -1
  18. package/dist-cjs/otel-execution.js +1 -1
  19. package/dist-cjs/otel-execution.js.map +1 -1
  20. package/dist-cjs/otel-invocation.js +2 -2
  21. package/dist-cjs/otel-invocation.js.map +1 -1
  22. package/dist-cjs/{global-id-generator.js → plugin-registration.js} +152 -2
  23. package/dist-cjs/plugin-registration.js.map +1 -0
  24. package/dist-types/execution-plugin.d.ts +25 -4
  25. package/dist-types/execution-plugin.d.ts.map +1 -1
  26. package/dist-types/execution-trace-context.d.ts +4 -2
  27. package/dist-types/execution-trace-context.d.ts.map +1 -1
  28. package/dist-types/external-completions.d.ts +11 -0
  29. package/dist-types/external-completions.d.ts.map +1 -0
  30. package/dist-types/global-sampler.d.ts +2 -0
  31. package/dist-types/global-sampler.d.ts.map +1 -1
  32. package/dist-types/invocation-clock.d.ts +9 -0
  33. package/dist-types/invocation-clock.d.ts.map +1 -0
  34. package/dist-types/invocation-plugin.d.ts +18 -2
  35. package/dist-types/invocation-plugin.d.ts.map +1 -1
  36. package/dist-types/operation-span-status.d.ts +5 -0
  37. package/dist-types/operation-span-status.d.ts.map +1 -0
  38. package/dist-types/otel-plugin-config.d.ts +8 -0
  39. package/dist-types/otel-plugin-config.d.ts.map +1 -1
  40. package/dist-types/otel-plugin-provider.d.ts +7 -0
  41. package/dist-types/otel-plugin-provider.d.ts.map +1 -1
  42. package/dist-types/plugin-registration.d.ts +2 -0
  43. package/dist-types/plugin-registration.d.ts.map +1 -0
  44. package/dist-types/propagation-metadata.d.ts +12 -0
  45. package/dist-types/propagation-metadata.d.ts.map +1 -0
  46. package/package.json +13 -9
  47. package/dist/global-id-generator.mjs.map +0 -1
  48. package/dist-cjs/global-id-generator.js.map +0 -1
@@ -1,8 +1,24 @@
1
- import { TraceFlags, ROOT_CONTEXT, SpanKind, trace } from '@opentelemetry/api';
1
+ import { SpanStatusCode, TraceFlags, ROOT_CONTEXT, SpanKind, trace } from '@opentelemetry/api';
2
2
  import { RandomIdGenerator, SamplingDecision } from '@opentelemetry/sdk-trace-node';
3
3
  import { AsyncLocalStorage } from 'node:async_hooks';
4
4
  import { createHash } from 'node:crypto';
5
5
 
6
+ /** Failure status remains observable even when no exception details exist. */
7
+ function setOperationSpanStatus(span, info) {
8
+ if (info.error ||
9
+ info.status === "FAILED" ||
10
+ info.status === "TIMED_OUT" ||
11
+ info.status === "STOPPED") {
12
+ span.setStatus({
13
+ code: SpanStatusCode.ERROR,
14
+ message: info.error?.message ?? info.status,
15
+ });
16
+ }
17
+ else if (info.status === "SUCCEEDED") {
18
+ span.setStatus({ code: SpanStatusCode.OK });
19
+ }
20
+ }
21
+
6
22
  /**
7
23
  * An OpenTelemetry IdGenerator with execution-scoped deterministic overrides.
8
24
  *
@@ -413,6 +429,17 @@ function tryInstallDurableSampler(tracer) {
413
429
  return undefined;
414
430
  }
415
431
  }
432
+ /** Whether this tracer still uses the bridge that controls SDK span decisions. */
433
+ function isDurableSamplerInstalled(tracer, sampler) {
434
+ if (!sampler)
435
+ return false;
436
+ try {
437
+ return Reflect.get(tracer, SAMPLER_FIELD) === sampler;
438
+ }
439
+ catch {
440
+ return false;
441
+ }
442
+ }
416
443
  function getConfiguredSampler(tracer) {
417
444
  try {
418
445
  const sampler = Reflect.get(tracer, SAMPLER_FIELD);
@@ -532,9 +559,15 @@ function resolveExecutionTraceContext(extracted, canonical, executionArn, rootSa
532
559
  const samplingContext = hasValidTraceId(extracted) ? extracted : undefined;
533
560
  const decision = explicitDecision(samplingContext, rootSamplingDecision);
534
561
  const flags = traceFlagsFromDecision(decision);
562
+ // This synthetic root is created and exported by one durable execution,
563
+ // so its span identity must remain owned by that execution. Multiple
564
+ // executions may legitimately share a propagated trace ID, but reusing one
565
+ // span ID across independently timed/resource-scoped roots would create
566
+ // conflicting OpenTelemetry span identities.
567
+ const syntheticRootSpanId = deriveExecutionRootSpanId(executionArn);
535
568
  const syntheticRoot = {
536
569
  traceId: canonical,
537
- spanId: deriveExecutionRootSpanId(executionArn),
570
+ spanId: syntheticRootSpanId,
538
571
  traceFlags: flags,
539
572
  isRemote: false,
540
573
  };
@@ -585,6 +618,13 @@ function rootSamplingDecision(tracer, traceId, spanName, attributes) {
585
618
  }
586
619
  }
587
620
 
621
+ function resolveFlushTimeoutMillis(value) {
622
+ const timeout = value ?? 1000;
623
+ if (!Number.isFinite(timeout) || timeout <= 0 || timeout > 2_147_483_647) {
624
+ throw new RangeError("flushTimeoutMillis must be positive and no greater than 2147483647");
625
+ }
626
+ return timeout;
627
+ }
588
628
  /**
589
629
  * Resolves an application-owned provider factory or the globally registered
590
630
  * provider. Exporters, sampling, resources, propagators, instrumentation, and
@@ -605,6 +645,40 @@ function createTracerProvider(config, idGenerator) {
605
645
  usesGlobalProvider: true,
606
646
  };
607
647
  }
648
+ /**
649
+ * Flushes an application-owned provider without shutting it down.
650
+ * The API global provider is a proxy; use its one public delegate when it does
651
+ * not itself expose forceFlush. Explicit factory providers are not unwrapped.
652
+ */
653
+ async function flushTracerProvider(provider, usesGlobalProvider, timeoutMillis = 1000) {
654
+ let target = provider;
655
+ if (usesGlobalProvider && !("forceFlush" in target)) {
656
+ const proxy = target;
657
+ if (typeof proxy.getDelegate === "function") {
658
+ target = proxy.getDelegate();
659
+ }
660
+ }
661
+ if ("forceFlush" in target) {
662
+ if (timeoutMillis <= 0) {
663
+ throw new Error("OpenTelemetry invocation flush budget exhausted");
664
+ }
665
+ let timer;
666
+ try {
667
+ // Start the timer before calling an application-owned provider. Its
668
+ // synchronous work cannot be preempted, but must not grant a fresh wait.
669
+ const expired = new Promise((_resolve, reject) => {
670
+ timer = setTimeout(() => reject(new Error("OpenTelemetry invocation flush budget exhausted")), timeoutMillis);
671
+ });
672
+ await Promise.race([
673
+ target.forceFlush(),
674
+ expired,
675
+ ]);
676
+ }
677
+ finally {
678
+ clearTimeout(timer);
679
+ }
680
+ }
681
+ }
608
682
 
609
683
  const ID_GENERATOR_FIELD = "_idGenerator";
610
684
  function isIdGenerator(value) {
@@ -644,5 +718,74 @@ function tryInstallGlobalIdGenerator(tracer) {
644
718
  }
645
719
  }
646
720
 
647
- export { DeterministicIdGenerator as D, deriveExecutionTraceId as a, deriveSpanIdFromOperationId as b, deriveTraceIdFromArn as c, deriveExecutionRootSpanId as d, deriveTraceIdFromXRayRoot as e, deriveWorkflowSpanId as f, createTracerProvider as g, tryInstallGlobalIdGenerator as h, canonicalTraceId as i, rootSamplingDecision as j, resolveExecutionTraceContext as r, tryInstallDurableSampler as t, w3cClientContextExtractor as w, xRayContextExtractor as x };
648
- //# sourceMappingURL=global-id-generator.mjs.map
721
+ function isExternalOperation(info) {
722
+ return (info.type === "WAIT" ||
723
+ info.type === "INVOKE" ||
724
+ info.type === "CHAINED_INVOKE" ||
725
+ info.type === "CALLBACK");
726
+ }
727
+ /** Invocation-local bookkeeping; no export acknowledgement is persisted. */
728
+ class ExternalCompletions {
729
+ pending = new Map();
730
+ exported = new Set();
731
+ observe(updates = {}, operations = {}) {
732
+ for (const info of Object.values(updates)) {
733
+ if (info.id &&
734
+ isExternalOperation(info) &&
735
+ (info.status === "SUCCEEDED" ||
736
+ info.status === "FAILED" ||
737
+ info.status === "TIMED_OUT" ||
738
+ info.status === "STOPPED" ||
739
+ info.status === "CANCELLED") &&
740
+ !this.exported.has(info.id)) {
741
+ const parent = info.parentId ? operations[info.parentId] : undefined;
742
+ // waitForCallback's derived inner name is hook-only, not persisted.
743
+ // A skipped branch cannot backfill it before the deferred export.
744
+ const completion = info.type === "CALLBACK" &&
745
+ info.name === undefined &&
746
+ parent?.type === "CONTEXT" &&
747
+ parent.subType === "WaitForCallback" &&
748
+ parent.name
749
+ ? { ...info, name: `${parent.name}-callback` }
750
+ : info;
751
+ this.pending.set(info.id, completion);
752
+ }
753
+ }
754
+ }
755
+ shouldSkip(info) {
756
+ // Replay describes the SDK's initial state, not whether a completion that
757
+ // arrived later in a checkpoint response has already been exported.
758
+ return (isExternalOperation(info) &&
759
+ (this.exported.has(info.id) ||
760
+ (info.isReplay && !this.pending.has(info.id))));
761
+ }
762
+ markExported(info) {
763
+ if (isExternalOperation(info)) {
764
+ this.exported.add(info.id);
765
+ this.pending.delete(info.id);
766
+ }
767
+ }
768
+ clear() {
769
+ this.pending.clear();
770
+ this.exported.clear();
771
+ }
772
+ }
773
+
774
+ /** Encodes the already resolved execution state without creating a span. */
775
+ function createPropagationMetadata(input, executionArn, traceId, traceFlags) {
776
+ if (input.executionArn !== executionArn || !isValidTraceId(traceId))
777
+ return undefined;
778
+ const spanId = deriveSpanIdFromOperationId(input.operationId, executionArn);
779
+ if (!isValidSpanId(spanId))
780
+ return undefined;
781
+ return Object.freeze({
782
+ xAmznTraceId: `Root=1-${traceId.slice(0, 8)}-${traceId.slice(8)};Parent=${spanId};Sampled=${traceFlags & 1 ? "1" : "0"}`,
783
+ });
784
+ }
785
+
786
+ // Match the SDK-owned opt-in protocol without a runtime import of the core SDK.
787
+ // A local symbol declaration also keeps old-core TypeScript consumers compatible.
788
+ const PLUGIN_REGISTRATION = Symbol.for("aws.lambda.durable.instrumentation.plugin-registration");
789
+
790
+ export { DeterministicIdGenerator as D, ExternalCompletions as E, PLUGIN_REGISTRATION as P, deriveExecutionTraceId as a, deriveSpanIdFromOperationId as b, deriveTraceIdFromArn as c, deriveExecutionRootSpanId as d, deriveTraceIdFromXRayRoot as e, deriveWorkflowSpanId as f, createTracerProvider as g, tryInstallGlobalIdGenerator as h, canonicalTraceId as i, resolveExecutionTraceContext as j, isDurableSamplerInstalled as k, createPropagationMetadata as l, flushTracerProvider as m, rootSamplingDecision as n, resolveFlushTimeoutMillis as r, setOperationSpanStatus as s, tryInstallDurableSampler as t, w3cClientContextExtractor as w, xRayContextExtractor as x };
791
+ //# sourceMappingURL=plugin-registration.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-registration.mjs","sources":["../src/operation-span-status.ts","../src/deterministic-id-generator.ts","../src/context-extractors.ts","../src/global-sampler.ts","../src/execution-trace-context.ts","../src/otel-plugin-provider.ts","../src/global-id-generator.ts","../src/external-completions.ts","../src/propagation-metadata.ts","../src/plugin-registration.ts"],"names":[],"mappings":"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"}