pub(crate) async fn missing_blob_diagnostics<K, V, T, D>(
applier: &Applier<K, V, T, D>,
reader_id: &LeasedReaderId,
) -> StringExpand description
Diagnoses a missing-blob fetch failure: refreshes the shard state and reports whether the reader that leased the part is still present in it.
A missing blob means garbage collection deleted a blob that the part’s lease (a seqno hold in shard state) should have protected. If the reader has been expired out of state, the lease was lost: this can happen when the process fails to heartbeat the reader for longer than the lease duration, e.g. because the machine went to sleep, was starved of CPU or memory, or was partitioned from consensus. If the reader is still present, the hold did not protect the blob, which points at a GC or lease-tracking bug.