Bedrock.DataPlane.Sequencer (bedrock v0.6.0)
View SourceGlobal version authority implementing Lamport clock semantics for MVCC transactions.
The Sequencer assigns monotonically increasing version numbers that establish global ordering for transactions. Read versions provide consistent snapshot points while commit versions establish transaction ordering for conflict detection.
Each commit version assignment updates the Lamport clock, ensuring the version pair returned maintains proper causality relationships needed for distributed MVCC conflict resolution.
Summary
Types
Functions
@spec next_commit_version( ref(), Bedrock.epoch(), opts :: [{:timeout_in_ms, Bedrock.timeout_in_ms()}] ) :: {:ok, last_commit_version :: Bedrock.version(), next_commit_version :: Bedrock.version(), known_committed_version :: Bedrock.version()} | {:error, :unavailable | :wrong_epoch}
@spec next_read_version( ref(), Bedrock.epoch(), opts :: [{:timeout_in_ms, Bedrock.timeout_in_ms()}] ) :: {:ok, Bedrock.version()} | {:error, :unavailable | :wrong_epoch}
@spec report_successful_commit( ref(), Bedrock.epoch(), commit_version :: Bedrock.version(), opts :: [{:timeout_in_ms, Bedrock.timeout_in_ms()}] ) :: :ok | {:error, :unavailable | :wrong_epoch}