In the current recovery flow using MinIO as the storage backend, fencing and finalization require scanning and processing all blocks of a segment to ensure there are no holes in the block sequence and to reconstruct the sparse index.
When a segment contains close to 1000 blocks and object storage operations are relatively slow (e.g. some cloud object stores), the recovery cost can be significant:
- Each S3 read costs ~20–80 ms
- 1000 blocks ⇒ 20–80 seconds just for fence & finalize
- This makes recovery time scale linearly with block count
- Worst case: recovery becomes the dominant latency during restart or failover
This is especially problematic for:
- Cloud object storage (S3 / OSS / GCS)
- Large or long-lived segments
- Frequent restarts or crash recovery scenarios
In the current recovery flow using MinIO as the storage backend, fencing and finalization require scanning and processing all blocks of a segment to ensure there are no holes in the block sequence and to reconstruct the sparse index.
When a segment contains close to 1000 blocks and object storage operations are relatively slow (e.g. some cloud object stores), the recovery cost can be significant:
This is especially problematic for: