pub enum WorkflowError {
Rollback(String),
Retry(String),
Diverged {
branch_id: String,
recorded: String,
got: String,
},
Internal(String),
}Expand description
函数跑不下去的原因。用 ? 往外抛。
Variants§
Rollback(String)
业务明确要求回滚 —— 会触发逆序补偿。 只有这一种会回滚,其它都是重试
Retry(String)
结果未知或还在处理中 —— 退避重试,绝不回滚。
分支返回 Ongoing / Unknown 时自动变成这个
Diverged
重放走岔了:这次跑到第 N 个分支时的名字,跟上次记录的对不上。
说明函数不是确定性的(或者代码改了步骤顺序又碰上老事务)。 这时候不能继续:按位置记忆化会把 A 的结果当成 B 的, 回滚时也会补偿错对象。停下来等人比静默走错安全得多。
Internal(String)
存储层出错之类
Trait Implementations§
Source§impl Clone for WorkflowError
impl Clone for WorkflowError
Source§fn clone(&self) -> WorkflowError
fn clone(&self) -> WorkflowError
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for WorkflowError
impl Debug for WorkflowError
Source§impl Display for WorkflowError
impl Display for WorkflowError
impl Eq for WorkflowError
Source§impl Error for WorkflowError
impl Error for WorkflowError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0:
use the Display impl or to_string()
Source§impl PartialEq for WorkflowError
impl PartialEq for WorkflowError
impl StructuralPartialEq for WorkflowError
Auto Trait Implementations§
impl Freeze for WorkflowError
impl RefUnwindSafe for WorkflowError
impl Send for WorkflowError
impl Sync for WorkflowError
impl Unpin for WorkflowError
impl UnsafeUnpin for WorkflowError
impl UnwindSafe for WorkflowError
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
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> 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> ⓘ
Converts
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> ⓘ
Converts
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request