@nodii/telemetry 0.19.0 → 0.20.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 (36) hide show
  1. package/dist/context-adapter/grpc.d.ts +48 -0
  2. package/dist/context-adapter/grpc.d.ts.map +1 -1
  3. package/dist/context-adapter/grpc.js +28 -1
  4. package/dist/context-adapter/grpc.js.map +1 -1
  5. package/dist/context-adapter/index.d.ts +1 -1
  6. package/dist/context-adapter/index.d.ts.map +1 -1
  7. package/dist/context-adapter/index.js +1 -1
  8. package/dist/context-adapter/index.js.map +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/init.d.ts.map +1 -1
  14. package/dist/init.js +13 -0
  15. package/dist/init.js.map +1 -1
  16. package/dist/propagation.d.ts +15 -0
  17. package/dist/propagation.d.ts.map +1 -0
  18. package/dist/propagation.js +62 -0
  19. package/dist/propagation.js.map +1 -0
  20. package/dist/worker/observability-hooks.d.ts +8 -0
  21. package/dist/worker/observability-hooks.d.ts.map +1 -1
  22. package/dist/worker/observability-hooks.js +17 -0
  23. package/dist/worker/observability-hooks.js.map +1 -1
  24. package/dist/worker/replication-worker.d.ts +1 -1
  25. package/dist/worker/replication-worker.d.ts.map +1 -1
  26. package/dist/worker/replication-worker.js +19 -2
  27. package/dist/worker/replication-worker.js.map +1 -1
  28. package/dist/worker/single-active-lease.d.ts +103 -3
  29. package/dist/worker/single-active-lease.d.ts.map +1 -1
  30. package/dist/worker/single-active-lease.js +183 -7
  31. package/dist/worker/single-active-lease.js.map +1 -1
  32. package/dist/worker/streams-worker.d.ts +3 -2
  33. package/dist/worker/streams-worker.d.ts.map +1 -1
  34. package/dist/worker/streams-worker.js +21 -2
  35. package/dist/worker/streams-worker.js.map +1 -1
  36. package/package.json +2 -1
@@ -1,6 +1,12 @@
1
1
  import { type AdapterClaims, type MapClaimsOptions } from "./claims.js";
2
2
  /** Canonical inbound request-id metadata key. */
3
3
  export declare const REQUEST_ID_METADATA = "x-request-id";
4
+ /**
5
+ * Canonical inbound W3C trace-context metadata key (lower-case; gRPC
6
+ * metadata keys are case-insensitive and normalized to lower-case by
7
+ * `@grpc/grpc-js`). Symmetric with the Hono seam's `traceparent` header.
8
+ */
9
+ export declare const TRACEPARENT_METADATA = "traceparent";
4
10
  /**
5
11
  * Minimal structural shape of a gRPC unary call this adapter reads. A
6
12
  * real `@grpc/grpc-js` `ServerUnaryCall` (and the `@nodii/grpc-auth`
@@ -50,6 +56,48 @@ export interface NodiiContextInterceptorOptions extends Pick<MapClaimsOptions, "
50
56
  * `UserActorEnvelope` only carries a single `user_role`).
51
57
  */
52
58
  rolesMetadata?: string;
59
+ /**
60
+ * Honor an inbound W3C `traceparent` metadata value so the callee's
61
+ * handler spans CONTINUE the caller's distributed trace instead of
62
+ * minting a fresh root trace at the gRPC hop. Default `true`.
63
+ *
64
+ * WHY THIS EXISTS (the tier-3 `telemetry-trace-continuity-grpc-hop`
65
+ * gap it closes): when a caller drives an RPC with a `traceparent` in
66
+ * call metadata, the callee must extract it into the active span
67
+ * context so the server span (and every child span) carries the SAME
68
+ * `trace_id`. Without this the interceptor set `NodiiContext` but never
69
+ * touched the trace context, so `tracer.span(...)` in the handler
70
+ * started a fresh root trace and the distributed trace did NOT span the
71
+ * hop. This mirrors the Hono seam's `honoTelemetry({ honorInboundTraceparent })`
72
+ * for the gRPC seam — the two entry seams are now symmetric.
73
+ *
74
+ * When honored + present, the interceptor opens ONE OTel SERVER span per
75
+ * RPC that inherits the inbound `trace_id`/`parent_span_id`, and runs the
76
+ * handler INSIDE that span so downstream `tracer.span(...)` calls nest
77
+ * under it (the lib's active-span stack makes it the parent for the
78
+ * handler scope). A malformed inbound `traceparent` does NOT throw — the
79
+ * SERVER span starts as a root span and records the raw value under
80
+ * `telemetry.inbound_traceparent_malformed` (see `tracer.ts`).
81
+ *
82
+ * Set `false` to skip the SERVER span entirely (the handler runs directly
83
+ * inside the `NodiiContext` scope with no interceptor-opened span) — e.g.
84
+ * when a separate OTel gRPC server instrumentation already owns the
85
+ * server span, or the trust boundary requires a fresh trace root.
86
+ */
87
+ honorInboundTraceparent?: boolean;
88
+ /**
89
+ * Metadata key to read the inbound W3C `traceparent` from. Defaults to
90
+ * `traceparent`.
91
+ */
92
+ traceparentMetadata?: string;
93
+ /**
94
+ * Name for the interceptor-opened SERVER span. Receives the gRPC method
95
+ * name (the first arg the interceptor is called with, e.g.
96
+ * `"/nodii.billing.v1.Billing/GetInvoice"`). Defaults to the method name
97
+ * verbatim — a low-cardinality, gRPC-semconv-shaped value. Ignored when
98
+ * `honorInboundTraceparent` is `false`.
99
+ */
100
+ spanName?: (methodName: string) => string;
53
101
  }
54
102
  /**
55
103
  * gRPC server interceptor that SETS the active `NodiiContext` for the
@@ -1 +1 @@
1
- {"version":3,"file":"grpc.d.ts","sourceRoot":"","sources":["../../src/context-adapter/grpc.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAEtB,MAAM,aAAa,CAAC;AAErB,iDAAiD;AACjD,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE;QACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;KAClD,CAAC;IACF,sEAAsE;IACtE,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE;YACb,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,GAAG,IAAI,CAAC;QACT,SAAS,CAAC,EAAE;YACV,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,GAAG,IAAI,CAAC;QACT,cAAc,CAAC,EAAE;YACf,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,GAAG,IAAI,CAAC;KACV,GAAG,IAAI,CAAC;IACT,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AACzE,MAAM,MAAM,oBAAoB,GAAG,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB,KACtB,gBAAgB,CAAC;AAEtB,MAAM,WAAW,8BACf,SAAQ,IAAI,CACV,gBAAgB,EAChB,oBAAoB,GAAG,cAAc,GAAG,gBAAgB,CACzD;IACD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,aAAa,GAAG,IAAI,CAAC;IAC9D,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA4ED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,8BAAmC,GAC3C,oBAAoB,CAsBtB"}
1
+ {"version":3,"file":"grpc.d.ts","sourceRoot":"","sources":["../../src/context-adapter/grpc.ts"],"names":[],"mappings":"AAiBA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAEtB,MAAM,aAAa,CAAC;AAErB,iDAAiD;AACjD,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE;QACT,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,OAAO,EAAE,GAAG,SAAS,CAAC;KAClD,CAAC;IACF,sEAAsE;IACtE,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE;YACb,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,GAAG,IAAI,CAAC;QACT,SAAS,CAAC,EAAE;YACV,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,GAAG,IAAI,CAAC;QACT,cAAc,CAAC,EAAE;YACf,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,GAAG,IAAI,CAAC;KACV,GAAG,IAAI,CAAC;IACT,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AACzE,MAAM,MAAM,oBAAoB,GAAG,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB,KACtB,gBAAgB,CAAC;AAEtB,MAAM,WAAW,8BACf,SAAQ,IAAI,CACV,gBAAgB,EAChB,oBAAoB,GAAG,cAAc,GAAG,gBAAgB,CACzD;IACD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,aAAa,GAAG,IAAI,CAAC;IAC9D,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AA4ED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,8BAAmC,GAC3C,oBAAoB,CA+CtB"}
@@ -12,9 +12,16 @@
12
12
  // It is an INBOUND seam: it SETS context for the handler scope and makes
13
13
  // no outbound peer calls.
14
14
  import { withContext } from "../context.js";
15
+ import { tracer } from "../tracer.js";
15
16
  import { mapClaimsToContext, } from "./claims.js";
16
17
  /** Canonical inbound request-id metadata key. */
17
18
  export const REQUEST_ID_METADATA = "x-request-id";
19
+ /**
20
+ * Canonical inbound W3C trace-context metadata key (lower-case; gRPC
21
+ * metadata keys are case-insensitive and normalized to lower-case by
22
+ * `@grpc/grpc-js`). Symmetric with the Hono seam's `traceparent` header.
23
+ */
24
+ export const TRACEPARENT_METADATA = "traceparent";
18
25
  /** Read the first value of a metadata key as a UTF-8 string. */
19
26
  function readMetadata(call, key) {
20
27
  const values = call.metadata?.get(key);
@@ -94,9 +101,12 @@ function defaultExtractClaims(call, rolesMetadata) {
94
101
  export function nodiiContextInterceptor(options = {}) {
95
102
  const requestIdMetadata = options.requestIdMetadata ?? REQUEST_ID_METADATA;
96
103
  const rolesMetadata = options.rolesMetadata ?? "x-user-roles";
104
+ const honorInbound = options.honorInboundTraceparent ?? true;
105
+ const traceparentMetadata = options.traceparentMetadata ?? TRACEPARENT_METADATA;
106
+ const nameOf = options.spanName ?? ((methodName) => methodName);
97
107
  const extract = options.extractClaims ??
98
108
  ((call) => defaultExtractClaims(call, rolesMetadata));
99
- return (_methodName, handler) => {
109
+ return (methodName, handler) => {
100
110
  return (call) => {
101
111
  const claims = extract(call) ?? {};
102
112
  const requestId = readMetadata(call, requestIdMetadata) ?? null;
@@ -106,6 +116,23 @@ export function nodiiContextInterceptor(options = {}) {
106
116
  roleFallback: options.roleFallback,
107
117
  tenantFallback: options.tenantFallback,
108
118
  });
119
+ // Trace-continuity across the gRPC hop (tier-3
120
+ // `telemetry-trace-continuity-grpc-hop`). Read the inbound W3C
121
+ // `traceparent` from call metadata and, when present + honored, open a
122
+ // SERVER span that INHERITS the caller's trace_id, running the handler
123
+ // inside it so the callee's spans continue the distributed trace rather
124
+ // than minting a fresh root. Symmetric with `honoTelemetry` on the Hono
125
+ // seam. Malformed traceparent → root SERVER span + forensic attr (no
126
+ // throw), handled by `tracer.span`'s `parent` resolution.
127
+ const inboundTraceparent = honorInbound
128
+ ? readMetadata(call, traceparentMetadata)
129
+ : undefined;
130
+ if (inboundTraceparent) {
131
+ return withContext(ctx, () => tracer.span(nameOf(methodName), () => handler(call), {
132
+ kind: "SERVER",
133
+ parent: inboundTraceparent,
134
+ }));
135
+ }
109
136
  return withContext(ctx, () => handler(call));
110
137
  };
111
138
  };
@@ -1 +1 @@
1
- {"version":3,"file":"grpc.js","sourceRoot":"","sources":["../../src/context-adapter/grpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grpc.js","sourceRoot":"","sources":["../../src/context-adapter/grpc.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export { type AdapterClaims, type MapClaimsOptions, collapseRolesToHighest, deriveActorType, mapClaimsToContext, ROLE_PRIVILEGE_ORDER, } from "./claims.js";
2
2
  export { type NodiiContextMiddlewareOptions, nodiiContextMiddleware, REQUEST_ID_HEADER, } from "./hono.js";
3
- export { type GrpcUnaryCall, type GrpcUnaryHandler, type GrpcUnaryInterceptor, type NodiiContextInterceptorOptions, nodiiContextInterceptor, REQUEST_ID_METADATA, } from "./grpc.js";
3
+ export { type GrpcUnaryCall, type GrpcUnaryHandler, type GrpcUnaryInterceptor, type NodiiContextInterceptorOptions, nodiiContextInterceptor, REQUEST_ID_METADATA, TRACEPARENT_METADATA, } from "./grpc.js";
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context-adapter/index.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,6BAA6B,EAClC,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context-adapter/index.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,KAAK,6BAA6B,EAClC,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,WAAW,CAAC"}
@@ -13,5 +13,5 @@
13
13
  // seam (cron / sweeper flows) don't pull `hono`.
14
14
  export { collapseRolesToHighest, deriveActorType, mapClaimsToContext, ROLE_PRIVILEGE_ORDER, } from "./claims.js";
15
15
  export { nodiiContextMiddleware, REQUEST_ID_HEADER, } from "./hono.js";
16
- export { nodiiContextInterceptor, REQUEST_ID_METADATA, } from "./grpc.js";
16
+ export { nodiiContextInterceptor, REQUEST_ID_METADATA, TRACEPARENT_METADATA, } from "./grpc.js";
17
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context-adapter/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,+DAA+D;AAC/D,iEAAiE;AACjE,EAAE;AACF,mEAAmE;AACnE,oEAAoE;AACpE,4EAA4E;AAC5E,EAAE;AACF,uEAAuE;AACvE,iDAAiD;AAEjD,OAAO,EAGL,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAKL,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context-adapter/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,+DAA+D;AAC/D,iEAAiE;AACjE,EAAE;AACF,mEAAmE;AACnE,oEAAoE;AACpE,4EAA4E;AAC5E,EAAE;AACF,uEAAuE;AACvE,iDAAiD;AAEjD,OAAO,EAGL,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EAKL,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,WAAW,CAAC"}
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export { getActiveSpan } from "./active-span.js";
8
8
  export type { ActiveSpanRef } from "./active-span.js";
9
9
  export type { ExtractedSpanContext, Span, SpanKind, SpanOptions, SpanParent, SpanRecord, SpanStatus, } from "./tracer.js";
10
10
  export { forensicParentValue, parseTraceparent, resolveSpanParent, } from "./traceparent.js";
11
+ export { installGlobalPropagator } from "./propagation.js";
11
12
  export { metrics, MetricVocabularyError, recordMetric } from "./metrics.js";
12
13
  export type { CounterHandle, GaugeHandle, HistogramHandle, MetricKind, MetricRegistration, RecordMetricArgs, } from "./metrics.js";
13
14
  export { _getAuditChain, _hasAnyAuditWriter, _resetAuditChainForTests, _resetDefaultAuditWriterForTests, _resetAuditWriterForTests, _setAuditChain, _setAuditWriter, _setDefaultAuditWriterProvider, audit, AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, } from "./audit.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -38,6 +38,7 @@ export { logger, createLogger } from "./logger.js";
38
38
  export { tracer, withSpanAttributes, getSagaTracer } from "./tracer.js";
39
39
  export { getActiveSpan } from "./active-span.js";
40
40
  export { forensicParentValue, parseTraceparent, resolveSpanParent, } from "./traceparent.js";
41
+ export { installGlobalPropagator } from "./propagation.js";
41
42
  export { metrics, MetricVocabularyError, recordMetric } from "./metrics.js";
42
43
  export { _getAuditChain, _hasAnyAuditWriter, _resetAuditChainForTests, _resetDefaultAuditWriterForTests, _resetAuditWriterForTests, _setAuditChain, _setAuditWriter, _setDefaultAuditWriterProvider, audit, AUDIT_ACTOR_KINDS, AUDIT_OUTCOMES, } from "./audit.js";
43
44
  export { TelemetryAuditWriterMissing } from "./audit.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,EAAE;AACF,0EAA0E;AAC1E,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,4EAA4E;AAC5E,2EAA2E;AAC3E,4EAA4E;AAC5E,wEAAwE;AACxE,0EAA0E;AAC1E,mEAAmE;AACnE,0EAA0E;AAC1E,wEAAwE;AACxE,oEAAoE;AACpE,0EAA0E;AAC1E,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAC9E,4EAA4E;AAC5E,wEAAwE;AACxE,EAAE;AACF,wEAAwE;AACxE,oEAAoE;AACpE,uEAAuE;AACvE,8DAA8D;AAC9D,mDAAmD;AACnD,EAAE;AACF,oEAAoE;AACpE,gBAAgB;AAChB,EAAE;AACF,oEAAoE;AACpE,gEAAgE;AAChE,0DAA0D;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOnD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAWjD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAS5E,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,gCAAgC,EAChC,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,8BAA8B,EAC9B,KAAK,EACL,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC;AAYpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AA0BrD,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,EAAE;AACF,0EAA0E;AAC1E,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,4EAA4E;AAC5E,2EAA2E;AAC3E,4EAA4E;AAC5E,wEAAwE;AACxE,0EAA0E;AAC1E,mEAAmE;AACnE,0EAA0E;AAC1E,wEAAwE;AACxE,oEAAoE;AACpE,0EAA0E;AAC1E,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAC9E,4EAA4E;AAC5E,wEAAwE;AACxE,EAAE;AACF,wEAAwE;AACxE,oEAAoE;AACpE,uEAAuE;AACvE,8DAA8D;AAC9D,mDAAmD;AACnD,EAAE;AACF,oEAAoE;AACpE,gBAAgB;AAChB,EAAE;AACF,oEAAoE;AACpE,gEAAgE;AAChE,0DAA0D;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOnD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAWjD,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAS5E,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,wBAAwB,EACxB,gCAAgC,EAChC,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,8BAA8B,EAC9B,KAAK,EACL,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC;AAYpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,UAAU,EACV,cAAc,EACd,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AA0BrD,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,KAAK,yBAAyB,EAE9B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AAEpB,2EAA2E;AAC3E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,wBAAwB,CAAC;IAC7C,WAAW,EAAE,kBAAkB,CAAC;IAChC,mBAAmB,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IACzD,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,mBAAmB,CAAC;IACnC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CAC/D;AAgED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAsG/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,uBAAuB,CAM1D;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,IAAI,uBAAuB,GAAG,IAAI,CAEnE;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,IAAI,IAAI,CAIrC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,yBAAyB,EAE9B,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AAEpB,2EAA2E;AAC3E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,wBAAwB,CAAC;IAC7C,WAAW,EAAE,kBAAkB,CAAC;IAChC,mBAAmB,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IACzD,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,mBAAmB,CAAC;IACnC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CAC/D;AAgED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAmH/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,uBAAuB,CAM1D;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,IAAI,uBAAuB,GAAG,IAAI,CAEnE;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,IAAI,IAAI,CAIrC"}
package/dist/init.js CHANGED
@@ -8,6 +8,7 @@
8
8
  // - Any public-API call before init: throws `TelemetryNotInitialized`.
9
9
  import { _hasAnyAuditWriter } from "./audit.js";
10
10
  import { installOtlpAdapter } from "./otlp-adapter.js";
11
+ import { installGlobalPropagator } from "./propagation.js";
11
12
  import { DEFAULT_SAMPLING_CONFIG, TelemetryNotInitialized, } from "./types.js";
12
13
  /** D154 defaults. */
13
14
  const AUTO_INSTR_DEFAULTS = {
@@ -116,6 +117,18 @@ export function initTelemetry(config) {
116
117
  "default writer) or call configureTelemetry({audit:{writer}}). " +
117
118
  "(R1 — request e6b303f1; 02-audit-doctrine.md § 5.1.)");
118
119
  }
120
+ // tier-3 `telemetry-trace-continuity-grpc-hop` — install the GLOBAL W3C
121
+ // trace-context propagator UNCONDITIONALLY, before (and independent of) the
122
+ // OTLP-endpoint branch below. Previously the global propagator was set only
123
+ // as a side effect of `installOtlpAdapter`'s `NodeTracerProvider.register()`,
124
+ // so a collector-less init (no endpoint / `disableOtlp: true`) left the
125
+ // default NO-OP propagator installed — `propagation.extract()` returned an
126
+ // empty context and the OTel gRPC/HTTP server instrumentations could not
127
+ // extract the inbound `traceparent`, so every hop minted a fresh root trace.
128
+ // Setting it here guarantees inbound trace-context extraction works on EVERY
129
+ // init. Idempotent; the OTLP adapter's later `.register()` sets the same
130
+ // composite (identical wire fields), so there is no conflict.
131
+ installGlobalPropagator();
119
132
  // D153/D154 — wire real OTLP exporters when an endpoint is present
120
133
  // and OTLP isn't explicitly disabled. The adapter replaces the no-op
121
134
  // SpanEmitter / LogSink / MetricsBackend with real OTel SDK pipelines.
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Install the global W3C trace-context (+ baggage) propagator so
3
+ * `propagation.extract()` / `propagation.inject()` — and the OTel
4
+ * http/grpc auto-instrumentations that call them — carry the inbound
5
+ * `traceparent` across the hop. Idempotent: subsequent calls no-op.
6
+ *
7
+ * Safe to call before OR without `installOtlpAdapter`. When the OTLP adapter
8
+ * later runs, its `NodeTracerProvider.register()` sets the SAME composite
9
+ * (identical wire fields), so there is no conflict — this just guarantees the
10
+ * propagator exists on the collector-less path too.
11
+ */
12
+ export declare function installGlobalPropagator(): void;
13
+ /** Test-only reset of the install guard. NOT part of the public barrel. */
14
+ export declare function _resetGlobalPropagatorForTests(): void;
15
+ //# sourceMappingURL=propagation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propagation.d.ts","sourceRoot":"","sources":["../src/propagation.ts"],"names":[],"mappings":"AA0CA;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAW9C;AAED,2EAA2E;AAC3E,wBAAgB,8BAA8B,IAAI,IAAI,CAErD"}
@@ -0,0 +1,62 @@
1
+ // Global W3C trace-context propagator wiring (tier-3
2
+ // `telemetry-trace-continuity-grpc-hop`).
3
+ //
4
+ // ROOT CAUSE this closes:
5
+ // Distributed trace continuity across a gRPC (or HTTP) hop depends on a
6
+ // GLOBAL OTel propagator being installed so `propagation.extract()` on the
7
+ // callee can read the inbound W3C `traceparent` into the active context.
8
+ // The `@nodii/telemetry` OTLP adapter installs it as a SIDE EFFECT of
9
+ // `NodeTracerProvider.register()` — but `register()` only runs when an OTLP
10
+ // endpoint is configured (`installOtlpAdapter`). A service that inits
11
+ // telemetry WITHOUT an endpoint (dev, tests, `disableOtlp: true`, or a
12
+ // collector-less staging box) therefore left the GLOBAL propagator as the
13
+ // default NO-OP propagator: `propagation.extract()` returned an empty
14
+ // context and `@opentelemetry/instrumentation-grpc`'s server-side extract
15
+ // was a silent no-op, so the callee minted a FRESH ROOT trace at every hop.
16
+ //
17
+ // Empirically verified in this repo: before `register()`,
18
+ // `propagation.fields()` is `[]` and extracting a `traceparent` carrier
19
+ // yields NO span context; after it, the W3C fields are present and
20
+ // extraction round-trips. See `tests/propagation.test.ts`.
21
+ //
22
+ // FIX: set the global propagator EXPLICITLY + UNCONDITIONALLY at
23
+ // `initTelemetry()`, independent of whether an OTLP endpoint resolves. The
24
+ // composite mirrors the OTel Node default (`tracecontext` + `baggage`) so we
25
+ // keep the same wire behavior the OTLP-endpoint path already produced, but
26
+ // now it is guaranteed on EVERY init.
27
+ //
28
+ // We construct the propagators from `@opentelemetry/core` (a direct dep,
29
+ // version-pinned to the SDK's own copy) and set them through the
30
+ // `@opentelemetry/api` global — the same global `GrpcInstrumentation`,
31
+ // `HttpInstrumentation`, and any manual `propagation.extract()` read from.
32
+ import { propagation } from "@opentelemetry/api";
33
+ import { CompositePropagator, W3CBaggagePropagator, W3CTraceContextPropagator, } from "@opentelemetry/core";
34
+ /** Idempotency guard — set the global propagator exactly once per process. */
35
+ let _installed = false;
36
+ /**
37
+ * Install the global W3C trace-context (+ baggage) propagator so
38
+ * `propagation.extract()` / `propagation.inject()` — and the OTel
39
+ * http/grpc auto-instrumentations that call them — carry the inbound
40
+ * `traceparent` across the hop. Idempotent: subsequent calls no-op.
41
+ *
42
+ * Safe to call before OR without `installOtlpAdapter`. When the OTLP adapter
43
+ * later runs, its `NodeTracerProvider.register()` sets the SAME composite
44
+ * (identical wire fields), so there is no conflict — this just guarantees the
45
+ * propagator exists on the collector-less path too.
46
+ */
47
+ export function installGlobalPropagator() {
48
+ if (_installed)
49
+ return;
50
+ _installed = true;
51
+ propagation.setGlobalPropagator(new CompositePropagator({
52
+ propagators: [
53
+ new W3CTraceContextPropagator(),
54
+ new W3CBaggagePropagator(),
55
+ ],
56
+ }));
57
+ }
58
+ /** Test-only reset of the install guard. NOT part of the public barrel. */
59
+ export function _resetGlobalPropagatorForTests() {
60
+ _installed = false;
61
+ }
62
+ //# sourceMappingURL=propagation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propagation.js","sourceRoot":"","sources":["../src/propagation.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,0CAA0C;AAC1C,EAAE;AACF,0BAA0B;AAC1B,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,wEAAwE;AACxE,8EAA8E;AAC9E,wEAAwE;AACxE,yEAAyE;AACzE,4EAA4E;AAC5E,wEAAwE;AACxE,4EAA4E;AAC5E,8EAA8E;AAC9E,EAAE;AACF,4DAA4D;AAC5D,0EAA0E;AAC1E,qEAAqE;AACrE,6DAA6D;AAC7D,EAAE;AACF,iEAAiE;AACjE,2EAA2E;AAC3E,6EAA6E;AAC7E,2EAA2E;AAC3E,sCAAsC;AACtC,EAAE;AACF,yEAAyE;AACzE,iEAAiE;AACjE,uEAAuE;AACvE,2EAA2E;AAE3E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,8EAA8E;AAC9E,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB;IACrC,IAAI,UAAU;QAAE,OAAO;IACvB,UAAU,GAAG,IAAI,CAAC;IAClB,WAAW,CAAC,mBAAmB,CAC7B,IAAI,mBAAmB,CAAC;QACtB,WAAW,EAAE;YACX,IAAI,yBAAyB,EAAE;YAC/B,IAAI,oBAAoB,EAAE;SAC3B;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,8BAA8B;IAC5C,UAAU,GAAG,KAAK,CAAC;AACrB,CAAC"}
@@ -5,6 +5,7 @@ export declare const WORKER_METRIC_NAMES: {
5
5
  readonly leaseAcquired: "nodii.worker.lease.acquired_total";
6
6
  readonly leaseRenewed: "nodii.worker.lease.renewed_total";
7
7
  readonly leaseLost: "nodii.worker.lease.lost_total";
8
+ readonly leaseReacquired: "nodii.worker.lease.reacquired_total";
8
9
  readonly lag: "nodii.worker.lag";
9
10
  readonly currentHwm: "nodii.worker.current_hwm";
10
11
  readonly depth: "nodii.worker.depth";
@@ -74,6 +75,13 @@ export declare class ObservabilityHooks {
74
75
  leaseRenewed(extra?: Record<string, string | number>): void;
75
76
  /** The worker lost its lease (renew CAS failed / taken over / errored). */
76
77
  leaseLost(extra?: Record<string, string | number>): void;
78
+ /**
79
+ * The worker's single-active lease SELF-HEALED after a transient loss — the
80
+ * lost holder re-took the lease with a fresh strictly-greater fence. A healthy
81
+ * single-instance plane shows `reacquired_total ≈ lost_total`; a persistent
82
+ * gap (`lost_total >> reacquired_total`) means the plane is genuinely down.
83
+ */
84
+ leaseReacquired(extra?: Record<string, string | number>): void;
77
85
  /** Snapshot the current consumer lag in seconds. */
78
86
  recordLag(seconds: number, extra?: Record<string, string | number>): void;
79
87
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"observability-hooks.d.ts","sourceRoot":"","sources":["../../src/worker/observability-hooks.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,KAAK,gBAAgB,EAAgB,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EAAc,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAExE,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB;;;;;;;;;CAStB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,wBAyDzC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAE9D,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,UAAU,EAAE,sBAAsB,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAcD;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,IAAI,EAAE,sBAAsB;IAMxC,OAAO,CAAC,IAAI;IAcZ,mDAAmD;IACnD,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAI5D,wDAAwD;IACxD,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAI3D,2EAA2E;IAC3E,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAIxD,oDAAoD;IACpD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAIzE;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAI1E,qEAAqE;IACrE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAIzE,6DAA6D;IAC7D,mBAAmB,CACjB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GACtC,IAAI;IAIP,uDAAuD;IACvD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;CAG1E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAM7D"}
1
+ {"version":3,"file":"observability-hooks.d.ts","sourceRoot":"","sources":["../../src/worker/observability-hooks.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,KAAK,gBAAgB,EAAgB,MAAM,eAAe,CAAC;AACpE,OAAO,KAAK,EAAc,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAExE,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB;;;;;;;;;;CAUtB,CAAC;AAEX;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,wBAgEzC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAE9D,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,UAAU,EAAE,sBAAsB,CAAC;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAcD;;;;;;;;;;;;;GAaG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,IAAI,EAAE,sBAAsB;IAMxC,OAAO,CAAC,IAAI;IAcZ,mDAAmD;IACnD,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAI5D,wDAAwD;IACxD,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAI3D,2EAA2E;IAC3E,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAIxD;;;;;OAKG;IACH,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAI9D,oDAAoD;IACpD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAIzE;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAI1E,qEAAqE;IACrE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;IAIzE,6DAA6D;IAC7D,mBAAmB,CACjB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GACtC,IAAI;IAIP,uDAAuD;IACvD,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI;CAG1E;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAM7D"}
@@ -6,6 +6,7 @@
6
6
  // - nodii.worker.lease.acquired_total (counter)
7
7
  // - nodii.worker.lease.renewed_total (counter)
8
8
  // - nodii.worker.lease.lost_total (counter)
9
+ // - nodii.worker.lease.reacquired_total (counter)
9
10
  // - nodii.worker.lag (gauge, seconds)
10
11
  // - nodii.worker.current_hwm (gauge)
11
12
  // - nodii.worker.depth (gauge — backlog/stream depth)
@@ -31,6 +32,7 @@ export const WORKER_METRIC_NAMES = {
31
32
  leaseAcquired: "nodii.worker.lease.acquired_total",
32
33
  leaseRenewed: "nodii.worker.lease.renewed_total",
33
34
  leaseLost: "nodii.worker.lease.lost_total",
35
+ leaseReacquired: "nodii.worker.lease.reacquired_total",
34
36
  lag: "nodii.worker.lag",
35
37
  currentHwm: "nodii.worker.current_hwm",
36
38
  depth: "nodii.worker.depth",
@@ -63,6 +65,12 @@ export const WORKER_SUBSTRATE_VOCABULARY = {
63
65
  description: "Single-active lease losses (renew CAS failed / lease taken over / errored).",
64
66
  decision: "D402",
65
67
  },
68
+ [WORKER_METRIC_NAMES.leaseReacquired]: {
69
+ family: "async_worker",
70
+ kind: "counter",
71
+ description: "Single-active lease self-healing re-acquisitions after a transient loss (a lost holder re-took the lease with a fresh strictly-greater fence). A healthy single-instance plane shows reacquired_total ≈ lost_total.",
72
+ decision: "D402",
73
+ },
66
74
  [WORKER_METRIC_NAMES.lag]: {
67
75
  family: "async_worker",
68
76
  kind: "gauge",
@@ -147,6 +155,15 @@ export class ObservabilityHooks {
147
155
  leaseLost(extra) {
148
156
  this.emit("counter", WORKER_METRIC_NAMES.leaseLost, 1, extra);
149
157
  }
158
+ /**
159
+ * The worker's single-active lease SELF-HEALED after a transient loss — the
160
+ * lost holder re-took the lease with a fresh strictly-greater fence. A healthy
161
+ * single-instance plane shows `reacquired_total ≈ lost_total`; a persistent
162
+ * gap (`lost_total >> reacquired_total`) means the plane is genuinely down.
163
+ */
164
+ leaseReacquired(extra) {
165
+ this.emit("counter", WORKER_METRIC_NAMES.leaseReacquired, 1, extra);
166
+ }
150
167
  /** Snapshot the current consumer lag in seconds. */
151
168
  recordLag(seconds, extra) {
152
169
  this.emit("gauge", WORKER_METRIC_NAMES.lag, seconds, extra);
@@ -1 +1 @@
1
- {"version":3,"file":"observability-hooks.js","sourceRoot":"","sources":["../../src/worker/observability-hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observability-hooks.js","sourceRoot":"","sources":["../../src/worker/observability-hooks.ts"],"names":[],"mappings":"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"}
@@ -66,7 +66,7 @@ export interface ReplicationWorkerOpts {
66
66
  begin: <T>(fn: (tx: SqlExecutor) => Promise<T>) => Promise<T>;
67
67
  dedupe: DedupeStore;
68
68
  checkpoint: CheckpointStore;
69
- lease: Omit<SingleActiveLeaseOpts, "onLeaseLost">;
69
+ lease: Omit<SingleActiveLeaseOpts, "onLeaseLost" | "onLeaseReacquired">;
70
70
  /** Checkpoint subscription key. Default `replication:<sourceStream>`. */
71
71
  subscription?: string;
72
72
  deadLetter: DeadLetterSink;
@@ -1 +1 @@
1
- {"version":3,"file":"replication-worker.d.ts","sourceRoot":"","sources":["../../src/worker/replication-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"replication-worker.d.ts","sourceRoot":"","sources":["../../src/worker/replication-worker.ts"],"names":[],"mappings":"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"}
@@ -108,6 +108,13 @@ export class ReplicationWorker {
108
108
  this.lease = new SingleActiveLease({
109
109
  ...opts.lease,
110
110
  onLeaseLost: () => this.hooks.leaseLost(),
111
+ // SELF-HEAL: on a background re-acquire, count the canonical reacquired
112
+ // metric and force a group re-ensure (a Redis failover across the loss may
113
+ // have wiped the consumer group). The next pollOnce re-ensures it.
114
+ onLeaseReacquired: () => {
115
+ this.hooks.leaseReacquired();
116
+ this.groupEnsured = false;
117
+ },
111
118
  });
112
119
  this.subscription = opts.subscription ?? `replication:${opts.sourceStream}`;
113
120
  this.deadLetter = ensurePiiRedaction(opts.deadLetter);
@@ -240,8 +247,18 @@ export class ReplicationWorker {
240
247
  }
241
248
  async runLoop() {
242
249
  while (!this._stopped) {
243
- if (this.lease.lost)
244
- break;
250
+ // PAUSE-AND-RESUME (not terminal break): the lease self-heals in the
251
+ // background (its internal re-acquire loop re-takes the lease with a fresh
252
+ // fence after a transient loss), flipping `lost` back to false. A `break`
253
+ // here would never resume — the "replica worker plane down" outage. Idle
254
+ // briefly while lost and CONTINUE so the loop resumes the instant the
255
+ // lease heals. Redelivered in-flight entries are made safe on resume by
256
+ // the (event_id, topic) dedupe + HWM cursor; the mid-batch `this.lease.lost`
257
+ // guards inside pollOnce/applyOne still stop APPLYING during the gap.
258
+ if (this.lease.lost) {
259
+ await new Promise((r) => setTimeout(r, 200));
260
+ continue;
261
+ }
245
262
  try {
246
263
  const processed = await this.pollOnce();
247
264
  if (processed === 0) {