Skip to main content

missing_blob_diagnostics

Function missing_blob_diagnostics 

Source
pub(crate) async fn missing_blob_diagnostics<K, V, T, D>(
    applier: &Applier<K, V, T, D>,
    reader_id: &LeasedReaderId,
) -> String
where K: Debug + Codec, V: Debug + Codec, T: Timestamp + Lattice + Codec64 + Sync, D: Monoid + Codec64,
Expand 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.