Test Details Overview

Cache representative keys to optimize `wallets::foreach_representative (...)` hot path (#5060)

* Cache representative keys for voting

Store unlocked representative keys in a cache so
`foreach_representative` can iterate preloaded keys instead of
walking wallet state and fetching them on every call.

Refresh the cache when representative membership or wallet lock
state changes, use `wallet::lock()` in the RPC handler, and remove
the recursive representative iteration test since recursion is no
longer supported.

* Rename compute_reps to refresh_reps

* Wallet rep key cache tests

* Refresh rep cache after wallet write txns

Move representative cache rebuilds out of active write transaction
scopes for unlock, rekey, seed, and deterministic wallet updates.

__________

Type: commit

Hash: 2a011b4859fcee1b46aeb7175915f6b163ed2fff

Created: yesterday

__________

gr0v1ty/nano-node:2a011b4859fcee1b46aeb7175915f6b163ed2fff

Test Results

Test Case Status Duration Median Deviation Log Graph
5n4pr_conf_10k_bintree PASS 112 s 0.0 s - Show
5n4pr_conf_10k_change PASS 125 s -75.0 s - Show
5n4pr_conf_change_dependant PASS 111 s -4.0 s - -
5n4pr_conf_change_independant PASS 120 s 0.0 s - -
5n4pr_conf_send_dependant PASS 116 s 1.0 s - -
5n4pr_conf_send_independant PASS 109 s -8.0 s - -
5n4pr_rocks_10k_bintree PASS 121 s 7.0 s - -
5n4pr_rocks_10k_change FAIL 144 s -3.0 s Show -