Pratik Mankawde
5ed32063f5
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
...
Resolve conflicts by keeping phase-9's getobject_* metric instrumentation
and applying develop's snake_case namespace rename (#7933 ) to it:
Resource:: -> resource::, Tuning:: -> tuning::, BuildInfo:: -> build_info::.
2026-08-05 15:54:33 +01:00
Pratik Mankawde
5e1f96da4f
Merge branch 'pratik/otel-phase1a-plan-docs' into pratik/otel-phase1b-telemetry-infra
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-08-05 14:29:58 +01:00
Alex Kremer
06488c1318
chore: Rename CamelCase namespaces to snake_case ( #7933 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-08-04 13:46:55 +00:00
Pratik Mankawde
17bab7289f
feat(ledger): count acquisition stalls instead of only logging them
...
A saturated ledgerData lane makes TimeoutCounter re-arm its timer
without running the timer body, so timeouts_ never advances and the
six-timeout give-up can never fire. Acquisitions then neither finish
nor fail until the one-minute sweep destroys their partial maps, and
the work restarts. Every step of that chain was debug-log-only, so a
node at warning level could not be diagnosed after the fact.
The counters are separate on purpose: deferrals rising while timeouts
stay flat is the signature, and no single counter shows it.
Completions are recorded in done() rather than at the "Done: complete"
log line, because that line also fires for failures and misses the
checkLocal and receiveNode paths; done() is the one funnel every
outcome passes through and its signaled_ guard makes it idempotent.
AcquireStats is only forward-declared in ServiceRegistry so libxrpl
still includes nothing from xrpld. The src/ include path for the test
binary moves out of the telemetry guard, since a header-only type
under src/xrpld/ is testable in every build.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-27 19:04:04 +01:00
Pratik Mankawde
35363c54f7
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-07-27 17:07:36 +01:00
Pratik Mankawde
42a6fe8885
Merge branch 'pratik/otel-phase1a-plan-docs' into pratik/otel-phase1b-telemetry-infra
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-07-27 16:55:39 +01:00
Andrzej Budzanowski
29120dfcbd
test: Migrate nodestore tests from Beast to GTest ( #7292 )
...
Co-authored-by: Marek Foss <marek.foss@neti-soft.com >
Co-authored-by: Alex Kremer <akremer@ripple.com >
2026-07-27 13:00:14 +00:00
Pratik Mankawde
15596f5b8d
feat(telemetry): pinpoint root cause of slow TMGetObjectByHash service
...
Slowness on the peer object-fetch path could be observed but not
attributed. Job duration metrics carry only `job_type`, and both
`RcvGetLedger` and `RcvGetObjByHash` report as `ledgerRequest`, so a
queue-wait spike could not be traced to a handler. Nothing measured
NodeStore cost, request size, or the differential charge.
Latency now decomposes into three additive parts, each separately
measurable:
end-to-end = queue wait + NodeStore lookup + everything else
- `handler` label on job_queued_total/_started_total/_finished_total and
job_queued_us/job_running_us. The value is sanitised: a name passes
through only if non-empty and all ASCII letters, else "other". Two job
names embed a ledger sequence, so a raw label would mint one series
per ledger; the rule bounds the domain at 43 names plus "other".
- getobject_lookup_us, _request_objects, _lookups_total{result},
_rejected_total{reason} and _charge, recorded at their call sites.
All three histograms get explicit bucket views: the SDK default stops
at 10,000, which every one of them exceeds.
- Per-job-type waiting/running/deferred gauges for the 35 non-special
job types. `deferred` is the leading indicator, since addJob never
rejects -- it defers, so backpressure otherwise shows up only as
latency after the fact.
`JobQueue::collect()` snapshots the counters under the queue lock and
publishes gauges after releasing it. Writing them while holding the lock
would invert a lock order against the collector's own lock, which the
collector's flush thread already holds when it calls this hook.
Tests assert exact values, including that the charge is priced on the
requested count rather than the capped iteration count.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-07-25 11:59:16 +01:00
Pratik Mankawde
30b0d2677a
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
...
# Conflicts:
# src/xrpld/telemetry/ValidationTracker.h
2026-07-20 17:57:08 +01:00
Pratik Mankawde
de49319b31
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
2026-07-20 12:19:45 +01:00
Pratik Mankawde
7be57a460b
Merge branch 'pratik/otel-phase1a-plan-docs' into pratik/otel-phase1b-telemetry-infra
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-07-17 14:27:46 +01:00
Ayaz Salikhov
73b6852a12
style: Unify style for all Doxygen comments ( #7776 )
2026-07-13 10:40:40 +00:00
Pratik Mankawde
206d386469
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
...
# Conflicts:
# src/xrpld/app/ledger/InboundLedger.h
# src/xrpld/perflog/detail/PerfLogImp.cpp
2026-07-06 17:17:21 +01:00
Pratik Mankawde
3789ac45e2
Merge branch 'pratik/otel-phase1a-plan-docs' into pratik/otel-phase1b-telemetry-infra
...
# Conflicts:
# conan.lock
# conan/profiles/default
# conanfile.py
2026-07-06 17:07:23 +01:00
Ayaz Salikhov
d07d2aba2e
chore: Enable most modernize checks ( #7664 )
2026-07-06 12:19:52 +00:00
Ayaz Salikhov
53649cc298
chore: Enable modernize-use-constraints ( #7715 )
2026-07-03 14:28:15 +00:00
Ayaz Salikhov
7ba1d76d05
chore: Enable modernize-use-auto ( #7707 )
2026-07-02 20:02:55 +00:00
Ayaz Salikhov
8e378c4f47
build: Add verify-headers target to cleanup headers ( #7670 )
2026-07-01 23:14:17 +00:00
Denis Angell
86d8b244d6
feat: Add Batch (XLS-56) V1_1 ( #6446 )
...
Co-authored-by: Mayukha Vadari <mvadari@ripple.com >
2026-07-01 12:47:14 +00:00
Pratik Mankawde
81beeb6747
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-06-10 10:21:12 +01:00
Pratik Mankawde
848cbcbfbe
Merge branch 'pratik/otel-phase1a-plan-docs' into pratik/otel-phase1b-telemetry-infra
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-06-10 10:15:31 +01:00
Bart
c552eb333f
refactor: Change config section and key string literals into constants ( #7095 )
...
Co-authored-by: Bart <11445373+bthomee@users.noreply.github.com >
2026-06-09 14:58:21 +00:00
Pratik Mankawde
4d6ddb5f1f
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-06-01 14:56:09 +01:00
Pratik Mankawde
3a1f22583f
Merge branch 'pratik/otel-phase1a-plan-docs' into pratik/otel-phase1b-telemetry-infra
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-05-29 15:34:22 +01:00
Alex Kremer
a830ab10ef
style: More clang-tidy identifier renaming ( #7290 )
2026-05-20 21:31:15 +00:00
Alex Kremer
5b6e8b6f93
refactor: Rename static constants ( #7120 )
...
Co-authored-by: Bart <bthomee@users.noreply.github.com >
2026-05-15 15:32:19 +00:00
Pratik Mankawde
c096eeb239
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
2026-05-13 11:30:22 +01:00
Pratik Mankawde
b62987bda7
Revert "fix: revert all unrelated upstream develop changes from phase-7 PR"
...
This reverts commit f4555c80fe .
2026-05-06 14:13:59 +01:00
Alex Kremer
8995564ed6
refactor: Enable clang-tidy readability-identifier-naming check ( #6571 )
2026-05-03 10:31:53 +00:00
Pratik Mankawde
40cc7f9ed7
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
2026-04-30 17:00:39 +01:00
Pratik Mankawde
f4555c80fe
fix: revert all unrelated upstream develop changes from phase-7 PR
...
Reverts 259 files that carried unrelated upstream changes through the
phase-6 merge: enum class removals (cppcoreguidelines-use-enum-class),
scoped_lock→lock_guard conversions (modernize-use-scoped-lock),
nodestore Backend API changes (void const* key), .clang-tidy config,
test infrastructure deletions, and miscellaneous develop changes.
These changes belong on develop, not in the telemetry PR chain.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-30 16:59:24 +01:00
Pratik Mankawde
6407f0fa52
fix: Address code review comments regarding boost::coroutine2 ( #6977 )
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-04-30 10:36:12 +00:00
Pratik Mankawde
9e12e660fe
Merge branch 'pratik/otel-phase8-log-correlation' into pratik/otel-phase9-metric-gap-fill
...
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-29 20:25:13 +01:00
Alex Kremer
f7275b7ad9
chore: Enable clang-tidy v21 new checks ( #7031 )
2026-04-29 15:17:35 +00:00
Pratik Mankawde
3852b5ae4b
fix(telemetry): address review findings and PR #6437 comments
...
Critical fixes:
- Restore accidentally removed mallocTrim call and MallocTrim.h include
- Add missing shouldTraceLedger() to interface and all implementations
- Derive networkId/networkType from config_->NETWORK_ID (0=mainnet,
1=testnet, 2=devnet) instead of leaving defaults unpopulated
- Clamp sampling_ratio to [0.0, 1.0] in config parser
PR comment fixes:
- Rename rippled -> xrpld in service name defaults, getTracer() calls,
Docker network, comments, and docs/build/telemetry.md
- Remove exporter config option (only otlp_http supported)
- Add trace_ledger and service_name to example config
- Clarify head-based sampling semantics in config comments
- Add filter descriptions for span intrinsic filters in Grafana datasource
- Add inline comments to Docker Compose services
Docker/config improvements:
- Remove deprecated version: "3.8" from docker-compose.yml
- Pin images: collector 0.121.0, grafana 11.5.2
- Add health_check extension to otel-collector-config.yaml
- Comment out Tempo metrics_generator remote_write (no Prometheus service)
- Add Prometheus datasource caveat in Grafana datasource config
Other:
- Revert unrelated formatting changes in ServiceRegistry.h
- Change Conan telemetry default to False (matches CMake OFF)
- Add CLAUDE.md-required docs (ASCII diagrams, usage examples,
@note thread-safety) to Telemetry.h and SpanGuard.h
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-28 14:25:31 +01:00
Pratik Mankawde
88686af850
Phase 1b: Telemetry core infrastructure - CMake, Conan, SpanGuard, config
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-28 14:25:31 +01:00
Alex Kremer
4dc923dcc5
chore: Enable clang-tidy modernize-use-nodiscard check ( #7015 )
2026-04-24 17:19:30 +00:00
Pratik Mankawde
158df5394c
fix: Resolve MSVC Debug build failure in JobQueue.h; re-enable _CRTDBG_MAP_ALLOC in CI ( #6993 )
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
Co-authored-by: Ed Hennis <ed@ripple.com >
2026-04-24 16:47:16 +00:00
Mayukha Vadari
1c6cdc653c
fix: More clang-tidy issues ( #6992 )
2026-04-22 17:42:15 +00:00
Vito Tumas
2e307329f0
refactor: Add transaction-specific invariant checking ( #6551 )
2026-04-22 14:41:19 +00:00
Alex Kremer
ce3951bbb3
chore: Enable clang-tidy modernize checks ( #6975 )
...
Co-authored-by: Bart <11445373+bthomee@users.noreply.github.com >
Co-authored-by: Bart <bthomee@users.noreply.github.com >
2026-04-21 15:32:51 +00:00
Alex Kremer
f1a5ba43ad
chore: Enable clang-tidy readability checks ( #6930 )
...
Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com >
2026-04-17 13:30:52 +00:00
Alex Kremer
29e49abd3c
chore: Enable clang-tidy coreguidelines checks ( #6698 )
...
Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com >
2026-04-01 15:46:14 +00:00
Pratik Mankawde
892fee638a
Phase 9: Metric gap fill - nodestore, cache, TxQ, load factor dashboards
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-31 22:31:49 +01:00
Pratik Mankawde
a7470615be
Phase 1b: Telemetry core infrastructure - CMake, Conan, SpanGuard, config
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-31 22:28:12 +01:00
Alex Kremer
2502befb42
chore: Enable clang-tidy misc checks ( #6655 )
2026-03-31 17:29:45 +00:00
Jingchen
3a477e4d01
refactor: Address PR comments after the modularisation PRs ( #6389 )
...
Signed-off-by: JCW <a1q123456@users.noreply.github.com >
Co-authored-by: Bart <bthomee@users.noreply.github.com >
2026-03-30 15:22:38 +00:00
Pratik Mankawde
3d9c545f59
fix: Guard Coro::resume() against completed coroutines ( #6608 )
...
Signed-off-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-27 18:52:18 +00:00
Jingchen
addc1e8e25
refactor: Make function naming in ServiceRegistry consistent ( #6390 )
...
Signed-off-by: JCW <a1q123456@users.noreply.github.com >
Co-authored-by: Ed Hennis <ed@ripple.com >
2026-03-26 14:11:16 +00:00
Jingchen
8f182e825a
refactor: Modularise ledger ( #6536 )
...
Signed-off-by: JCW <a1q123456@users.noreply.github.com >
Co-authored-by: Bart <bthomee@users.noreply.github.com >
Co-authored-by: Pratik Mankawde <3397372+pratikmankawde@users.noreply.github.com >
2026-03-25 16:32:45 +00:00