mirror of
https://github.com/XRPLF/rippled.git
synced 2026-07-29 18:10:34 +00:00
Two different bottlenecks both present as the ledgerData job lane pinned at its concurrency cap of 3, so lane occupancy diagnoses neither. One is write-serialized (NuDB takes one global mutex per insert, so inserts queue), the other is cold-read-bound on a populated store. Telling them apart needs the storage-side signals, not the lane. Adds to docs/telemetry-runbook.md a "Slow to reach full" procedure: a Mermaid diagram of the two modes, a decision table keyed on whether acquisitions are completing, the measured reference values from both runs, and the deferral/timeout pair that fingerprints the disarmed give-up path. States plainly that node_reads_hit is a found count rather than a cache-hit rate, which is why a ~100% "hit rate" at 113 us per read is the cold-read signature and not a contradiction. Records honestly that the populated-store run was twice as fast despite slower reads, so cold reads alone do not explain the long incident. Adds reference rows for the 13 new nodestore_state label values and the nodestore_read_us histogram to OpenTelemetryPlan/09-data-collection-reference.md, in the authoritative Phase 9 OTel SDK section alongside the existing NodeStore I/O table. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>