Struct mz_txn_wal::txn_write::Txn

source ·
pub struct Txn<K, V, T, D> {
    pub(crate) writes: BTreeMap<ShardId, TxnWrite<K, V, T, D>>,
    tidy: Tidy,
}
Expand description

An in-progress transaction.

Fields§

§writes: BTreeMap<ShardId, TxnWrite<K, V, T, D>>§tidy: Tidy

Implementations§

source§

impl<K, V, T, D> Txn<K, V, T, D>

source

pub(crate) fn new() -> Self

source

pub async fn write(&mut self, data_id: &ShardId, key: K, val: V, diff: D)

Stage a write to the in-progress txn.

The timestamp will be assigned at commit time.

TODO: Allow this to spill to s3 (for bounded memory) once persist can make the ts rewrite op efficient.

source

pub async fn commit_at<O, C>( &mut self, handle: &mut TxnsHandle<K, V, T, D, O, C>, commit_ts: T, ) -> Result<TxnApply<T>, T>
where O: Opaque + Debug + Codec64, C: TxnsCodec,

Commit this transaction at commit_ts.

This either atomically commits all staged writes or, if that’s no longer possible at the requested timestamp, returns an error with the least commit-able timestamp.

On success a token is returned representing apply work expected to be promptly performed by the caller. At this point, the txn is durable and it’s safe to bubble up success, but reads at the commit timestamp will block until this apply work finishes. In the event of a crash, neither correctness nor liveness require this followup be done.

Panics if any involved data shards were not registered before commit ts.

source

pub fn merge(&mut self, other: Self)

Merges the staged writes in the other txn into this one.

source

pub fn tidy(&mut self, tidy: Tidy)

Merges the work represented by given tidy into this txn.

If this txn commits, the tidy work will be written at the commit ts.

source

pub fn take_tidy(&mut self) -> Tidy

Extracts any tidy work that has been merged into this txn with Self::tidy.

Trait Implementations§

source§

impl<K: Debug, V: Debug, T: Debug, D: Debug> Debug for Txn<K, V, T, D>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<K, V, T, D> Freeze for Txn<K, V, T, D>

§

impl<K, V, T, D> !RefUnwindSafe for Txn<K, V, T, D>

§

impl<K, V, T, D> Send for Txn<K, V, T, D>
where K: Send, V: Send, D: Send, T: Send,

§

impl<K, V, T, D> Sync for Txn<K, V, T, D>
where K: Sync, V: Sync, D: Sync, T: Sync,

§

impl<K, V, T, D> Unpin for Txn<K, V, T, D>

§

impl<K, V, T, D> !UnwindSafe for Txn<K, V, T, D>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T, U> CastInto<U> for T
where U: CastFrom<T>,

source§

fn cast_into(self) -> U

Performs the cast.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FutureExt for T

source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<P, R> ProtoType<R> for P
where R: RustType<P>,

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<'a, S, T> Semigroup<&'a S> for T
where T: Semigroup<S>,

source§

fn plus_equals(&mut self, rhs: &&'a S)

The method of std::ops::AddAssign, for types that do not implement AddAssign.
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more