com.atproto.sync.listReposByCollection
per-did event cap and firehose backpressure and
- pds `connect` timeout (shorter than the full timeout)
- handle `unreachable` from pds with aggressive backoff
the per-did event cap is hardcoded at 100 for now which feels like a lot even (many seconds of firehose). if it's exceeded, we drop the whole thing and transition the repo to desynced.
the global firehose queue cap is hardcoded at 2000 (and should probably be exposed as a cli arg). after that we backpressure against tungstenite, which has a limited read buffer and eventually will stop receiving events until we can process some. yay for bounded memory!
(the firehose cap is checked against the sum of all per-did queues)
additional metrics added for the queues