async fn recover(io: &dyn WalObjectIo) -> Result<Recovered>Expand description
Rebuilds the catalog from object headers and footers,
so recovery costs a few small reads per object however large the objects
are. Segments are not read; a segment checksum is verified by the read that
decodes it. Footers are fetched for up to RECOVERY_CONCURRENCY objects
at a time and indexed in sequence order, so the catalog checks the entry
ranges of every object against its predecessors like a sequential replay.
Only the objects on the chain select_chain picks are indexed.