pub struct Commit {
pub vid: VolumeId,
pub lsn: LSN,
pub page_count: PageCount,
pub commit_hash: Option<CommitHash>,
pub segment_idx: Option<SegmentIdx>,
pub checkpointed_at: Option<SystemTime>,
}Expand description
Commits are stored at {prefix}/{vid}/log/{lsn}.
A commit may not include a SegmentRef if only the Volume’s page count has
changed. This happens when the Volume is extended or truncated without
additional writes.
Commits are immutable.
Fields§
§vid: VolumeIdThe Volume’s ID.
lsn: LSNThe LSN of the Commit.
page_count: PageCountThe Volume’s PageCount as of this Commit.
commit_hash: Option<CommitHash>An optional CommitHash for this Commit.
Always present on Remote Volume commits.
May be omitted on Local commits.
segment_idx: Option<SegmentIdx>If this Commit contains any pages, segment_idx records details on the
relevant Segment.
checkpointed_at: Option<SystemTime>If this commit is a checkpoint, this timestamp is set and records the time the commit was made a checkpoint
Implementations§
Source§impl Commit
impl Commit
Sourcepub fn new(vid: VolumeId, lsn: LSN, page_count: PageCount) -> Self
pub fn new(vid: VolumeId, lsn: LSN, page_count: PageCount) -> Self
Creates a new Commit for the given snapshot info
pub fn with_vid(self, vid: VolumeId) -> Self
pub fn with_lsn(self, lsn: LSN) -> Self
pub fn with_commit_hash(self, commit_hash: Option<CommitHash>) -> Self
Sourcepub fn with_segment_idx(self, segment_idx: Option<SegmentIdx>) -> Self
pub fn with_segment_idx(self, segment_idx: Option<SegmentIdx>) -> Self
Sets the segment index for this commit.
Sourcepub fn with_checkpointed_at(self, checkpointed_at: Option<SystemTime>) -> Self
pub fn with_checkpointed_at(self, checkpointed_at: Option<SystemTime>) -> Self
Sets the checkpointed timestamp for this commit.
pub fn vid(&self) -> &VolumeId
pub fn lsn(&self) -> LSN
pub fn vref(&self) -> VolumeRef
pub fn page_count(&self) -> PageCount
pub fn commit_hash(&self) -> Option<&CommitHash>
pub fn segment_idx(&self) -> Option<&SegmentIdx>
pub fn checkpointed_at(&self) -> Option<&SystemTime>
pub fn is_checkpoint(&self) -> bool
Trait Implementations§
Source§impl EmptyState<(), Commit> for ()where
(): EmptyState<general, LSN> + EmptyState<general, Option<CommitHash>> + EmptyState<general, Option<SegmentIdx>> + EmptyState<general, Option<SystemTime>> + EmptyState<general, PageCount> + EmptyState<general, VolumeId> + Encoder<general, LSN> + Encoder<general, Option<CommitHash>> + Encoder<general, Option<SegmentIdx>> + Encoder<general, Option<SystemTime>> + Encoder<general, PageCount> + Encoder<general, VolumeId>,
impl EmptyState<(), Commit> for ()where
(): EmptyState<general, LSN> + EmptyState<general, Option<CommitHash>> + EmptyState<general, Option<SegmentIdx>> + EmptyState<general, Option<SystemTime>> + EmptyState<general, PageCount> + EmptyState<general, VolumeId> + Encoder<general, LSN> + Encoder<general, Option<CommitHash>> + Encoder<general, Option<SegmentIdx>> + Encoder<general, Option<SystemTime>> + Encoder<general, PageCount> + Encoder<general, VolumeId>,
Source§impl ForOverwrite<(), Commit> for ()where
(): EmptyState<general, LSN> + EmptyState<general, Option<CommitHash>> + EmptyState<general, Option<SegmentIdx>> + EmptyState<general, Option<SystemTime>> + EmptyState<general, PageCount> + EmptyState<general, VolumeId> + Encoder<general, LSN> + Encoder<general, Option<CommitHash>> + Encoder<general, Option<SegmentIdx>> + Encoder<general, Option<SystemTime>> + Encoder<general, PageCount> + Encoder<general, VolumeId>,
impl ForOverwrite<(), Commit> for ()where
(): EmptyState<general, LSN> + EmptyState<general, Option<CommitHash>> + EmptyState<general, Option<SegmentIdx>> + EmptyState<general, Option<SystemTime>> + EmptyState<general, PageCount> + EmptyState<general, VolumeId> + Encoder<general, LSN> + Encoder<general, Option<CommitHash>> + Encoder<general, Option<SegmentIdx>> + Encoder<general, Option<SystemTime>> + Encoder<general, PageCount> + Encoder<general, VolumeId>,
Source§fn for_overwrite() -> __Self
fn for_overwrite() -> __Self
Self value to be overwritten.Source§impl RawMessage for __Selfwhere
(): EmptyState<general, LSN> + EmptyState<general, Option<CommitHash>> + EmptyState<general, Option<SegmentIdx>> + EmptyState<general, Option<SystemTime>> + EmptyState<general, PageCount> + EmptyState<general, VolumeId> + Encoder<general, LSN> + Encoder<general, Option<CommitHash>> + Encoder<general, Option<SegmentIdx>> + Encoder<general, Option<SystemTime>> + Encoder<general, PageCount> + Encoder<general, VolumeId>,
impl RawMessage for __Selfwhere
(): EmptyState<general, LSN> + EmptyState<general, Option<CommitHash>> + EmptyState<general, Option<SegmentIdx>> + EmptyState<general, Option<SystemTime>> + EmptyState<general, PageCount> + EmptyState<general, VolumeId> + Encoder<general, LSN> + Encoder<general, Option<CommitHash>> + Encoder<general, Option<SegmentIdx>> + Encoder<general, Option<SystemTime>> + Encoder<general, PageCount> + Encoder<general, VolumeId>,
const __ASSERTIONS: ()
Source§fn raw_encode<__B>(&self, buf: &mut __B)
fn raw_encode<__B>(&self, buf: &mut __B)
Source§fn raw_prepend<__B>(&self, buf: &mut __B)where
__B: ReverseBuf + ?Sized,
fn raw_prepend<__B>(&self, buf: &mut __B)where
__B: ReverseBuf + ?Sized,
Source§fn raw_encoded_len(&self) -> usize
fn raw_encoded_len(&self) -> usize
Source§impl<'__a> RawMessageBorrowDecoder<'__a> for __Selfwhere
(): BorrowDecoder<'__a, general, LSN> + BorrowDecoder<'__a, general, Option<CommitHash>> + BorrowDecoder<'__a, general, Option<SegmentIdx>> + BorrowDecoder<'__a, general, Option<SystemTime>> + BorrowDecoder<'__a, general, PageCount> + BorrowDecoder<'__a, general, VolumeId> + EmptyState<general, LSN> + EmptyState<general, Option<CommitHash>> + EmptyState<general, Option<SegmentIdx>> + EmptyState<general, Option<SystemTime>> + EmptyState<general, PageCount> + EmptyState<general, VolumeId>,
impl<'__a> RawMessageBorrowDecoder<'__a> for __Selfwhere
(): BorrowDecoder<'__a, general, LSN> + BorrowDecoder<'__a, general, Option<CommitHash>> + BorrowDecoder<'__a, general, Option<SegmentIdx>> + BorrowDecoder<'__a, general, Option<SystemTime>> + BorrowDecoder<'__a, general, PageCount> + BorrowDecoder<'__a, general, VolumeId> + EmptyState<general, LSN> + EmptyState<general, Option<CommitHash>> + EmptyState<general, Option<SegmentIdx>> + EmptyState<general, Option<SystemTime>> + EmptyState<general, PageCount> + EmptyState<general, VolumeId>,
Source§fn raw_borrow_decode_field(
&mut self,
tag: u32,
wire_type: WireType,
duplicated: bool,
buf: Capped<'_, &'__a [u8]>,
ctx: DecodeContext,
) -> Result<(), DecodeError>
fn raw_borrow_decode_field( &mut self, tag: u32, wire_type: WireType, duplicated: bool, buf: Capped<'_, &'__a [u8]>, ctx: DecodeContext, ) -> Result<(), DecodeError>
self from a borrowed slice.Source§impl RawMessageDecoder for __Selfwhere
(): Decoder<general, LSN> + Decoder<general, Option<CommitHash>> + Decoder<general, Option<SegmentIdx>> + Decoder<general, Option<SystemTime>> + Decoder<general, PageCount> + Decoder<general, VolumeId> + EmptyState<general, LSN> + EmptyState<general, Option<CommitHash>> + EmptyState<general, Option<SegmentIdx>> + EmptyState<general, Option<SystemTime>> + EmptyState<general, PageCount> + EmptyState<general, VolumeId>,
impl RawMessageDecoder for __Selfwhere
(): Decoder<general, LSN> + Decoder<general, Option<CommitHash>> + Decoder<general, Option<SegmentIdx>> + Decoder<general, Option<SystemTime>> + Decoder<general, PageCount> + Decoder<general, VolumeId> + EmptyState<general, LSN> + EmptyState<general, Option<CommitHash>> + EmptyState<general, Option<SegmentIdx>> + EmptyState<general, Option<SystemTime>> + EmptyState<general, PageCount> + EmptyState<general, VolumeId>,
Source§fn raw_decode_field<__B>(
&mut self,
tag: u32,
wire_type: WireType,
duplicated: bool,
buf: Capped<'_, __B>,
ctx: DecodeContext,
) -> Result<(), DecodeError>
fn raw_decode_field<__B>( &mut self, tag: u32, wire_type: WireType, duplicated: bool, buf: Capped<'_, __B>, ctx: DecodeContext, ) -> Result<(), DecodeError>
self.impl Eq for Commit
impl StructuralPartialEq for Commit
Auto Trait Implementations§
impl !Freeze for Commit
impl RefUnwindSafe for Commit
impl Send for Commit
impl Sync for Commit
impl Unpin for Commit
impl UnwindSafe for Commit
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§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Message for Twhere
T: RawMessage,
impl<T> Message for Twhere
T: RawMessage,
Source§fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Source§fn prepend<B>(&self, buf: &mut B)where
B: ReverseBuf + ?Sized,
fn prepend<B>(&self, buf: &mut B)where
B: ReverseBuf + ?Sized,
Source§fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
Source§fn message_is_empty(&self) -> bool
fn message_is_empty(&self) -> bool
Source§fn clear_message(&mut self)
fn clear_message(&mut self)
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode_to_bytes(&self) -> Bytes
fn encode_to_bytes(&self) -> Bytes
Bytes buffer.Source§fn encode_fast(&self) -> ReverseBuffer
fn encode_fast(&self) -> ReverseBuffer
ReverseBuffer.Source§fn encode_length_delimited_fast(&self) -> ReverseBuffer
fn encode_length_delimited_fast(&self) -> ReverseBuffer
ReverseBuffer.Source§fn encode_contiguous(&self) -> ReverseBuffer
fn encode_contiguous(&self) -> ReverseBuffer
RevserseBuffer which will have exactly the required capacity
in one contiguous slice.Source§fn encode_length_delimited_contiguous(&self) -> ReverseBuffer
fn encode_length_delimited_contiguous(&self) -> ReverseBuffer
RevserseBuffer which will have
exactly the required capacity in one contiguous slice.Source§fn encode_dyn(&self, buf: &mut dyn BufMut) -> Result<(), EncodeError>
fn encode_dyn(&self, buf: &mut dyn BufMut) -> Result<(), EncodeError>
Bytes buffer.Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘ
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘ
Source§fn encode_length_delimited_to_bytes(&self) -> Bytes
fn encode_length_delimited_to_bytes(&self) -> Bytes
Bytes buffer.Source§fn encode_length_delimited_dyn(
&self,
buf: &mut dyn BufMut,
) -> Result<(), EncodeError>
fn encode_length_delimited_dyn( &self, buf: &mut dyn BufMut, ) -> Result<(), EncodeError>
Bytes buffer.Source§impl<T> OwnedMessage for Twhere
T: RawMessageDecoder,
impl<T> OwnedMessage for Twhere
T: RawMessageDecoder,
Source§fn decode<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
fn decode<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
Source§fn decode_length_delimited<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
fn decode_length_delimited<B>(buf: B) -> Result<T, DecodeError>where
B: Buf,
Source§fn replace_from<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
fn replace_from<B>(&mut self, buf: B) -> Result<(), DecodeError>where
B: Buf,
Source§fn replace_from_length_delimited<B>(
&mut self,
buf: B,
) -> Result<(), DecodeError>where
B: Buf,
fn replace_from_length_delimited<B>(
&mut self,
buf: B,
) -> Result<(), DecodeError>where
B: Buf,
Source§fn replace_from_slice(&mut self, buf: &[u8]) -> Result<(), DecodeError>
fn replace_from_slice(&mut self, buf: &[u8]) -> Result<(), DecodeError>
Source§fn replace_from_length_delimited_slice(
&mut self,
buf: &[u8],
) -> Result<(), DecodeError>
fn replace_from_length_delimited_slice( &mut self, buf: &[u8], ) -> Result<(), DecodeError>
Source§fn replace_from_dyn(&mut self, buf: &mut dyn Buf) -> Result<(), DecodeError>
fn replace_from_dyn(&mut self, buf: &mut dyn Buf) -> Result<(), DecodeError>
Source§fn replace_from_length_delimited_dyn(
&mut self,
buf: &mut dyn Buf,
) -> Result<(), DecodeError>
fn replace_from_length_delimited_dyn( &mut self, buf: &mut dyn Buf, ) -> Result<(), DecodeError>
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.