Skip to main content

InfallibleTransaction

Struct InfallibleTransaction 

Source
pub struct InfallibleTransaction { /* private fields */ }
Expand description

InfallibleTransaction is a sequence of operations that are executed in a way that if any of the operations or the underlying Golem executor fails, the whole transaction is going to be retried.

In addition to that, user level failures (represented by the Result::Err value of an operation) lead to performing the compensation actions of each already performed operation in reverse order.

Fatal errors (panic) and external executor failures are currently cannot perform the rollback actions.

Implementations§

Source§

impl InfallibleTransaction

Source

pub async fn execute<OpIn: Clone + 'static, OpOut: Clone + 'static, OpErr: Debug + Clone + 'static>( &mut self, operation: impl Operation<In = OpIn, Out = OpOut, Err = OpErr> + 'static, input: OpIn, ) -> OpOut

Source

pub async fn retry(&mut self)

Stop executing the transaction and retry from the beginning, after executing the compensation actions

Trait Implementations§

Source§

impl<Err: Debug + Clone + 'static> Transaction<Err> for InfallibleTransaction

Source§

async fn execute<OpIn: Clone + 'static, OpOut: Clone + 'static>( &mut self, operation: impl Operation<In = OpIn, Out = OpOut, Err = Err> + 'static, input: OpIn, ) -> Result<OpOut, Err>

Source§

async fn fail(&mut self, error: Err) -> Result<(), Err>

Source§

async fn run<Out: 'static>( f: impl for<'a> FnOnce(&'a mut Self) -> LocalBoxFuture<'a, Result<Out, Err>>, ) -> TransactionResult<Out, Err>

Auto Trait Implementations§

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

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<T> Resource for T
where T: 'static,

Source§

type Rep = Option<T>

The type which is actually stored in-memory for this resource. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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<T> TupleOrUnit<()> for T

Source§

fn into(self)