Skip to main content

Module ledger

Module ledger 

Source
Expand description

What one invocation created, on disk, so an interrupt can name what it could not delete.

§On disk rather than in memory only

The identifiers are worthless to the operator if the process that held them is the process that died. An image wedged in CREATING cannot be deleted afterward at all, and a service-created log group outlives terraform destroy, so for both of those the identifier is the remedy — there is no second way to find them.

§Leaked is recorded before the delete is attempted

Not after. The other order — try, then record on failure — loses the identifier when the process dies inside the call, which is exactly the interrupt case this file exists for. So Ledger::mark_outstanding writes first and Ledger::mark_deleted narrows the list afterwards.

§A file is only removed when nothing is outstanding

Ledger::clear refuses while leaked is non-empty, because a leftover file is how microvm ls knows there is something to tell the operator about. Clearing one that still names a live resource would hide the one case the file exists for.

Structs§

Ledger
A record plus where it is written.
Record
One invocation’s record.

Enums§

Value
Represents any valid JSON value.

Functions§

read_all
Every ledger, oldest first; an unreadable document remains visible to the operator.
remove
Removes the ledger file for run_id under root — ls --remote --prune’s one write (#159).