Pure placement reconciliation plus bounded, deterministically owned scans.
The 256 SHA-256 prefix shards are assigned with the same rendezvous function used for blobs. Only the owner scans a shard; every emitted action is still revalidated by its handler because membership and page contents are live.
Summary
Functions
Returns a specification to start this module under a supervisor.
Plans and enqueues one bounded descriptor page for an owned shard.
Types
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec run_page( ExStorageService.Context.t(), binary(), binary() | nil, pos_integer(), keyword() ) :: {:ok, %{ planned: non_neg_integer(), blobs: non_neg_integer(), actual_replicas: non_neg_integer(), under_replicated: non_neg_integer(), unavailable: non_neg_integer(), next_cursor: binary() | nil }} | {:error, term()}
Plans and enqueues one bounded descriptor page for an owned shard.
@spec scan_now(GenServer.server()) :: :ok
@spec shards() :: [binary()]
@spec start_link(keyword()) :: GenServer.on_start()
@spec status(GenServer.server()) :: {:ok, map()} | {:error, term()}