mirror of
https://github.com/XRPLF/rippled.git
synced 2026-09-27 23:38:08 +00:00
Preparing to point the finger at TaggedCache's mutex when the whole process freezes at rotation time. Every `sweep()` and `getKeys()` calls `noteLockHold` after releasing the mutex; `takeLockHoldPeak()` returns the longest hold since the last call and resets. A one-second hold logs a warn line naming the op and the entry count — the same one-second bar `LoadMonitor::addLoadSample` uses to flag a job. `lockHoldPeakNs_` is a mutable atomic so `getKeys() const` can note its own hold; `FullBelowCache` forwards `takeLockHoldPeak()` so the metrics layer can read either cache the same way. Nothing here depends on telemetry — this file lives in `xrpl/basics` and must not. Test pins the behaviour end to end: neither getKeys() nor sweep() records anything on an empty cache; both push the peak above zero once the cache has 200,000 entries; and takeLockHoldPeak() is destructive.