@aws/durable-execution-sdk-js-otel 0.1.0 → 1.0.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.
- package/README.md +494 -176
- package/dist/execution-plugin.mjs +539 -0
- package/dist/execution-plugin.mjs.map +1 -0
- package/dist/global-id-generator.mjs +622 -0
- package/dist/global-id-generator.mjs.map +1 -0
- package/dist/index.mjs +8 -516
- package/dist/index.mjs.map +1 -1
- package/dist/invocation-plugin.mjs +661 -0
- package/dist/invocation-plugin.mjs.map +1 -0
- package/dist/otel-execution.mjs +15 -0
- package/dist/otel-execution.mjs.map +1 -0
- package/dist/otel-invocation.mjs +16 -0
- package/dist/otel-invocation.mjs.map +1 -0
- package/dist-cjs/execution-plugin.js +541 -0
- package/dist-cjs/execution-plugin.js.map +1 -0
- package/dist-cjs/global-id-generator.js +637 -0
- package/dist-cjs/global-id-generator.js.map +1 -0
- package/dist-cjs/index.js +18 -519
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/invocation-plugin.js +663 -0
- package/dist-cjs/invocation-plugin.js.map +1 -0
- package/dist-cjs/otel-execution.js +17 -0
- package/dist-cjs/otel-execution.js.map +1 -0
- package/dist-cjs/otel-invocation.js +18 -0
- package/dist-cjs/otel-invocation.js.map +1 -0
- package/package.json +26 -15
- package/dist-types/context-extractors.d.ts +0 -43
- package/dist-types/context-extractors.d.ts.map +0 -1
- package/dist-types/deterministic-id-generator.d.ts +0 -64
- package/dist-types/deterministic-id-generator.d.ts.map +0 -1
- package/dist-types/index.d.ts +0 -6
- package/dist-types/index.d.ts.map +0 -1
- package/dist-types/plugin.d.ts +0 -46
- package/dist-types/plugin.d.ts.map +0 -1
- package/dist-types/tsconfig.build.tsbuildinfo +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation-plugin.mjs","sources":["../src/invocation-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { E as ExecutionOtelPlugin } from './execution-plugin.mjs';
|
|
2
|
+
import '@opentelemetry/api';
|
|
3
|
+
import './global-id-generator.mjs';
|
|
4
|
+
import '@opentelemetry/sdk-trace-node';
|
|
5
|
+
import 'node:async_hooks';
|
|
6
|
+
import 'node:crypto';
|
|
7
|
+
|
|
8
|
+
const durableExecutionPluginProvider = {
|
|
9
|
+
pluginApiVersion: 1,
|
|
10
|
+
pluginType: ExecutionOtelPlugin,
|
|
11
|
+
createPlugin: () => new ExecutionOtelPlugin(),
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export { durableExecutionPluginProvider };
|
|
15
|
+
//# sourceMappingURL=otel-execution.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-execution.mjs","sources":["../src/execution-plugin-provider.ts"],"names":[],"mappings":";;;;;;;AAGO,MAAM,8BAA8B,GAAG;AAC5C,IAAA,gBAAgB,EAAE,CAAC;AACnB,IAAA,UAAU,EAAE,mBAAmB;AAC/B,IAAA,YAAY,EAAE,MAAM,IAAI,mBAAmB,EAAE;;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { I as InvocationOtelPlugin } from './invocation-plugin.mjs';
|
|
2
|
+
import '@opentelemetry/api';
|
|
3
|
+
import '@opentelemetry/core';
|
|
4
|
+
import '@opentelemetry/sdk-trace-node';
|
|
5
|
+
import './global-id-generator.mjs';
|
|
6
|
+
import 'node:async_hooks';
|
|
7
|
+
import 'node:crypto';
|
|
8
|
+
|
|
9
|
+
const durableExecutionPluginProvider = {
|
|
10
|
+
pluginApiVersion: 1,
|
|
11
|
+
pluginType: InvocationOtelPlugin,
|
|
12
|
+
createPlugin: () => new InvocationOtelPlugin(),
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { durableExecutionPluginProvider };
|
|
16
|
+
//# sourceMappingURL=otel-invocation.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel-invocation.mjs","sources":["../src/invocation-plugin-provider.ts"],"names":[],"mappings":";;;;;;;;AAGO,MAAM,8BAA8B,GAAG;AAC5C,IAAA,gBAAgB,EAAE,CAAC;AACnB,IAAA,UAAU,EAAE,oBAAoB;AAChC,IAAA,YAAY,EAAE,MAAM,IAAI,oBAAoB,EAAE;;;;;"}
|
|
@@ -0,0 +1,541 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var api = require('@opentelemetry/api');
|
|
4
|
+
var globalIdGenerator = require('./global-id-generator.js');
|
|
5
|
+
var sdkTraceNode = require('@opentelemetry/sdk-trace-node');
|
|
6
|
+
|
|
7
|
+
const DEFAULT_INSTRUMENTATION_NAME = "aws-durable-execution-sdk-js";
|
|
8
|
+
/**
|
|
9
|
+
* OpenTelemetry instrumentation plugin for durable executions.
|
|
10
|
+
*
|
|
11
|
+
* Implements the DurableInstrumentationPlugin interface. The Workflow span joins
|
|
12
|
+
* the execution trace by parenting onto the resolved execution ancestor (a
|
|
13
|
+
* propagated remote parent or a synthetic execution root), so the whole
|
|
14
|
+
* execution shares one trace. Operation spans parent onto the Workflow span and
|
|
15
|
+
* the per-invocation Invocation span is a correlation sibling (linked from, not
|
|
16
|
+
* a parent of, the operation spans). Both the Workflow span and each operation
|
|
17
|
+
* span are deferred: their identity is carried as a non-recording context and
|
|
18
|
+
* the single recording span is created and ended together at terminal /
|
|
19
|
+
* onOperationEnd, so nothing is left un-ended across invocations (issue #831).
|
|
20
|
+
*/
|
|
21
|
+
class ExecutionOtelPlugin {
|
|
22
|
+
// Shared utilities (reused from existing package)
|
|
23
|
+
idGenerator;
|
|
24
|
+
contextExtractor;
|
|
25
|
+
// TracerProvider (global or application-owned)
|
|
26
|
+
tracerProvider;
|
|
27
|
+
tracer;
|
|
28
|
+
instrumentationName;
|
|
29
|
+
// Non-recording context carrying the deterministic Workflow identity; the real
|
|
30
|
+
// span is created+ended once, at the terminal invocation (issue #831).
|
|
31
|
+
workflowSpan;
|
|
32
|
+
invocationSpan;
|
|
33
|
+
// Holds only recording ATTEMPT spans; operation spans are deferred (see
|
|
34
|
+
// operationContexts), never recording between start and end.
|
|
35
|
+
spanMap;
|
|
36
|
+
// Deterministic non-recording placeholders for in-flight operations; the real
|
|
37
|
+
// span is created+ended once in onOperationEnd. Children/attempts parent onto it.
|
|
38
|
+
operationContexts;
|
|
39
|
+
// Naming/timing captured at start, reused when onOperationEnd omits them.
|
|
40
|
+
operationStarts;
|
|
41
|
+
executionArn;
|
|
42
|
+
executionTraceId;
|
|
43
|
+
executionTraceFlags = 0;
|
|
44
|
+
executionSamplingDecision;
|
|
45
|
+
// The execution ancestor the terminal Workflow span parents onto, and the
|
|
46
|
+
// backend execution start used to backdate it — both captured at invocation
|
|
47
|
+
// start and reused when the real span is created at terminal.
|
|
48
|
+
executionAncestor;
|
|
49
|
+
executionStartTimestamp;
|
|
50
|
+
usesGlobalProvider;
|
|
51
|
+
globalIdGeneratorInstalled;
|
|
52
|
+
durableSampler;
|
|
53
|
+
tracingEnabled = false;
|
|
54
|
+
// Workflow span name (configurable)
|
|
55
|
+
workflowSpanName;
|
|
56
|
+
// Whether enrichLogContext() contributes trace context to log records
|
|
57
|
+
enrichLogger;
|
|
58
|
+
constructor(config) {
|
|
59
|
+
const instrumentationName = config?.instrumentationName ?? DEFAULT_INSTRUMENTATION_NAME;
|
|
60
|
+
this.instrumentationName = instrumentationName;
|
|
61
|
+
this.idGenerator = new globalIdGenerator.DeterministicIdGenerator();
|
|
62
|
+
this.contextExtractor = config?.contextExtractor ?? globalIdGenerator.xRayContextExtractor;
|
|
63
|
+
this.workflowSpanName = config?.workflowSpanName ?? "Workflow";
|
|
64
|
+
this.enrichLogger = config?.enrichLogger ?? true;
|
|
65
|
+
const { tracerProvider, usesGlobalProvider } = globalIdGenerator.createTracerProvider(config, this.idGenerator);
|
|
66
|
+
this.tracerProvider = tracerProvider;
|
|
67
|
+
this.usesGlobalProvider = usesGlobalProvider;
|
|
68
|
+
this.tracer = this.tracerProvider.getTracer(instrumentationName);
|
|
69
|
+
this.durableSampler = globalIdGenerator.tryInstallDurableSampler(this.tracer);
|
|
70
|
+
this.globalIdGeneratorInstalled = !this.usesGlobalProvider;
|
|
71
|
+
if (this.usesGlobalProvider) {
|
|
72
|
+
const installedIdGenerator = globalIdGenerator.tryInstallGlobalIdGenerator(this.tracer);
|
|
73
|
+
if (installedIdGenerator) {
|
|
74
|
+
this.idGenerator = installedIdGenerator;
|
|
75
|
+
this.globalIdGeneratorInstalled = true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Initialize per-invocation state
|
|
79
|
+
this.spanMap = new Map();
|
|
80
|
+
this.operationContexts = new Map();
|
|
81
|
+
this.operationStarts = new Map();
|
|
82
|
+
this.executionArn = "";
|
|
83
|
+
this.executionTraceId = "";
|
|
84
|
+
this.executionSamplingDecision = sdkTraceNode.SamplingDecision.NOT_RECORD;
|
|
85
|
+
}
|
|
86
|
+
async onInvocationStart(info) {
|
|
87
|
+
this.resetInvocationState();
|
|
88
|
+
this.tracingEnabled = this.ensureGlobalIdGeneratorInstalled();
|
|
89
|
+
if (!this.tracingEnabled) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
// 1. Store the execution ARN
|
|
93
|
+
this.executionArn = info.executionArn;
|
|
94
|
+
// 2. Extract trace context via context extractor (same as InvocationOtelPlugin)
|
|
95
|
+
const extractedContext = this.contextExtractor(info);
|
|
96
|
+
// 3. Resolve the one execution ancestor both spans parent onto, so they
|
|
97
|
+
// share a trace and a sampling decision. The canonical trace ID is the
|
|
98
|
+
// propagated remote trace when valid, else one derived from the ARN and
|
|
99
|
+
// start time. The execution ancestor is a complete remote parent, else a
|
|
100
|
+
// synthetic execution root. A live ambient span is not used as the ancestor
|
|
101
|
+
// (its trace is not stable across reinvocations).
|
|
102
|
+
const canonical = globalIdGenerator.canonicalTraceId(extractedContext, info.executionArn, info.executionStartTimestamp);
|
|
103
|
+
const execTraceContext = globalIdGenerator.resolveExecutionTraceContext(extractedContext, canonical, info.executionArn, () => globalIdGenerator.rootSamplingDecision(this.tracer, canonical, this.workflowSpanName, {
|
|
104
|
+
"durable.execution.arn": info.executionArn,
|
|
105
|
+
}));
|
|
106
|
+
this.executionTraceId = canonical;
|
|
107
|
+
this.executionTraceFlags = execTraceContext.traceFlags;
|
|
108
|
+
this.executionSamplingDecision = execTraceContext.samplingDecision;
|
|
109
|
+
// 4. Derive the workflow span ID from execution ARN
|
|
110
|
+
const workflowSpanId = globalIdGenerator.deriveWorkflowSpanId(info.executionArn);
|
|
111
|
+
// 5. Resolve the Workflow_Span identity as a NON-RECORDING context. A whole
|
|
112
|
+
// execution spans many invocations, so only the terminal one can complete
|
|
113
|
+
// the real span; carrying a real recording span across invocations would
|
|
114
|
+
// leak it un-ended (issue #831), and ending one per invocation would export
|
|
115
|
+
// duplicate (traceId, spanId). Operations parent onto this non-recording
|
|
116
|
+
// context (a valid parent that stamps the right traceId/parentSpanId on its
|
|
117
|
+
// children); the single real span is created and ended once, at the terminal
|
|
118
|
+
// invocation (see onInvocationEnd), parented onto the execution ancestor. It
|
|
119
|
+
// carries the execution sampled bit so a parent-based sampler stays
|
|
120
|
+
// consistent with the eventual root.
|
|
121
|
+
this.executionAncestor = execTraceContext.executionAncestor;
|
|
122
|
+
this.executionStartTimestamp =
|
|
123
|
+
info.executionStartTimestamp ??
|
|
124
|
+
this.executionStartTimestamp ??
|
|
125
|
+
new Date();
|
|
126
|
+
this.workflowSpan = api.trace.wrapSpanContext({
|
|
127
|
+
traceId: this.executionTraceId,
|
|
128
|
+
spanId: workflowSpanId,
|
|
129
|
+
traceFlags: execTraceContext.traceFlags,
|
|
130
|
+
isRemote: false,
|
|
131
|
+
});
|
|
132
|
+
// 6. Create Invocation_Span parented onto the same-trace ambient span when
|
|
133
|
+
// available, otherwise onto the execution ancestor so it stays within the
|
|
134
|
+
// execution trace. Provider ownership must not change trace topology.
|
|
135
|
+
const invocationParentContext = this.invocationParentContext(execTraceContext.executionAncestor, canonical);
|
|
136
|
+
const invocationAttributes = {
|
|
137
|
+
"durable.execution.arn": info.executionArn,
|
|
138
|
+
"durable.invocation.first": info.isFirstInvocation,
|
|
139
|
+
};
|
|
140
|
+
if (!this.usesGlobalProvider) {
|
|
141
|
+
// Set cloud.resource_id from Lambda environment variables
|
|
142
|
+
const functionName = process.env.AWS_LAMBDA_FUNCTION_NAME;
|
|
143
|
+
if (functionName) {
|
|
144
|
+
const region = process.env.AWS_REGION;
|
|
145
|
+
// Extract account ID from execution ARN (format: arn:aws:states:{region}:{account}:execution:{sm}:{exec})
|
|
146
|
+
const arnParts = info.executionArn.split(":");
|
|
147
|
+
const accountId = arnParts.length >= 5 ? arnParts[4] : undefined;
|
|
148
|
+
if (region && accountId) {
|
|
149
|
+
const version = process.env.AWS_LAMBDA_FUNCTION_VERSION;
|
|
150
|
+
const resourceId = `arn:aws:lambda:${region}:${accountId}:function:${functionName}${version ? ":" + version : ""}`;
|
|
151
|
+
invocationAttributes["cloud.resource_id"] = resourceId;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
invocationAttributes["cloud.resource_id"] = functionName;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Set faas.max_memory if available
|
|
158
|
+
const memorySize = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE;
|
|
159
|
+
if (memorySize) {
|
|
160
|
+
const parsed = parseInt(memorySize, 10);
|
|
161
|
+
if (!isNaN(parsed)) {
|
|
162
|
+
invocationAttributes["faas.max_memory"] = parsed;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
this.invocationSpan = this.startSpan("Invocation", {
|
|
167
|
+
kind: api.SpanKind.INTERNAL,
|
|
168
|
+
attributes: invocationAttributes,
|
|
169
|
+
}, invocationParentContext);
|
|
170
|
+
}
|
|
171
|
+
wrapInvocation(_info, fn) {
|
|
172
|
+
if (!this.tracingEnabled || !this.workflowSpan) {
|
|
173
|
+
return fn();
|
|
174
|
+
}
|
|
175
|
+
return api.context.with(api.trace.setSpan(api.context.active(), this.workflowSpan), fn);
|
|
176
|
+
}
|
|
177
|
+
async onInvocationEnd(info) {
|
|
178
|
+
if (!this.tracingEnabled) {
|
|
179
|
+
this.resetInvocationState();
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
// 1. Always end and export Invocation_Span
|
|
183
|
+
if (this.invocationSpan) {
|
|
184
|
+
this.invocationSpan.setAttribute("durable.invocation.status", info.status);
|
|
185
|
+
// Map PluginInvocationStatus to span status:
|
|
186
|
+
// FAILED -> ERROR
|
|
187
|
+
// SUCCEEDED / PENDING -> OK (PENDING is a normal suspension, not an error)
|
|
188
|
+
// RETRYING -> UNSET. The plugin interface cannot distinguish a STOPPED or
|
|
189
|
+
// TIMED_OUT invocation from a RETRYING one at onInvocationEnd, so RETRYING
|
|
190
|
+
// is intentionally left UNSET rather than reported as ERROR.
|
|
191
|
+
if (info.status === "FAILED") {
|
|
192
|
+
this.invocationSpan.setStatus({
|
|
193
|
+
code: api.SpanStatusCode.ERROR,
|
|
194
|
+
message: info.executionError?.message ?? "Execution failed",
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
else if (info.status === "SUCCEEDED" || info.status === "PENDING") {
|
|
198
|
+
this.invocationSpan.setStatus({ code: api.SpanStatusCode.OK });
|
|
199
|
+
}
|
|
200
|
+
// RETRYING: leave status UNSET (default)
|
|
201
|
+
this.invocationSpan.end();
|
|
202
|
+
}
|
|
203
|
+
// 2. Terminal invocation ONLY: create and end the one real Workflow_Span,
|
|
204
|
+
// so a single span ever claims the deterministic (traceId, spanId) and no
|
|
205
|
+
// span is left un-ended on a non-terminal invocation (issue #831). It is
|
|
206
|
+
// parented onto the execution ancestor (the join-trace model) and backdated
|
|
207
|
+
// to the execution start captured at invocation start. Skipped when the
|
|
208
|
+
// execution decision was not sampled, so a dropped execution does not export
|
|
209
|
+
// a lone root. PluginInvocationStatus collapses TIMED_OUT/STOPPED into
|
|
210
|
+
// FAILED -> ERROR.
|
|
211
|
+
if (this.executionSamplingDecision === sdkTraceNode.SamplingDecision.RECORD_AND_SAMPLED &&
|
|
212
|
+
this.executionAncestor &&
|
|
213
|
+
(info.status === "SUCCEEDED" || info.status === "FAILED")) {
|
|
214
|
+
const workflowSpanId = globalIdGenerator.deriveWorkflowSpanId(this.executionArn);
|
|
215
|
+
const executionAncestorContext = api.trace.setSpanContext(api.ROOT_CONTEXT, this.executionAncestor);
|
|
216
|
+
const workflowSpan = this.idGenerator.withIds({ spanId: workflowSpanId }, () => this.startSpan(this.workflowSpanName, {
|
|
217
|
+
kind: api.SpanKind.INTERNAL,
|
|
218
|
+
attributes: {
|
|
219
|
+
"durable.execution.arn": this.executionArn,
|
|
220
|
+
},
|
|
221
|
+
startTime: this.executionStartTimestamp ?? new Date(),
|
|
222
|
+
}, executionAncestorContext));
|
|
223
|
+
workflowSpan.setAttribute("durable.execution.status", info.status);
|
|
224
|
+
if (info.status === "FAILED") {
|
|
225
|
+
workflowSpan.setStatus({
|
|
226
|
+
code: api.SpanStatusCode.ERROR,
|
|
227
|
+
message: info.executionError?.message ?? "Execution failed",
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
workflowSpan.setStatus({ code: api.SpanStatusCode.OK });
|
|
232
|
+
}
|
|
233
|
+
workflowSpan.end();
|
|
234
|
+
}
|
|
235
|
+
// Non-terminal (PENDING/RETRYING): no real Workflow_Span is created, so
|
|
236
|
+
// nothing to end — the identity was only ever a non-recording context.
|
|
237
|
+
// 3. End any attempt span still open (safeguard against a leak on a
|
|
238
|
+
// non-terminal invocation, issue #831). Operation placeholders have no
|
|
239
|
+
// recording span and are dropped in resetInvocationState.
|
|
240
|
+
for (const span of this.spanMap.values()) {
|
|
241
|
+
if (span.isRecording()) {
|
|
242
|
+
span.end();
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// 4. Always flush TracerProvider at invocation boundaries
|
|
246
|
+
if ("forceFlush" in this.tracerProvider) {
|
|
247
|
+
try {
|
|
248
|
+
await this.tracerProvider.forceFlush();
|
|
249
|
+
}
|
|
250
|
+
catch (e) {
|
|
251
|
+
console.error("[ExecutionOtelPlugin] forceFlush failed:", e instanceof Error ? e.message : e);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// 5. Clear per-invocation state
|
|
255
|
+
this.resetInvocationState();
|
|
256
|
+
}
|
|
257
|
+
ensureGlobalIdGeneratorInstalled() {
|
|
258
|
+
if (!this.usesGlobalProvider || this.globalIdGeneratorInstalled) {
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
// A plugin constructed before zero-code instrumentation is registered sees
|
|
262
|
+
// a ProxyTracer without the SDK's ID generator. Resolve the global provider
|
|
263
|
+
// again at invocation start, after preload initialization has completed.
|
|
264
|
+
this.tracerProvider = api.trace.getTracerProvider();
|
|
265
|
+
this.tracer = this.tracerProvider.getTracer(this.instrumentationName);
|
|
266
|
+
this.durableSampler = globalIdGenerator.tryInstallDurableSampler(this.tracer);
|
|
267
|
+
const installedIdGenerator = globalIdGenerator.tryInstallGlobalIdGenerator(this.tracer);
|
|
268
|
+
if (installedIdGenerator) {
|
|
269
|
+
this.idGenerator = installedIdGenerator;
|
|
270
|
+
this.globalIdGeneratorInstalled = true;
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
console.warn("[ExecutionOtelPlugin] Expected a compatible OpenTelemetry SDK tracer at invocation start; telemetry is disabled for this invocation. Ensure the OpenTelemetry SDK is configured before invocation start.");
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
resetInvocationState() {
|
|
277
|
+
this.spanMap.clear();
|
|
278
|
+
this.operationContexts.clear();
|
|
279
|
+
this.operationStarts.clear();
|
|
280
|
+
this.workflowSpan = undefined;
|
|
281
|
+
this.invocationSpan = undefined;
|
|
282
|
+
this.executionAncestor = undefined;
|
|
283
|
+
this.executionStartTimestamp = undefined;
|
|
284
|
+
this.executionArn = "";
|
|
285
|
+
this.executionTraceId = "";
|
|
286
|
+
this.executionTraceFlags = 0;
|
|
287
|
+
this.executionSamplingDecision = sdkTraceNode.SamplingDecision.NOT_RECORD;
|
|
288
|
+
this.tracingEnabled = false;
|
|
289
|
+
}
|
|
290
|
+
startSpan(name, options, parentContext) {
|
|
291
|
+
const fn = () => this.tracer.startSpan(name, options, parentContext);
|
|
292
|
+
return this.durableSampler
|
|
293
|
+
? this.durableSampler.withDecision(this.executionSamplingDecision, fn)
|
|
294
|
+
: fn();
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* The parent context for the Invocation span: the active ambient span when it
|
|
298
|
+
* is already on the execution trace, otherwise the execution ancestor so the
|
|
299
|
+
* Invocation span stays within the same trace.
|
|
300
|
+
*/
|
|
301
|
+
invocationParentContext(executionAncestor, canonical) {
|
|
302
|
+
const activeContext = api.context.active();
|
|
303
|
+
const ambient = api.trace.getSpanContext(activeContext);
|
|
304
|
+
// Adopt the ambient span as the Invocation parent only when it is on the
|
|
305
|
+
// execution trace AND carries the same sampled bit as the execution
|
|
306
|
+
// ancestor. Matching the trace ID alone is not enough: if the ambient span's
|
|
307
|
+
// sampled bit differs, the Invocation span would inherit the ambient
|
|
308
|
+
// decision and could export after an explicit Sampled=0, or drop after the
|
|
309
|
+
// root sampler chose sampled. On a mismatch, fall back to the execution
|
|
310
|
+
// ancestor, which carries the authoritative decision.
|
|
311
|
+
if (ambient &&
|
|
312
|
+
api.isSpanContextValid(ambient) &&
|
|
313
|
+
ambient.traceId === canonical &&
|
|
314
|
+
(ambient.traceFlags & api.TraceFlags.SAMPLED) ===
|
|
315
|
+
(executionAncestor.traceFlags & api.TraceFlags.SAMPLED)) {
|
|
316
|
+
return activeContext;
|
|
317
|
+
}
|
|
318
|
+
return api.trace.setSpanContext(api.ROOT_CONTEXT, executionAncestor);
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Builds span links to the invocation span for child spans.
|
|
322
|
+
*
|
|
323
|
+
* Always links to the plugin-created Invocation_Span (this.invocationSpan),
|
|
324
|
+
* which is created in both default-provider and non-default modes.
|
|
325
|
+
*/
|
|
326
|
+
buildInvocationLinks() {
|
|
327
|
+
if (this.invocationSpan) {
|
|
328
|
+
return [{ context: this.invocationSpan.spanContext() }];
|
|
329
|
+
}
|
|
330
|
+
return [];
|
|
331
|
+
}
|
|
332
|
+
async onOperationStart(info) {
|
|
333
|
+
if (!this.tracingEnabled) {
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
// Defer the span: store only a deterministic non-recording placeholder that
|
|
337
|
+
// children/attempts parent onto; the real span is created in onOperationEnd.
|
|
338
|
+
const deterministicSpanId = globalIdGenerator.deriveSpanIdFromOperationId(info.id, this.executionArn);
|
|
339
|
+
this.operationContexts.set(info.id, {
|
|
340
|
+
traceId: this.executionTraceId,
|
|
341
|
+
spanId: deterministicSpanId,
|
|
342
|
+
traceFlags: this.executionTraceFlags,
|
|
343
|
+
isRemote: false,
|
|
344
|
+
});
|
|
345
|
+
// Retain naming/timing for onOperationEnd, which may omit them. New
|
|
346
|
+
// operations can reach this hook before the checkpoint response supplies a
|
|
347
|
+
// backend start timestamp, so capture the hook time as the fallback. Keep
|
|
348
|
+
// the earliest observation if the same operation starts again on replay.
|
|
349
|
+
const existingStart = this.operationStarts.get(info.id);
|
|
350
|
+
const observedStart = info.startTimestamp ?? new Date();
|
|
351
|
+
this.operationStarts.set(info.id, {
|
|
352
|
+
name: info.name ?? existingStart?.name,
|
|
353
|
+
subType: info.subType ?? existingStart?.subType,
|
|
354
|
+
startTimestamp: this.earliestStart(existingStart?.startTimestamp, observedStart),
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
wrapChildContextFn(info, fn) {
|
|
358
|
+
if (!this.tracingEnabled) {
|
|
359
|
+
return fn();
|
|
360
|
+
}
|
|
361
|
+
// Make the operation's placeholder current so nested calls become its children.
|
|
362
|
+
const operationContext = this.operationContexts.get(info.id);
|
|
363
|
+
if (!operationContext) {
|
|
364
|
+
return fn();
|
|
365
|
+
}
|
|
366
|
+
return api.context.with(api.trace.setSpanContext(api.context.active(), operationContext), fn);
|
|
367
|
+
}
|
|
368
|
+
async onOperationEnd(info) {
|
|
369
|
+
if (!this.tracingEnabled) {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
// The only place an operation span is created: start+end it here under its
|
|
373
|
+
// deterministic ID, so it is exported exactly once even across suspend/resume.
|
|
374
|
+
const started = this.operationStarts.get(info.id);
|
|
375
|
+
this.operationContexts.delete(info.id);
|
|
376
|
+
this.operationStarts.delete(info.id);
|
|
377
|
+
// The end event may omit name/subType; fall back to what start captured.
|
|
378
|
+
const name = info.name ?? started?.name;
|
|
379
|
+
const subType = info.subType ?? started?.subType;
|
|
380
|
+
const spanName = name ?? info.type;
|
|
381
|
+
const parentContext = this.resolveOperationParentContext(info.parentId);
|
|
382
|
+
const attributes = {
|
|
383
|
+
"durable.execution.arn": this.executionArn,
|
|
384
|
+
"durable.operation.id": info.id,
|
|
385
|
+
"durable.operation.type": info.type,
|
|
386
|
+
};
|
|
387
|
+
if (name) {
|
|
388
|
+
attributes["durable.operation.name"] = name;
|
|
389
|
+
}
|
|
390
|
+
if (subType) {
|
|
391
|
+
attributes["durable.operation.subtype"] = subType;
|
|
392
|
+
}
|
|
393
|
+
if (info.status) {
|
|
394
|
+
attributes["durable.operation.status"] = info.status;
|
|
395
|
+
}
|
|
396
|
+
// durable.attempt.number for retriable operations (STEP, WAIT_FOR_CONDITION).
|
|
397
|
+
if ((info.type === "STEP" || subType === "WAIT_FOR_CONDITION") &&
|
|
398
|
+
info.attempt != null) {
|
|
399
|
+
attributes["durable.attempt.number"] = info.attempt;
|
|
400
|
+
}
|
|
401
|
+
const links = this.buildInvocationLinks();
|
|
402
|
+
// Earliest known start, so the span never begins after its own attempt/child
|
|
403
|
+
// spans (created earlier at start).
|
|
404
|
+
const startTime = this.earliestStart(started?.startTimestamp, info.startTimestamp);
|
|
405
|
+
const operationSpanId = globalIdGenerator.deriveSpanIdFromOperationId(info.id, this.executionArn);
|
|
406
|
+
const span = this.idGenerator.withIds({
|
|
407
|
+
traceId: this.executionTraceId,
|
|
408
|
+
spanId: operationSpanId,
|
|
409
|
+
}, () => this.startSpan(spanName, { attributes, startTime, links }, parentContext));
|
|
410
|
+
if (info.error) {
|
|
411
|
+
span.setStatus({
|
|
412
|
+
code: api.SpanStatusCode.ERROR,
|
|
413
|
+
message: info.error.message,
|
|
414
|
+
});
|
|
415
|
+
span.recordException(info.error);
|
|
416
|
+
}
|
|
417
|
+
else if (info.status === "SUCCEEDED") {
|
|
418
|
+
// Stamp explicit OK ONLY on a SUCCEEDED terminal status. Terminal
|
|
419
|
+
// FAILURE statuses (TIMED_OUT/STOPPED/FAILED/CANCELLED) can arrive with
|
|
420
|
+
// NO error object (callback-timeout, chained-invoke fast paths); those
|
|
421
|
+
// must NOT be labelled OK, so they are left UNSET.
|
|
422
|
+
span.setStatus({ code: api.SpanStatusCode.OK });
|
|
423
|
+
}
|
|
424
|
+
span.end(info.endTimestamp);
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* The parent context for an operation or attempt span: the parent operation's
|
|
428
|
+
* deterministic placeholder context when known, otherwise the deferred
|
|
429
|
+
* Workflow span's context so the span still hangs off the execution trace.
|
|
430
|
+
*/
|
|
431
|
+
resolveOperationParentContext(parentId) {
|
|
432
|
+
if (parentId) {
|
|
433
|
+
const parentContext = this.operationContexts.get(parentId);
|
|
434
|
+
if (parentContext) {
|
|
435
|
+
return api.trace.setSpanContext(api.context.active(), parentContext);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
const workflowContext = this.workflowSpan?.spanContext();
|
|
439
|
+
if (workflowContext) {
|
|
440
|
+
return api.trace.setSpanContext(api.context.active(), workflowContext);
|
|
441
|
+
}
|
|
442
|
+
return api.context.active();
|
|
443
|
+
}
|
|
444
|
+
/** The earlier of two timestamps, ignoring undefined; undefined only when both are. */
|
|
445
|
+
earliestStart(a, b) {
|
|
446
|
+
if (!a) {
|
|
447
|
+
return b;
|
|
448
|
+
}
|
|
449
|
+
if (!b) {
|
|
450
|
+
return a;
|
|
451
|
+
}
|
|
452
|
+
return a.getTime() <= b.getTime() ? a : b;
|
|
453
|
+
}
|
|
454
|
+
getAttemptKey(id, attempt) {
|
|
455
|
+
return `${id}:attempt:${attempt}`;
|
|
456
|
+
}
|
|
457
|
+
async onOperationAttemptStart(info) {
|
|
458
|
+
if (!this.tracingEnabled) {
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
const baseName = info.name ?? info.type;
|
|
462
|
+
const spanName = `${baseName} attempt ${info.attempt}`;
|
|
463
|
+
// Parent onto the operation's placeholder (the operation span is deferred).
|
|
464
|
+
const parentContext = this.resolveOperationParentContext(info.id);
|
|
465
|
+
const attributes = {
|
|
466
|
+
"durable.execution.arn": this.executionArn,
|
|
467
|
+
"durable.operation.id": info.id,
|
|
468
|
+
"durable.operation.type": info.type,
|
|
469
|
+
"durable.attempt.number": info.attempt,
|
|
470
|
+
};
|
|
471
|
+
if (info.name) {
|
|
472
|
+
attributes["durable.operation.name"] = info.name;
|
|
473
|
+
}
|
|
474
|
+
if (info.subType) {
|
|
475
|
+
attributes["durable.operation.subtype"] = info.subType;
|
|
476
|
+
}
|
|
477
|
+
const links = this.buildInvocationLinks();
|
|
478
|
+
const attemptSpan = this.startSpan(spanName, {
|
|
479
|
+
attributes,
|
|
480
|
+
startTime: info.startTimestamp,
|
|
481
|
+
links,
|
|
482
|
+
}, parentContext);
|
|
483
|
+
this.spanMap.set(this.getAttemptKey(info.id, info.attempt), attemptSpan);
|
|
484
|
+
}
|
|
485
|
+
wrapOperationAttemptFn(info, fn) {
|
|
486
|
+
if (!this.tracingEnabled) {
|
|
487
|
+
return fn();
|
|
488
|
+
}
|
|
489
|
+
const attemptSpan = this.spanMap.get(this.getAttemptKey(info.id, info.attempt));
|
|
490
|
+
if (!attemptSpan) {
|
|
491
|
+
return fn();
|
|
492
|
+
}
|
|
493
|
+
return api.context.with(api.trace.setSpan(api.context.active(), attemptSpan), fn);
|
|
494
|
+
}
|
|
495
|
+
async onOperationAttemptEnd(info) {
|
|
496
|
+
if (!this.tracingEnabled) {
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
const key = this.getAttemptKey(info.id, info.attempt);
|
|
500
|
+
const attemptSpan = this.spanMap.get(key);
|
|
501
|
+
if (attemptSpan) {
|
|
502
|
+
attemptSpan.setAttribute("durable.attempt.outcome", info.outcome);
|
|
503
|
+
if (info.outcome === "FAILED") {
|
|
504
|
+
attemptSpan.setStatus({
|
|
505
|
+
code: api.SpanStatusCode.ERROR,
|
|
506
|
+
message: info.error?.message ?? "Attempt failed",
|
|
507
|
+
});
|
|
508
|
+
if (info.error) {
|
|
509
|
+
attemptSpan.recordException(info.error);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
else {
|
|
513
|
+
// Non-failed attempt: stamp explicit OK (matches Python OTel #604).
|
|
514
|
+
attemptSpan.setStatus({ code: api.SpanStatusCode.OK });
|
|
515
|
+
}
|
|
516
|
+
attemptSpan.end(info.endTimestamp);
|
|
517
|
+
this.spanMap.delete(key);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
async onOperationChange(_info) {
|
|
521
|
+
// No-op — same as InvocationOtelPlugin
|
|
522
|
+
}
|
|
523
|
+
enrichLogContext() {
|
|
524
|
+
if (!this.tracingEnabled || !this.enrichLogger) {
|
|
525
|
+
return undefined;
|
|
526
|
+
}
|
|
527
|
+
const span = api.trace.getSpan(api.context.active());
|
|
528
|
+
if (!span) {
|
|
529
|
+
return undefined;
|
|
530
|
+
}
|
|
531
|
+
const spanContext = span.spanContext();
|
|
532
|
+
return {
|
|
533
|
+
traceId: spanContext.traceId,
|
|
534
|
+
spanId: spanContext.spanId,
|
|
535
|
+
otelTraceSampled: (spanContext.traceFlags & 1) !== 0,
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
exports.ExecutionOtelPlugin = ExecutionOtelPlugin;
|
|
541
|
+
//# sourceMappingURL=execution-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-plugin.js","sources":["../src/execution-plugin.ts"],"names":["DeterministicIdGenerator","xRayContextExtractor","createTracerProvider","tryInstallDurableSampler","tryInstallGlobalIdGenerator","SamplingDecision","canonicalTraceId","resolveExecutionTraceContext","rootSamplingDecision","deriveWorkflowSpanId","trace","SpanKind","context","SpanStatusCode","ROOT_CONTEXT","isSpanContextValid","TraceFlags","deriveSpanIdFromOperationId"],"mappings":"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"}
|