pub struct DbRoot {
pub format_version: u32,
pub lease_version: u64,
pub owner: String,
pub lease_expires_unix_ms: i64,
pub owner_endpoint: String,
pub index_basis_t: u64,
pub roots: Option<[BlobId; 4]>,
}Expand description
Published durable index-root metadata carrying the write lease
(see docs/design/log-and-transactor.md).
The lease fields and the index fields live in one record on purpose: every mutation — lease acquisition, renewal, release, index publication — is a CAS on these bytes, so a writer whose ownership has changed hands always fails its next CAS and can never install a root. No cross-record atomicity is required of the store.
Fields§
§format_version: u32On-disk format version. Readers reject roots from newer formats.
lease_version: u64Fencing version; increments on every change of lease ownership.
owner: StringOwning transactor id; empty when the lease has never been acquired under format 2.
lease_expires_unix_ms: i64Lease expiry as Unix milliseconds; 0 when released/never held.
owner_endpoint: StringClient endpoint advertised by the owner (for peer lease-holder rediscovery); empty when the owner does not advertise one.
index_basis_t: u64Highest indexed transaction.
roots: Option<[BlobId; 4]>EAVT, AEVT, AVET, and VAET blob ids; None before the first index
publication (a bare fence bump).
Implementations§
Trait Implementations§
impl Eq for DbRoot
impl StructuralPartialEq for DbRoot
Auto Trait Implementations§
impl Freeze for DbRoot
impl RefUnwindSafe for DbRoot
impl Send for DbRoot
impl Sync for DbRoot
impl Unpin for DbRoot
impl UnsafeUnpin for DbRoot
impl UnwindSafe for DbRoot
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request