Pratik Mankawde
694062d8fd
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
2026-07-24 16:15:41 +01:00
Pratik Mankawde
2d7f3792bf
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
...
# Conflicts:
# docs/telemetry-runbook.md
2026-07-24 16:15:27 +01:00
Pratik Mankawde
380a7160c6
Merge branch 'pratik/otel-phase7-native-metrics' into pratik/otel-phase8-log-correlation
2026-07-24 16:14:30 +01:00
Pratik Mankawde
dee90b7c01
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
...
# Conflicts:
# OpenTelemetryPlan/09-data-collection-reference.md
2026-07-24 16:14:16 +01:00
Pratik Mankawde
944a8df1c0
Merge branch 'pratik/otel-phase5-docs-deployment' into pratik/otel-phase6-statsd
...
# Conflicts:
# docs/telemetry-runbook.md
2026-07-24 16:10:11 +01:00
Pratik Mankawde
7338ed8feb
Merge branch 'pratik/otel-phase4-consensus-tracing' into pratik/otel-phase5-docs-deployment
2026-07-24 16:07:14 +01:00
Pratik Mankawde
ffa782ca96
Merge branch 'pratik/otel-phase3-tx-tracing' into pratik/otel-phase4-consensus-tracing
...
# Conflicts:
# include/xrpl/telemetry/SpanNames.h
2026-07-24 16:07:03 +01:00
Pratik Mankawde
fb76c43307
feat(telemetry): correlate tx spans to the ledger being worked on
...
Add shared current_ledger_seq / current_ledger_hash span attributes so a
transaction's work can be joined to the ledger trace that produced it, and
fix discrepancy D1 (txq.enqueue was a detached trace root).
- Define current_ledger_seq / current_ledger_hash once in SpanNames.h and
re-export via `using` from TxQ/TxApply/Tx span-name headers. These name the
ledger being worked on (open/tentative apply or in-flight consensus build),
distinct from ledger_seq (the built/validated ledger on ledger.build /
consensus.round). Named after the RPC field ledger_current_index.
- txq.enqueue: set current_ledger_seq/hash from the view, and parent the span
to the caller's tx.process span via an explicit captured SpanContext (new
trailing TxQ::apply param) instead of a detached root. The parent is
explicit, not ambient-inherited, and the ScopedSpanGuard scope is RAII-bound
to the synchronous apply, so it cannot leak onto a reused worker (D1 fix).
On the open-ledger rebuild path no tx.process context exists, so it stays a
root and the attribute provides the correlation.
- tx.preclaim / tx.transactor: set both attributes from their ledger view.
tx.preflight is stateless (no view) and is the documented exception.
- tx.process / tx.receive: set current_ledger_seq from the current open ledger
index at submit/receive time (no hash: not yet applied to a ledger).
- Contract test pins the two new attribute key strings.
Neither key is a spanmetrics dimension, so there is no metric-cardinality
impact. Dashboards/collector/docs land on the later phases per the chain split.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-24 16:03:42 +01:00
Pratik Mankawde
da3e94757c
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
2026-07-24 15:34:01 +01:00
Pratik Mankawde
0be2250c07
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
2026-07-24 15:34:01 +01:00
Pratik Mankawde
07bc6d2ce7
refactor(telemetry): name trace_id/span_id literals and hex widths in Log
...
Replace the raw "trace_id="/" span_id=" prefix literals and the bare 32/16
hex-width magic numbers in the log trace-context injection with named
constexpr constants (kTraceIdPrefix, kSpanIdPrefix, kTraceIdHexLen,
kSpanIdHexLen), documenting that the widths are the W3C 16-byte trace_id /
8-byte span_id rendered as lowercase hex. No behavior change.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-24 15:32:41 +01:00
Pratik Mankawde
1f441c84c7
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
2026-07-24 12:33:52 +01:00
Pratik Mankawde
af9ef63969
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
2026-07-24 12:33:42 +01:00
Pratik Mankawde
0de12c75b3
Merge branch 'pratik/otel-phase7-native-metrics' into pratik/otel-phase8-log-correlation
2026-07-24 12:33:42 +01:00
Pratik Mankawde
1e1b475cf0
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
...
# Conflicts:
# .codecov.yml
2026-07-24 12:33:39 +01:00
Pratik Mankawde
6bd79a3be1
Merge branch 'pratik/otel-phase5-docs-deployment' into pratik/otel-phase6-statsd
2026-07-24 12:28:37 +01:00
Pratik Mankawde
09a1491973
Merge branch 'pratik/otel-phase4-consensus-tracing' into pratik/otel-phase5-docs-deployment
2026-07-24 12:28:24 +01:00
Pratik Mankawde
0a76df5f3c
Merge branch 'pratik/otel-phase3-tx-tracing' into pratik/otel-phase4-consensus-tracing
...
# Conflicts:
# include/xrpl/telemetry/SpanGuard.h
# src/libxrpl/telemetry/SpanGuard.cpp
2026-07-24 12:28:08 +01:00
Pratik Mankawde
07b8e90bd5
Merge branch 'pratik/otel-phase2-rpc-tracing' into pratik/otel-phase3-tx-tracing
2026-07-24 12:25:36 +01:00
Pratik Mankawde
6165a26fed
Merge branch 'pratik/otel-phase1c-rpc-integration' into pratik/otel-phase2-rpc-tracing
2026-07-24 12:25:36 +01:00
Pratik Mankawde
0feb356d42
Merge branch 'pratik/otel-phase1b-telemetry-infra' into pratik/otel-phase1c-rpc-integration
2026-07-24 12:25:35 +01:00
Pratik Mankawde
017c82eeee
make span functions noexcept
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-07-24 12:20:35 +01:00
Pratik Mankawde
11e5454a0f
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
...
Carries the review fixes forward to phase-10: no-alloc GetCurrent hot path,
activateIfLive helper deduplicating the four worker-body activation sites,
non-copyable CoroAwareContextStorage, and the clarified drop-counter doc.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 14:10:02 +01:00
Pratik Mankawde
18eab81628
refactor(telemetry): use activateIfLive helper at ledger.acquire site
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 14:09:18 +01:00
Pratik Mankawde
d66e0c7fc2
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
...
Carries activation-site dedup (activateIfLive) + no-alloc GetCurrent forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 14:08:03 +01:00
Pratik Mankawde
0187250108
Merge branch 'pratik/otel-phase7-native-metrics' into pratik/otel-phase8-log-correlation
...
Carries activation-site dedup (activateIfLive) + no-alloc GetCurrent forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 14:08:02 +01:00
Pratik Mankawde
b2f5f65b2f
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
...
Carries activation-site dedup (activateIfLive) + no-alloc GetCurrent forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 14:08:01 +01:00
Pratik Mankawde
4975a38089
Merge branch 'pratik/otel-phase5-docs-deployment' into pratik/otel-phase6-statsd
...
Carries activation-site dedup (activateIfLive) + no-alloc GetCurrent forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 14:07:58 +01:00
Pratik Mankawde
f2c0534544
Merge branch 'pratik/otel-phase4-consensus-tracing' into pratik/otel-phase5-docs-deployment
...
Carries activation-site dedup (activateIfLive) + no-alloc GetCurrent forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 14:07:57 +01:00
Pratik Mankawde
88c83e6f34
Merge branch 'pratik/otel-phase3-tx-tracing' into pratik/otel-phase4-consensus-tracing
...
Carries the tx activation-site dedup (activateIfLive) forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 14:07:54 +01:00
Pratik Mankawde
a2c50245af
refactor(telemetry): use activateIfLive helper at consensus accept site
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 14:07:11 +01:00
Pratik Mankawde
9f5a095079
refactor(telemetry): use activateIfLive helper at tx activation sites
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 14:02:15 +01:00
Pratik Mankawde
34dfc4edf0
Merge branch 'pratik/otel-phase3-tx-tracing' into pratik/otel-phase4-consensus-tracing
...
Brings review fixes: no-alloc GetCurrent hot path, activateIfLive helper,
non-copyable storage, accurate drop-counter doc.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 13:59:05 +01:00
Pratik Mankawde
8fddbe84a3
Merge branch 'pratik/otel-phase2-rpc-tracing' into pratik/otel-phase3-tx-tracing
...
Brings review fixes: no-alloc GetCurrent hot path, activateIfLive helper,
non-copyable storage, accurate drop-counter doc.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 13:59:02 +01:00
Pratik Mankawde
842f994dbb
Merge branch 'pratik/otel-phase1c-rpc-integration' into pratik/otel-phase2-rpc-tracing
...
Brings review fixes: no-alloc GetCurrent hot path, activateIfLive helper,
non-copyable storage, accurate drop-counter doc.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 13:59:01 +01:00
Pratik Mankawde
be78519581
Merge branch 'pratik/otel-phase1b-telemetry-infra' into pratik/otel-phase1c-rpc-integration
...
Brings review fixes: no-alloc GetCurrent hot path, activateIfLive helper,
non-copyable storage, accurate drop-counter doc.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 13:58:58 +01:00
Pratik Mankawde
c209829c44
refactor(telemetry): no-alloc GetCurrent hot path, activateIfLive helper, non-copyable storage, accurate drop-counter doc
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-23 13:50:16 +01:00
Pratik Mankawde
48a5aad91d
Merge branch 'pratik/otel-phase9-metric-gap-fill' into pratik/otel-phase10-workload-validation
...
Brings the coroutine-aware OTel context storage refactor forward to phase-10:
CoroAwareContextStorage + install, ScopedSpanGuard same-store assertion,
non-owning ScopedActivation, scoped rpc.command spans, tx/consensus/ledger
worker-body activation, coro-store-swap tests, and the M1/M2 hardening.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 23:16:18 +01:00
Pratik Mankawde
24db0b246c
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
...
Brings M1 (dropped-deterministic-id counter) + M2 (childSpan doc) forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 23:15:04 +01:00
Pratik Mankawde
75317175d9
Merge branch 'pratik/otel-phase7-native-metrics' into pratik/otel-phase8-log-correlation
...
Brings M1 (dropped-deterministic-id counter) + M2 (childSpan doc) forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 23:15:03 +01:00
Pratik Mankawde
691a4e8b4f
Merge branch 'pratik/otel-phase6-statsd' into pratik/otel-phase7-native-metrics
...
Brings M1 (dropped-deterministic-id counter) + M2 (childSpan doc) forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 23:15:02 +01:00
Pratik Mankawde
479300484f
Merge branch 'pratik/otel-phase5-docs-deployment' into pratik/otel-phase6-statsd
...
Brings M1 (dropped-deterministic-id counter) + M2 (childSpan doc) forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 23:15:00 +01:00
Pratik Mankawde
de97f27c3d
Merge branch 'pratik/otel-phase4-consensus-tracing' into pratik/otel-phase5-docs-deployment
...
Brings M1 (dropped-deterministic-id counter) + M2 (childSpan doc) forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 23:15:00 +01:00
Pratik Mankawde
c4315b1551
Merge branch 'pratik/otel-phase3-tx-tracing' into pratik/otel-phase4-consensus-tracing
...
Brings M1 (dropped-deterministic-id counter) + M2 (childSpan doc) forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 23:14:45 +01:00
Pratik Mankawde
94459bea19
Merge branch 'pratik/otel-phase2-rpc-tracing' into pratik/otel-phase3-tx-tracing
...
Brings M1 (dropped-deterministic-id counter) + M2 (childSpan doc) forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 23:14:41 +01:00
Pratik Mankawde
45cf7cccd0
Merge branch 'pratik/otel-phase1c-rpc-integration' into pratik/otel-phase2-rpc-tracing
...
Brings M1 (dropped-deterministic-id counter) + M2 (childSpan doc) forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 23:14:39 +01:00
Pratik Mankawde
fe0bfe5147
Merge branch 'pratik/otel-phase1b-telemetry-infra' into pratik/otel-phase1c-rpc-integration
...
Brings M1 (release-visible dropped-deterministic-id counter) + M2 (childSpan doc) forward.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 23:14:22 +01:00
Pratik Mankawde
8c86e01ace
feat(telemetry): release-visible counter for dropped deterministic trace_id; clarify childSpan(name) doc
...
M1: ~PendingTraceId now increments a process-wide atomic counter when a
pinned deterministic trace_id is destroyed unconsumed, so the silent drop
stays observable in release builds where the existing XRPL_ASSERT is a
no-op. Exposed via unconsumedDeterministicIdDrops() for a future metric.
The deterministic trace_id bytes, the GenerateTraceId() consume logic, and
the unconditional reset() are all unchanged.
M2: tighten the Doxygen on SpanGuard::childSpan(std::string_view) to state
it parents to the current ambient context of this store (meaningful only
when a scope/ScopedSpanGuard/ScopedActivation is active) and to point
callers at childSpan(name, ctx) for explicit cross-store parenting.
Doc-only; no behavior change.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 23:10:49 +01:00
Pratik Mankawde
28a8ab144b
feat(telemetry): correlate ledger.acquire outcome log via span activation
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 22:58:17 +01:00
Pratik Mankawde
68bf633955
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
...
Brings coroutine-aware context storage + tx/consensus worker-body activation.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-07-22 22:48:16 +01:00