@aws/durable-execution-sdk-js-otel 1.2.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 +144 -19
- package/dist/execution-plugin.mjs +136 -38
- package/dist/execution-plugin.mjs.map +1 -1
- package/dist/invocation-plugin.mjs +88 -59
- package/dist/invocation-plugin.mjs.map +1 -1
- package/dist/otel-execution.mjs +1 -1
- package/dist/otel-invocation.mjs +2 -2
- package/dist/plugin-registration.mjs +72 -5
- package/dist/plugin-registration.mjs.map +1 -1
- package/dist-cjs/execution-plugin.js +136 -38
- package/dist-cjs/execution-plugin.js.map +1 -1
- package/dist-cjs/invocation-plugin.js +88 -59
- package/dist-cjs/invocation-plugin.js.map +1 -1
- package/dist-cjs/otel-execution.js +1 -1
- package/dist-cjs/otel-invocation.js +2 -2
- package/dist-cjs/plugin-registration.js +73 -3
- package/dist-cjs/plugin-registration.js.map +1 -1
- package/dist-types/execution-plugin.d.ts +12 -1
- package/dist-types/execution-plugin.d.ts.map +1 -1
- package/dist-types/external-completions.d.ts +1 -1
- package/dist-types/external-completions.d.ts.map +1 -1
- package/dist-types/invocation-plugin.d.ts +6 -0
- 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/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var api = require('@opentelemetry/api');
|
|
4
3
|
var pluginRegistration = require('./plugin-registration.js');
|
|
4
|
+
var api = require('@opentelemetry/api');
|
|
5
5
|
var sdkTraceNode = require('@opentelemetry/sdk-trace-node');
|
|
6
6
|
|
|
7
7
|
const DEFAULT_INSTRUMENTATION_NAME = "aws-durable-execution-sdk-js";
|
|
@@ -29,6 +29,7 @@ class ExecutionOtelPlugin {
|
|
|
29
29
|
tracerProvider;
|
|
30
30
|
tracer;
|
|
31
31
|
instrumentationName;
|
|
32
|
+
flushTimeoutMillis;
|
|
32
33
|
// Non-recording context carrying the deterministic Workflow identity; the real
|
|
33
34
|
// span is created+ended once, at the terminal invocation (issue #831).
|
|
34
35
|
workflowSpan;
|
|
@@ -57,7 +58,13 @@ class ExecutionOtelPlugin {
|
|
|
57
58
|
globalIdGeneratorInstalled;
|
|
58
59
|
durableSampler;
|
|
59
60
|
tracingEnabled = false;
|
|
61
|
+
// Operation ends received after a flush starts may still be in a batch buffer.
|
|
62
|
+
operationSpansNeedFlush = false;
|
|
60
63
|
externalCompletions = new pluginRegistration.ExternalCompletions();
|
|
64
|
+
// A real context span can finish even when an enclosing completed context
|
|
65
|
+
// suppresses its terminal checkpoint. Keep that observed parent identity.
|
|
66
|
+
recordedContextIds = new Set();
|
|
67
|
+
invocationEndOperations;
|
|
61
68
|
// Workflow span name (configurable)
|
|
62
69
|
workflowSpanName;
|
|
63
70
|
// Whether enrichLogContext() contributes trace context to log records
|
|
@@ -65,6 +72,7 @@ class ExecutionOtelPlugin {
|
|
|
65
72
|
constructor(config) {
|
|
66
73
|
const instrumentationName = config?.instrumentationName ?? DEFAULT_INSTRUMENTATION_NAME;
|
|
67
74
|
this.instrumentationName = instrumentationName;
|
|
75
|
+
this.flushTimeoutMillis = pluginRegistration.resolveFlushTimeoutMillis(config?.flushTimeoutMillis);
|
|
68
76
|
this.idGenerator = new pluginRegistration.DeterministicIdGenerator();
|
|
69
77
|
this.contextExtractor = config?.contextExtractor ?? pluginRegistration.xRayContextExtractor;
|
|
70
78
|
this.workflowSpanName = config?.workflowSpanName ?? "Workflow";
|
|
@@ -177,7 +185,7 @@ class ExecutionOtelPlugin {
|
|
|
177
185
|
kind: api.SpanKind.INTERNAL,
|
|
178
186
|
attributes: invocationAttributes,
|
|
179
187
|
}, invocationParentContext);
|
|
180
|
-
this.externalCompletions.observe(info.updatedOperations);
|
|
188
|
+
this.externalCompletions.observe(info.updatedOperations, info.operations);
|
|
181
189
|
// Each sampled invocation can recover an earlier undelivered anchor. An
|
|
182
190
|
// opaque tracer retains terminal-only creation: without the sampler wrapper,
|
|
183
191
|
// an early anchor would independently query its hidden sampler again.
|
|
@@ -205,12 +213,11 @@ class ExecutionOtelPlugin {
|
|
|
205
213
|
this.resetInvocationState();
|
|
206
214
|
return;
|
|
207
215
|
}
|
|
216
|
+
this.invocationEndOperations = info.operations ?? {};
|
|
208
217
|
// Prefer normal lifecycle hooks, which preserve live parent scopes. Before
|
|
209
218
|
// returning, export any fresh completion the workflow did not reach. A
|
|
210
219
|
// later resume may label it replay even though it has never been exported.
|
|
211
|
-
|
|
212
|
-
await this.onOperationEnd({ ...operation, isReplay: false });
|
|
213
|
-
}
|
|
220
|
+
this.drainExternalCompletions(info);
|
|
214
221
|
// 1. Always end and export Invocation_Span
|
|
215
222
|
if (this.invocationSpan) {
|
|
216
223
|
this.invocationSpan.setAttribute("durable.invocation.status", info.status);
|
|
@@ -273,22 +280,62 @@ class ExecutionOtelPlugin {
|
|
|
273
280
|
// 3. End any attempt span still open (safeguard against a leak on a
|
|
274
281
|
// non-terminal invocation, issue #831). Operation placeholders have no
|
|
275
282
|
// recording span and are dropped in resetInvocationState.
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
// 4. Always flush TracerProvider at invocation boundaries
|
|
282
|
-
if ("forceFlush" in this.tracerProvider) {
|
|
283
|
+
this.endOpenAttemptSpans();
|
|
284
|
+
// End owns the drain/flush loop; change hooks only enqueue notifications.
|
|
285
|
+
// A response received during an awaited flush must not be cleared below.
|
|
286
|
+
const flushDeadline = performance.now() + this.flushTimeoutMillis;
|
|
287
|
+
const flush = async () => {
|
|
283
288
|
try {
|
|
284
|
-
await this.tracerProvider.
|
|
289
|
+
await pluginRegistration.flushTracerProvider(this.tracerProvider, this.usesGlobalProvider, Math.max(0, flushDeadline - performance.now()));
|
|
285
290
|
}
|
|
286
291
|
catch (e) {
|
|
287
292
|
console.error("[ExecutionOtelPlugin] forceFlush failed:", e instanceof Error ? e.message : e);
|
|
288
293
|
}
|
|
289
|
-
}
|
|
290
|
-
|
|
294
|
+
};
|
|
295
|
+
do {
|
|
296
|
+
this.drainExternalCompletions(info);
|
|
297
|
+
this.operationSpansNeedFlush = false;
|
|
298
|
+
await flush();
|
|
299
|
+
} while ([...this.externalCompletions.pending.values()].some((operation) => !this.hasOpenUnrecordedParent(operation)) &&
|
|
300
|
+
performance.now() < flushDeadline);
|
|
301
|
+
// Finalize the remaining live parents after the open drain/flush phase.
|
|
302
|
+
// A normal parent End may already have exported its child during that wait.
|
|
303
|
+
if (this.externalCompletions.pending.size > 0) {
|
|
304
|
+
this.drainExternalCompletions(info, [...this.externalCompletions.pending.values()], true);
|
|
305
|
+
}
|
|
306
|
+
// Attempts started during the awaited flush are owned by this invocation too.
|
|
307
|
+
this.endOpenAttemptSpans();
|
|
308
|
+
// Close this invocation's hooks before flushing the finalized snapshot.
|
|
309
|
+
// New operation-end hooks during this last wait cannot revise the snapshot.
|
|
310
|
+
const flushFinalOperations = this.operationSpansNeedFlush;
|
|
291
311
|
this.resetInvocationState();
|
|
312
|
+
if (flushFinalOperations && performance.now() < flushDeadline) {
|
|
313
|
+
await flush();
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
drainExternalCompletions(info, operations = this.externalCompletions.pending.values(), finalDrain = false) {
|
|
317
|
+
const terminal = info.status === "SUCCEEDED" || info.status === "FAILED";
|
|
318
|
+
for (const operation of operations) {
|
|
319
|
+
// Even below a checkpointed terminal ancestor, a live context can still
|
|
320
|
+
// finish locally while forceFlush awaits. Give its End hook first choice.
|
|
321
|
+
const openParent = this.hasOpenUnrecordedParent(operation);
|
|
322
|
+
if (openParent && !finalDrain)
|
|
323
|
+
continue;
|
|
324
|
+
const recordedParent = operation.parentId && this.recordedContextIds.has(operation.parentId);
|
|
325
|
+
// A terminal handler can abandon an unawaited child. Its still-open
|
|
326
|
+
// placeholder will be discarded below, so it cannot parent this export.
|
|
327
|
+
const parentId = !recordedParent &&
|
|
328
|
+
((terminal && openParent) ||
|
|
329
|
+
this.hasAbandonedParent(operation.parentId, this.invocationEndOperations))
|
|
330
|
+
? undefined
|
|
331
|
+
: operation.parentId;
|
|
332
|
+
this.finishOperation({ ...operation, parentId, isReplay: false });
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
hasOpenUnrecordedParent(operation) {
|
|
336
|
+
return (operation.parentId !== undefined &&
|
|
337
|
+
this.operationContexts.has(operation.parentId) &&
|
|
338
|
+
!this.recordedContextIds.has(operation.parentId));
|
|
292
339
|
}
|
|
293
340
|
/** Creates at most one SDK-owned root per invocation; the caller ends it. */
|
|
294
341
|
createSyntheticRoot() {
|
|
@@ -333,8 +380,21 @@ class ExecutionOtelPlugin {
|
|
|
333
380
|
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.");
|
|
334
381
|
return false;
|
|
335
382
|
}
|
|
383
|
+
endOpenAttemptSpans() {
|
|
384
|
+
for (const span of this.spanMap.values()) {
|
|
385
|
+
if (span.isRecording())
|
|
386
|
+
this.endOperationSpan(span);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
endOperationSpan(span, endTime) {
|
|
390
|
+
span.end(endTime);
|
|
391
|
+
this.operationSpansNeedFlush = true;
|
|
392
|
+
}
|
|
336
393
|
resetInvocationState() {
|
|
337
394
|
this.externalCompletions.clear();
|
|
395
|
+
this.operationSpansNeedFlush = false;
|
|
396
|
+
this.recordedContextIds.clear();
|
|
397
|
+
this.invocationEndOperations = undefined;
|
|
338
398
|
this.spanMap.clear();
|
|
339
399
|
this.operationContexts.clear();
|
|
340
400
|
this.operationStarts.clear();
|
|
@@ -431,9 +491,23 @@ class ExecutionOtelPlugin {
|
|
|
431
491
|
return api.context.with(api.trace.setSpanContext(api.context.active(), operationContext), fn);
|
|
432
492
|
}
|
|
433
493
|
async onOperationEnd(info) {
|
|
494
|
+
this.finishOperation(info);
|
|
495
|
+
}
|
|
496
|
+
// Child completion and parent finalization share one synchronous turn. A
|
|
497
|
+
// provider flush must not reset invocation state between these two actions.
|
|
498
|
+
finishOperation(info) {
|
|
434
499
|
if (!this.tracingEnabled) {
|
|
435
500
|
return;
|
|
436
501
|
}
|
|
502
|
+
// A queued external completion can precede its live context's end even
|
|
503
|
+
// when traversal never awaited it. Export it while that parent is open.
|
|
504
|
+
if (info.type === "CONTEXT" && !info.isReplay) {
|
|
505
|
+
for (const child of this.externalCompletions.pending.values()) {
|
|
506
|
+
if (child.parentId === info.id) {
|
|
507
|
+
this.finishOperation({ ...child, isReplay: false });
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
}
|
|
437
511
|
// Release placeholders even when this is a previously observed completion.
|
|
438
512
|
const started = this.operationStarts.get(info.id);
|
|
439
513
|
this.operationContexts.delete(info.id);
|
|
@@ -469,31 +543,27 @@ class ExecutionOtelPlugin {
|
|
|
469
543
|
attributes["durable.attempt.number"] = info.attempt;
|
|
470
544
|
}
|
|
471
545
|
const links = this.buildInvocationLinks();
|
|
472
|
-
//
|
|
473
|
-
//
|
|
474
|
-
|
|
546
|
+
// Reuse the earliest start already recorded by lifecycle hooks.
|
|
547
|
+
// With no recorded start, represent a known completion as a zero-duration
|
|
548
|
+
// span instead of starting at a later local time than its exception event.
|
|
549
|
+
const startTime = this.earliestStart(started?.startTimestamp, info.startTimestamp) ??
|
|
550
|
+
info.endTimestamp;
|
|
475
551
|
const operationSpanId = pluginRegistration.deriveSpanIdFromOperationId(info.id, this.executionArn);
|
|
476
552
|
const span = this.idGenerator.withIds({
|
|
477
553
|
traceId: this.executionTraceId,
|
|
478
554
|
spanId: operationSpanId,
|
|
479
555
|
}, () => this.startSpan(spanName, { attributes, startTime, links }, parentContext));
|
|
556
|
+
// Preserve the backend completion on both the exception and the span end.
|
|
557
|
+
// When absent, use the tracer's existing default timestamp behavior.
|
|
558
|
+
const endTime = info.endTimestamp;
|
|
559
|
+
pluginRegistration.setOperationSpanStatus(span, info);
|
|
480
560
|
if (info.error) {
|
|
481
|
-
span.
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
span.recordException(info.error, info.endTimestamp);
|
|
488
|
-
}
|
|
489
|
-
else if (info.status === "SUCCEEDED") {
|
|
490
|
-
// Stamp explicit OK ONLY on a SUCCEEDED terminal status. Terminal
|
|
491
|
-
// FAILURE statuses (TIMED_OUT/STOPPED/FAILED/CANCELLED) can arrive with
|
|
492
|
-
// NO error object (callback-timeout, chained-invoke fast paths); those
|
|
493
|
-
// must NOT be labelled OK, so they are left UNSET.
|
|
494
|
-
span.setStatus({ code: api.SpanStatusCode.OK });
|
|
495
|
-
}
|
|
496
|
-
span.end(info.endTimestamp);
|
|
561
|
+
span.recordException(info.error, endTime);
|
|
562
|
+
}
|
|
563
|
+
const recordedContext = info.type === "CONTEXT" && span.isRecording();
|
|
564
|
+
this.endOperationSpan(span, endTime);
|
|
565
|
+
if (recordedContext)
|
|
566
|
+
this.recordedContextIds.add(info.id);
|
|
497
567
|
this.externalCompletions.markExported(info);
|
|
498
568
|
}
|
|
499
569
|
/**
|
|
@@ -501,6 +571,8 @@ class ExecutionOtelPlugin {
|
|
|
501
571
|
* deterministic identity, or the Workflow identity for a top-level operation.
|
|
502
572
|
* A completion notification can arrive without traversing its parent in this
|
|
503
573
|
* invocation (for example, a completed child context skipped during replay).
|
|
574
|
+
* An exported parent's context remains a valid parent after it ends. Reusing
|
|
575
|
+
* its identity does not recreate the parent span or compare clock domains.
|
|
504
576
|
*/
|
|
505
577
|
resolveOperationParentContext(parentId) {
|
|
506
578
|
if (parentId) {
|
|
@@ -518,7 +590,27 @@ class ExecutionOtelPlugin {
|
|
|
518
590
|
}
|
|
519
591
|
return api.context.active();
|
|
520
592
|
}
|
|
521
|
-
|
|
593
|
+
hasAbandonedParent(parentId, operations = {}) {
|
|
594
|
+
const parent = parentId ? operations[parentId] : undefined;
|
|
595
|
+
if (parent?.type !== "CONTEXT" ||
|
|
596
|
+
!["STARTED", "READY", "PENDING"].includes(parent.status ?? ""))
|
|
597
|
+
return false;
|
|
598
|
+
// Completed contexts do not restart unfinished descendants. ReplayChildren
|
|
599
|
+
// can rebuild a successful result by traversing completed children, but
|
|
600
|
+
// ReplaySucceededContext still blocks unfinished child operations.
|
|
601
|
+
const visited = new Set([parent.id]);
|
|
602
|
+
let ancestorId = parent.parentId;
|
|
603
|
+
while (ancestorId && !visited.has(ancestorId)) {
|
|
604
|
+
visited.add(ancestorId);
|
|
605
|
+
const ancestor = operations[ancestorId];
|
|
606
|
+
if (ancestor?.type !== "CONTEXT")
|
|
607
|
+
return false;
|
|
608
|
+
if (["SUCCEEDED", "FAILED", "TIMED_OUT", "STOPPED", "CANCELLED"].includes(ancestor.status ?? ""))
|
|
609
|
+
return true;
|
|
610
|
+
ancestorId = ancestor.parentId;
|
|
611
|
+
}
|
|
612
|
+
return false;
|
|
613
|
+
}
|
|
522
614
|
earliestStart(a, b) {
|
|
523
615
|
if (!a) {
|
|
524
616
|
return b;
|
|
@@ -576,6 +668,7 @@ class ExecutionOtelPlugin {
|
|
|
576
668
|
const key = this.getAttemptKey(info.id, info.attempt);
|
|
577
669
|
const attemptSpan = this.spanMap.get(key);
|
|
578
670
|
if (attemptSpan) {
|
|
671
|
+
const endTime = info.endTimestamp;
|
|
579
672
|
attemptSpan.setAttribute("durable.attempt.outcome", info.outcome);
|
|
580
673
|
if (info.outcome === "FAILED") {
|
|
581
674
|
attemptSpan.setStatus({
|
|
@@ -583,20 +676,25 @@ class ExecutionOtelPlugin {
|
|
|
583
676
|
message: info.error?.message ?? "Attempt failed",
|
|
584
677
|
});
|
|
585
678
|
if (info.error) {
|
|
586
|
-
attemptSpan.recordException(info.error);
|
|
679
|
+
attemptSpan.recordException(info.error, endTime);
|
|
587
680
|
}
|
|
588
681
|
}
|
|
589
682
|
else {
|
|
590
683
|
// Non-failed attempt: stamp explicit OK (matches Python OTel #604).
|
|
591
684
|
attemptSpan.setStatus({ code: api.SpanStatusCode.OK });
|
|
592
685
|
}
|
|
593
|
-
|
|
686
|
+
this.endOperationSpan(attemptSpan, endTime);
|
|
594
687
|
this.spanMap.delete(key);
|
|
595
688
|
}
|
|
596
689
|
}
|
|
597
690
|
async onOperationChange(info) {
|
|
598
691
|
if (this.tracingEnabled) {
|
|
599
|
-
|
|
692
|
+
// End may be waiting for a provider flush. New completions must use the
|
|
693
|
+
// ancestry from this newer full snapshot, not End's captured snapshot.
|
|
694
|
+
if (this.invocationEndOperations && info.operations) {
|
|
695
|
+
this.invocationEndOperations = info.operations;
|
|
696
|
+
}
|
|
697
|
+
this.externalCompletions.observe(info.updatedOperations, info.operations);
|
|
600
698
|
}
|
|
601
699
|
}
|
|
602
700
|
enrichLogContext() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-plugin.js","sources":["../src/execution-plugin.ts"],"names":["PLUGIN_REGISTRATION","ExternalCompletions","DeterministicIdGenerator","xRayContextExtractor","createTracerProvider","tryInstallDurableSampler","tryInstallGlobalIdGenerator","SamplingDecision","canonicalTraceId","resolveExecutionTraceContext","rootSamplingDecision","deriveWorkflowSpanId","trace","SpanKind","isDurableSamplerInstalled","createPropagationMetadata","context","SpanStatusCode","ROOT_CONTEXT","isSpanContextValid","TraceFlags","deriveSpanIdFromOperationId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"execution-plugin.js","sources":["../src/execution-plugin.ts"],"names":["PLUGIN_REGISTRATION","ExternalCompletions","resolveFlushTimeoutMillis","DeterministicIdGenerator","xRayContextExtractor","createTracerProvider","tryInstallDurableSampler","tryInstallGlobalIdGenerator","SamplingDecision","canonicalTraceId","resolveExecutionTraceContext","rootSamplingDecision","deriveWorkflowSpanId","trace","SpanKind","isDurableSamplerInstalled","createPropagationMetadata","context","SpanStatusCode","ROOT_CONTEXT","flushTracerProvider","isSpanContextValid","TraceFlags","deriveSpanIdFromOperationId","setOperationSpanStatus"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var pluginRegistration = require('./plugin-registration.js');
|
|
3
4
|
var api = require('@opentelemetry/api');
|
|
4
5
|
var core = require('@opentelemetry/core');
|
|
5
6
|
var sdkTraceNode = require('@opentelemetry/sdk-trace-node');
|
|
6
|
-
var pluginRegistration = require('./plugin-registration.js');
|
|
7
7
|
|
|
8
8
|
/** Match ordinary OTel spans: a wall-clock origin plus monotonic elapsed time. */
|
|
9
9
|
function captureInvocationClock() {
|
|
@@ -34,11 +34,15 @@ class InvocationOtelPlugin {
|
|
|
34
34
|
idGenerator;
|
|
35
35
|
contextExtractor;
|
|
36
36
|
instrumentationName;
|
|
37
|
+
flushTimeoutMillis;
|
|
37
38
|
usesGlobalProvider;
|
|
38
39
|
globalIdGeneratorInstalled;
|
|
39
40
|
durableSampler;
|
|
40
41
|
tracingEnabled = false;
|
|
42
|
+
// Operation and attempt spans ended after a flush starts need a final batch.
|
|
43
|
+
operationSpansNeedFlush = false;
|
|
41
44
|
externalCompletions = new pluginRegistration.ExternalCompletions();
|
|
45
|
+
endedOperationSpans = new WeakSet();
|
|
42
46
|
workflowSpanName;
|
|
43
47
|
enrichLogger;
|
|
44
48
|
// Per-invocation state
|
|
@@ -68,6 +72,7 @@ class InvocationOtelPlugin {
|
|
|
68
72
|
constructor(config) {
|
|
69
73
|
const instrumentationName = config?.instrumentationName ?? DEFAULT_INSTRUMENTATION_NAME;
|
|
70
74
|
this.instrumentationName = instrumentationName;
|
|
75
|
+
this.flushTimeoutMillis = pluginRegistration.resolveFlushTimeoutMillis(config?.flushTimeoutMillis);
|
|
71
76
|
this.idGenerator = new pluginRegistration.DeterministicIdGenerator();
|
|
72
77
|
this.contextExtractor = config?.contextExtractor ?? pluginRegistration.xRayContextExtractor;
|
|
73
78
|
this.workflowSpanName = config?.workflowSpanName ?? "Workflow";
|
|
@@ -162,7 +167,7 @@ class InvocationOtelPlugin {
|
|
|
162
167
|
},
|
|
163
168
|
startTime: this.liveTimestamp(),
|
|
164
169
|
}, invocationParentContext);
|
|
165
|
-
this.externalCompletions.observe(info.updatedOperations);
|
|
170
|
+
this.externalCompletions.observe(info.updatedOperations, info.operations);
|
|
166
171
|
// Each sampled invocation can recover an earlier undelivered anchor. An
|
|
167
172
|
// opaque tracer retains terminal-only creation: without the sampler wrapper,
|
|
168
173
|
// an early anchor would independently query its hidden sampler again.
|
|
@@ -190,26 +195,15 @@ class InvocationOtelPlugin {
|
|
|
190
195
|
this.resetInvocationState();
|
|
191
196
|
return;
|
|
192
197
|
}
|
|
193
|
-
// Prefer normal lifecycle hooks
|
|
194
|
-
//
|
|
198
|
+
// Prefer normal lifecycle hooks, which preserve live parent scopes. Before
|
|
199
|
+
// returning, export any fresh completion the workflow did not reach. A
|
|
200
|
+
// later resume may label it replay even though it has never been exported.
|
|
195
201
|
for (const operation of this.externalCompletions.pending.values()) {
|
|
196
|
-
|
|
202
|
+
this.finishOperation({ ...operation, isReplay: false });
|
|
197
203
|
}
|
|
198
204
|
const endTime = this.liveTimestamp();
|
|
199
|
-
// 1.
|
|
200
|
-
|
|
201
|
-
const span = this.spanStack.pop();
|
|
202
|
-
span.end(endTime);
|
|
203
|
-
}
|
|
204
|
-
// 1b. End any still-recording span left in spanMap (attempt spans, which are
|
|
205
|
-
// not on the stack; operation spans were unwound above). Safeguard against a
|
|
206
|
-
// leak on a non-terminal invocation (issue #831). isRecording() skips spans
|
|
207
|
-
// already ended by the stack unwind.
|
|
208
|
-
for (const span of this.spanMap.values()) {
|
|
209
|
-
if (span.isRecording()) {
|
|
210
|
-
span.end(endTime);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
205
|
+
// 1. Close the spans that exist at the initial invocation unwind.
|
|
206
|
+
this.endOpenSpans(endTime);
|
|
213
207
|
// 2. End the invocation span if it exists
|
|
214
208
|
if (this.invocationSpan) {
|
|
215
209
|
this.invocationSpan.setAttribute("durable.invocation.status", info.status);
|
|
@@ -269,17 +263,41 @@ class InvocationOtelPlugin {
|
|
|
269
263
|
}
|
|
270
264
|
// PENDING/RETRYING never materializes Workflow. A sampled invocation may
|
|
271
265
|
// already have ended its stable synthetic anchor before customer code ran.
|
|
272
|
-
//
|
|
273
|
-
|
|
266
|
+
// End owns the drain/flush loop; change hooks only enqueue notifications.
|
|
267
|
+
// Only segments actually ended above need a linked continuation. A span
|
|
268
|
+
// created during an awaited flush can still complete normally.
|
|
269
|
+
const flushDeadline = performance.now() + this.flushTimeoutMillis;
|
|
270
|
+
const flush = async () => {
|
|
274
271
|
try {
|
|
275
|
-
await this.tracerProvider.
|
|
272
|
+
await pluginRegistration.flushTracerProvider(this.tracerProvider, this.usesGlobalProvider, Math.max(0, flushDeadline - performance.now()));
|
|
276
273
|
}
|
|
277
274
|
catch {
|
|
278
|
-
// Gracefully handle flush errors
|
|
275
|
+
// Gracefully handle flush errors.
|
|
279
276
|
}
|
|
280
|
-
}
|
|
281
|
-
|
|
277
|
+
};
|
|
278
|
+
do {
|
|
279
|
+
for (const operation of this.externalCompletions.pending.values()) {
|
|
280
|
+
this.finishOperation({ ...operation, isReplay: false });
|
|
281
|
+
}
|
|
282
|
+
this.operationSpansNeedFlush = false;
|
|
283
|
+
await flush();
|
|
284
|
+
} while (this.externalCompletions.pending.size > 0 &&
|
|
285
|
+
performance.now() < flushDeadline);
|
|
286
|
+
// Retain one bounded snapshot of terminal notifications already received,
|
|
287
|
+
// including while a provider wait timed out.
|
|
288
|
+
for (const operation of [...this.externalCompletions.pending.values()]) {
|
|
289
|
+
this.finishOperation({ ...operation, isReplay: false });
|
|
290
|
+
}
|
|
291
|
+
// A still-running operation may have started while flush yielded. End its
|
|
292
|
+
// owned recording span before dropping the maps.
|
|
293
|
+
this.endOpenSpans(this.liveTimestamp());
|
|
294
|
+
// Close hooks before the final batch: late lifecycle callbacks cannot create
|
|
295
|
+
// more spans while this last wait uses only the original budget remaining.
|
|
296
|
+
const flushFinalOperations = this.operationSpansNeedFlush;
|
|
282
297
|
this.resetInvocationState();
|
|
298
|
+
if (flushFinalOperations && performance.now() < flushDeadline) {
|
|
299
|
+
await flush();
|
|
300
|
+
}
|
|
283
301
|
}
|
|
284
302
|
/** Creates at most one SDK-owned root per invocation; the caller ends it. */
|
|
285
303
|
createSyntheticRoot() {
|
|
@@ -329,6 +347,8 @@ class InvocationOtelPlugin {
|
|
|
329
347
|
}
|
|
330
348
|
resetInvocationState() {
|
|
331
349
|
this.externalCompletions.clear();
|
|
350
|
+
this.operationSpansNeedFlush = false;
|
|
351
|
+
this.endedOperationSpans = new WeakSet();
|
|
332
352
|
this.invocationClock = undefined;
|
|
333
353
|
this.spanMap.clear();
|
|
334
354
|
this.spanStack = [];
|
|
@@ -344,6 +364,25 @@ class InvocationOtelPlugin {
|
|
|
344
364
|
this.executionSamplingDecision = sdkTraceNode.SamplingDecision.NOT_RECORD;
|
|
345
365
|
this.tracingEnabled = false;
|
|
346
366
|
}
|
|
367
|
+
endOperationSpan(span, endTime) {
|
|
368
|
+
span.end(endTime);
|
|
369
|
+
this.operationSpansNeedFlush = true;
|
|
370
|
+
}
|
|
371
|
+
endOpenSpans(endTime) {
|
|
372
|
+
while (this.spanStack.length > 0) {
|
|
373
|
+
const span = this.spanStack.pop();
|
|
374
|
+
this.endOperationSpan(span, endTime);
|
|
375
|
+
this.endedOperationSpans.add(span);
|
|
376
|
+
}
|
|
377
|
+
// Attempts are held only in the map. Recording state avoids ending spans
|
|
378
|
+
// twice here; it is not used to infer whether a sampled-out span has ended.
|
|
379
|
+
for (const span of this.spanMap.values()) {
|
|
380
|
+
if (span.isRecording()) {
|
|
381
|
+
this.endOperationSpan(span, endTime);
|
|
382
|
+
this.endedOperationSpans.add(span);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
347
386
|
startSpan(name, options, parentContext) {
|
|
348
387
|
const fn = () => this.tracer.startSpan(name, options, parentContext);
|
|
349
388
|
return this.durableSampler
|
|
@@ -488,18 +527,33 @@ class InvocationOtelPlugin {
|
|
|
488
527
|
return api.context.with(api.trace.setSpan(api.context.active(), span), fn);
|
|
489
528
|
}
|
|
490
529
|
async onOperationEnd(info) {
|
|
530
|
+
this.finishOperation(info);
|
|
531
|
+
}
|
|
532
|
+
// Child completion and parent finalization share one synchronous turn. A
|
|
533
|
+
// provider flush must not reset invocation state between these two actions.
|
|
534
|
+
finishOperation(info) {
|
|
491
535
|
if (!this.tracingEnabled) {
|
|
492
536
|
return;
|
|
493
537
|
}
|
|
538
|
+
// Checkpoint updates may complete an unawaited operation from an earlier
|
|
539
|
+
// invocation. Drain it before removing its live parent from spanMap.
|
|
540
|
+
if (info.type === "CONTEXT" && !info.isReplay) {
|
|
541
|
+
for (const child of this.externalCompletions.pending.values()) {
|
|
542
|
+
if (child.parentId === info.id) {
|
|
543
|
+
this.finishOperation({ ...child, isReplay: false });
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
}
|
|
494
547
|
// Updates and traversal can report the same completion in either order.
|
|
495
548
|
// The set is reset each invocation so failed-invocation redelivery remains
|
|
496
549
|
// eligible, while normal replay never exports a completion a second time.
|
|
497
550
|
if (this.externalCompletions.shouldSkip(info)) {
|
|
498
551
|
return;
|
|
499
552
|
}
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
553
|
+
const currentSpan = this.spanMap.get(info.id);
|
|
554
|
+
if (currentSpan && !this.endedOperationSpans.has(currentSpan)) {
|
|
555
|
+
// Operation was started in this invocation and its segment is still open
|
|
556
|
+
const span = currentSpan;
|
|
503
557
|
// Finalize the operation status from the core-supplied terminal status.
|
|
504
558
|
// Container CONTEXT ops receive a terminal status from the core too:
|
|
505
559
|
// run-in-child-context-handler passes SUCCEEDED/FAILED on both the
|
|
@@ -514,25 +568,12 @@ class InvocationOtelPlugin {
|
|
|
514
568
|
info.attempt != null) {
|
|
515
569
|
span.setAttribute("durable.attempt.number", info.attempt);
|
|
516
570
|
}
|
|
517
|
-
|
|
518
|
-
// SUCCEEDED terminal status (matches Python OTel plugin #604). Only
|
|
519
|
-
// reached for operations that terminate this invocation — suspended ops
|
|
520
|
-
// early-return above and keep their STARTED status UNSET. Terminal
|
|
521
|
-
// FAILURE statuses (TIMED_OUT/STOPPED/FAILED/CANCELLED) can arrive with
|
|
522
|
-
// NO error object (callback-timeout, chained-invoke fast paths); those
|
|
523
|
-
// must NOT be labelled OK, so they are left UNSET.
|
|
571
|
+
pluginRegistration.setOperationSpanStatus(span, info);
|
|
524
572
|
if (info.error) {
|
|
525
|
-
span.setStatus({
|
|
526
|
-
code: api.SpanStatusCode.ERROR,
|
|
527
|
-
message: info.error.message,
|
|
528
|
-
});
|
|
529
573
|
span.recordException(info.error, this.liveTimestamp());
|
|
530
574
|
}
|
|
531
|
-
else if (info.status === "SUCCEEDED") {
|
|
532
|
-
span.setStatus({ code: api.SpanStatusCode.OK });
|
|
533
|
-
}
|
|
534
575
|
// End the span
|
|
535
|
-
|
|
576
|
+
this.endOperationSpan(span, this.liveTimestamp());
|
|
536
577
|
// Remove from map
|
|
537
578
|
this.spanMap.delete(info.id);
|
|
538
579
|
// Remove from stack (find by reference)
|
|
@@ -589,24 +630,12 @@ class InvocationOtelPlugin {
|
|
|
589
630
|
links: this.replayLinks(info.id),
|
|
590
631
|
startTime: this.liveTimestamp(),
|
|
591
632
|
}, parentContext);
|
|
592
|
-
|
|
593
|
-
// SUCCEEDED terminal status (matches Python OTel plugin #604). This is
|
|
594
|
-
// the terminal completion path for an operation started in a prior
|
|
595
|
-
// invocation. Terminal FAILURE statuses can arrive with NO error object
|
|
596
|
-
// (callback-timeout, chained-invoke 'already failed' cross-invocation
|
|
597
|
-
// fast paths); those must NOT be labelled OK, so they are left UNSET.
|
|
633
|
+
pluginRegistration.setOperationSpanStatus(continuationSpan, info);
|
|
598
634
|
if (info.error) {
|
|
599
|
-
continuationSpan.setStatus({
|
|
600
|
-
code: api.SpanStatusCode.ERROR,
|
|
601
|
-
message: info.error.message,
|
|
602
|
-
});
|
|
603
635
|
continuationSpan.recordException(info.error, this.liveTimestamp());
|
|
604
636
|
}
|
|
605
|
-
else if (info.status === "SUCCEEDED") {
|
|
606
|
-
continuationSpan.setStatus({ code: api.SpanStatusCode.OK });
|
|
607
|
-
}
|
|
608
637
|
// Immediately end
|
|
609
|
-
|
|
638
|
+
this.endOperationSpan(continuationSpan, this.liveTimestamp());
|
|
610
639
|
}
|
|
611
640
|
this.externalCompletions.markExported(info);
|
|
612
641
|
}
|
|
@@ -674,13 +703,13 @@ class InvocationOtelPlugin {
|
|
|
674
703
|
// Non-failed attempt: stamp explicit OK (matches Python OTel #604).
|
|
675
704
|
attemptSpan.setStatus({ code: api.SpanStatusCode.OK });
|
|
676
705
|
}
|
|
677
|
-
|
|
706
|
+
this.endOperationSpan(attemptSpan, this.liveTimestamp());
|
|
678
707
|
this.spanMap.delete(key);
|
|
679
708
|
}
|
|
680
709
|
}
|
|
681
710
|
async onOperationChange(info) {
|
|
682
711
|
if (this.tracingEnabled) {
|
|
683
|
-
this.externalCompletions.observe(info.updatedOperations);
|
|
712
|
+
this.externalCompletions.observe(info.updatedOperations, info.operations);
|
|
684
713
|
}
|
|
685
714
|
}
|
|
686
715
|
enrichLogContext() {
|