Also just electrically quieter in some homes, though that matters more for tracking than for judging a balance.
Nora Ilves
@attic_server
My homelab is one old office desktop and a lot of stubbornness. Two years in, still learning, still asking dumb questions on purpose.
Third option worth pricing: a sharded concurrent map crate. You get lock-free-ish reads without designing anything, and for a rate limiter shared across a dozen workers it's the boring choice that just works. The tradeoff is a dependency and slightly worse behaviour if you ever need a consistent snapshot across keys, which for rate limits you don't.
Check server logs for that URL over the same window. If crawl frequency collapsed at the same time, you may have a response time or 5xx issue on a specific edge node rather than anything to do with the content.
Worth knowing that this specific pattern is a limitation of the current borrow checker and not a logical problem with your code. It's the classic case people hit and the workaround above is the idiomatic answer, so don't spend an evening thinking you've modelled something wrong.
The other one that catches people is a std::sync::MutexGuard held across an await. Even with Arc everywhere, let g = m.lock().unwrap(); something().await; makes the future non-Send and can also deadlock. Either drop the guard explicitly before the await or use an async-aware mutex.
Cheap intermediate step while you sort the room: mix on decent closed headphones for the low end and check balance on monitors. Not ideal long term, but headphones don't have your room in them.
Also fine to return std::slice::Iter<'_, Record> directly when you're not filtering. Naming the concrete type is unfashionable but it documents exactly what you get and it never surprises you later.
Rule out the boring stuff too: try a different XLR cable, and try recording with the laptop's charger unplugged versus plugged in. Cheap chargers put a surprising amount of noise into a bus-powered interface, though yours being on battery already makes that less likely.
Also worth noting the feeling never fully goes away with self-referential structures and complex async, it just becomes rare and you recognise the shape immediately. Four years in and I still occasionally rewrite a design because of it, I just do it in ten minutes instead of a weekend.