Atomic pre-commit intent and per-hash GC protection.
Opening an intent and extending the hash guard share one Concord transaction. The transaction also requires the local GC lock to be absent, so a new writer cannot race a collector that has already fenced deletion.
Summary
Functions
Returns transaction fragments that close an existing intent atomically with the object or multipart metadata publication.
Functions
@spec commit_operations(binary(), binary(), keyword()) :: {:ok, %{compare: [term()], success: [term()]}} | {:error, term()}
Returns transaction fragments that close an existing intent atomically with the object or multipart metadata publication.
@spec open(binary(), binary(), non_neg_integer(), binary(), pos_integer(), keyword()) :: {:ok, ExStorageService.Metadata.Models.OperationIntent.t()} | {:error, term()}
@spec transition(binary(), :unknown | :committed | :aborted, keyword()) :: {:ok, ExStorageService.Metadata.Models.OperationIntent.t()} | {:error, term()}