@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.
- package/README.md +338 -12
- package/dist/execution-plugin.mjs +227 -50
- package/dist/execution-plugin.mjs.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/invocation-plugin.mjs +209 -105
- package/dist/invocation-plugin.mjs.map +1 -1
- package/dist/otel-execution.mjs +1 -1
- package/dist/otel-execution.mjs.map +1 -1
- package/dist/otel-invocation.mjs +2 -2
- package/dist/otel-invocation.mjs.map +1 -1
- package/dist/{global-id-generator.mjs → plugin-registration.mjs} +147 -4
- package/dist/plugin-registration.mjs.map +1 -0
- package/dist-cjs/execution-plugin.js +240 -63
- package/dist-cjs/execution-plugin.js.map +1 -1
- package/dist-cjs/index.js +10 -10
- package/dist-cjs/invocation-plugin.js +221 -117
- package/dist-cjs/invocation-plugin.js.map +1 -1
- package/dist-cjs/otel-execution.js +1 -1
- package/dist-cjs/otel-execution.js.map +1 -1
- package/dist-cjs/otel-invocation.js +2 -2
- package/dist-cjs/otel-invocation.js.map +1 -1
- package/dist-cjs/{global-id-generator.js → plugin-registration.js} +152 -2
- package/dist-cjs/plugin-registration.js.map +1 -0
- package/dist-types/execution-plugin.d.ts +25 -4
- package/dist-types/execution-plugin.d.ts.map +1 -1
- package/dist-types/execution-trace-context.d.ts +4 -2
- package/dist-types/execution-trace-context.d.ts.map +1 -1
- package/dist-types/external-completions.d.ts +11 -0
- package/dist-types/external-completions.d.ts.map +1 -0
- package/dist-types/global-sampler.d.ts +2 -0
- package/dist-types/global-sampler.d.ts.map +1 -1
- package/dist-types/invocation-clock.d.ts +9 -0
- package/dist-types/invocation-clock.d.ts.map +1 -0
- package/dist-types/invocation-plugin.d.ts +18 -2
- package/dist-types/invocation-plugin.d.ts.map +1 -1
- package/dist-types/operation-span-status.d.ts +5 -0
- package/dist-types/operation-span-status.d.ts.map +1 -0
- package/dist-types/otel-plugin-config.d.ts +8 -0
- package/dist-types/otel-plugin-config.d.ts.map +1 -1
- package/dist-types/otel-plugin-provider.d.ts +7 -0
- package/dist-types/otel-plugin-provider.d.ts.map +1 -1
- package/dist-types/plugin-registration.d.ts +2 -0
- package/dist-types/plugin-registration.d.ts.map +1 -0
- package/dist-types/propagation-metadata.d.ts +12 -0
- package/dist-types/propagation-metadata.d.ts.map +1 -0
- package/package.json +13 -9
- package/dist/global-id-generator.mjs.map +0 -1
- 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:
|
|
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
|
-
|
|
648
|
-
|
|
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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"}
|