pub struct Failure {
pub message: String,
pub source: String,
pub stack_trace: String,
pub encoded_attributes: Option<Payload>,
pub cause: Option<Box<Failure>>,
pub failure_info: Option<FailureInfo>,
}Fields§
§message: String§source: StringThe source this Failure originated in, e.g. TypeScriptSDK / JavaSDK In some SDKs this is used to rehydrate the stack trace into an exception object.
stack_trace: String§encoded_attributes: Option<Payload>Alternative way to supply message and stack_trace and possibly other attributes, used for encryption of
errors originating in user code which might contain sensitive information.
The encoded_attributes Payload could represent any serializable object, e.g. JSON object or a Failure proto
message.
SDK authors:
-
The SDK should provide a default
encodeFailureAttributesanddecodeFailureAttributesimplementation that:- Uses a JSON object to represent
{ message, stack_trace }. - Overwrites the original message with “Encoded failure” to indicate that more information could be extracted.
- Overwrites the original stack_trace with an empty string.
- The resulting JSON object is converted to Payload using the default PayloadConverter and should be processed by the user-provided PayloadCodec
- Uses a JSON object to represent
-
If there’s demand, we could allow overriding the default SDK implementation to encode other opaque Failure attributes. (– api-linter: core::0203::optional=disabled –)
cause: Option<Box<Failure>>§failure_info: Option<FailureInfo>Implementations§
Source§impl Failure
impl Failure
pub fn is_timeout(&self) -> Option<TimeoutType>
pub fn application_failure(message: String, non_retryable: bool) -> Self
pub fn application_failure_from_error(ae: Error, non_retryable: bool) -> Self
pub fn timeout(timeout_type: TimeoutType) -> Self
Sourcepub fn maybe_application_failure(&self) -> Option<&ApplicationFailureInfo>
pub fn maybe_application_failure(&self) -> Option<&ApplicationFailureInfo>
Extracts an ApplicationFailureInfo from a Failure instance if it exists
pub fn is_benign_application_failure(&self) -> bool
Trait Implementations§
§impl<'de> Deserialize<'de> for Failure
impl<'de> Deserialize<'de> for Failure
§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Source§impl Message for Failure
impl Message for Failure
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.Source§impl Name for Failure
impl Name for Failure
Source§const NAME: &'static str = "Failure"
const NAME: &'static str = "Failure"
Message.
This name is the same as it appears in the source .proto file, e.g. FooBar.Source§const PACKAGE: &'static str = "temporal.api.failure.v1"
const PACKAGE: &'static str = "temporal.api.failure.v1"
., e.g. google.protobuf.Source§fn full_name() -> String
fn full_name() -> String
Message.
It’s prefixed with the package name and names of any parent messages,
e.g. google.rpc.BadRequest.FieldViolation.
By default, this is the package name followed by the message name.
Fully-qualified names must be unique within a domain of Type URLs.§impl PayloadVisitable for Failure
impl PayloadVisitable for Failure
§fn visit_payloads_mut<'a>(
&'a mut self,
visitor: &'a mut (dyn AsyncPayloadVisitor + Send),
) -> BoxFuture<'a, ()>
fn visit_payloads_mut<'a>( &'a mut self, visitor: &'a mut (dyn AsyncPayloadVisitor + Send), ) -> BoxFuture<'a, ()>
impl StructuralPartialEq for Failure
Auto Trait Implementations§
impl Freeze for Failure
impl RefUnwindSafe for Failure
impl Send for Failure
impl Sync for Failure
impl Unpin for Failure
impl UnsafeUnpin for Failure
impl UnwindSafe for Failure
Blanket Implementations§
Source§impl<T> AsJsonPayloadExt for Twhere
T: Serialize,
impl<T> AsJsonPayloadExt for Twhere
T: Serialize,
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<T> FromJsonPayloadExt for Twhere
T: for<'de> Deserialize<'de>,
impl<T> FromJsonPayloadExt for Twhere
T: for<'de> Deserialize<'de>,
fn from_json_payload(payload: &Payload) -> Result<T, PayloadDeserializeErr>
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::RequestSource§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>
fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>
Source§impl<T> TemporalDeserializable for Twhere
T: DeserializeOwned,
impl<T> TemporalDeserializable for Twhere
T: DeserializeOwned,
Source§fn from_serde(
pc: &dyn ErasedSerdePayloadConverter,
context: &SerializationContext<'_>,
payload: Payload,
) -> Result<T, PayloadConversionError>
fn from_serde( pc: &dyn ErasedSerdePayloadConverter, context: &SerializationContext<'_>, payload: Payload, ) -> Result<T, PayloadConversionError>
Source§fn from_payload(
ctx: &SerializationContext<'_>,
payload: Payload,
) -> Result<Self, PayloadConversionError>
fn from_payload( ctx: &SerializationContext<'_>, payload: Payload, ) -> Result<Self, PayloadConversionError>
Payload.Source§fn from_payloads(
ctx: &SerializationContext<'_>,
payloads: Vec<Payload>,
) -> Result<Self, PayloadConversionError>
fn from_payloads( ctx: &SerializationContext<'_>, payloads: Vec<Payload>, ) -> Result<Self, PayloadConversionError>
Source§impl<T> TemporalSerializable for Twhere
T: Serialize,
impl<T> TemporalSerializable for Twhere
T: Serialize,
Source§fn as_serde(&self) -> Result<&dyn Serialize, PayloadConversionError>
fn as_serde(&self) -> Result<&dyn Serialize, PayloadConversionError>
Source§fn to_payload(
&self,
_: &SerializationContext<'_>,
) -> Result<Payload, PayloadConversionError>
fn to_payload( &self, _: &SerializationContext<'_>, ) -> Result<Payload, PayloadConversionError>
Payload.