pub struct Completion {
pub command_id: String,
pub status: Option<Status>,
pub update_id: String,
pub user_id: String,
pub act_as: Vec<String>,
pub submission_id: String,
pub trace_context: Option<TraceContext>,
pub offset: i64,
pub synchronizer_time: Option<SynchronizerTime>,
pub paid_traffic_cost: i64,
pub transaction_hash: Option<Vec<u8>>,
pub deduplication_period: Option<DeduplicationPeriod>,
}Expand description
A completion represents the status of a submitted command on the ledger: it can be successful or failed.
Fields§
§command_id: StringThe ID of the succeeded or failed command.
Must be a valid LedgerString (as described in value.proto).
Required
status: Option<Status>Identifies the exact type of the error. It uses the same format of conveying error details as it is used for the RPC responses of the APIs.
Optional
update_id: StringThe update_id of the transaction or reassignment that resulted from the command with command_id.
Only set for successfully executed commands.
Must be a valid LedgerString (as described in value.proto).
Optional
user_id: StringThe user-id that was used for the submission, as described in commands.proto.
Must be a valid UserIdString (as described in value.proto).
Required
act_as: Vec<String>The set of parties on whose behalf the commands were executed.
Contains the act_as parties from commands.proto
filtered to the requesting parties in CompletionStreamRequest.
The order of the parties need not be the same as in the submission.
Each element must be a valid PartyIdString (as described in value.proto).
Required: must be non-empty
submission_id: StringThe submission ID this completion refers to, as described in commands.proto.
Must be a valid LedgerString (as described in value.proto).
Optional
trace_context: Option<TraceContext>The Ledger API trace context
The trace context transported in this message corresponds to the trace context supplied by the client application in a HTTP2 header of the original command submission. We typically use a header to transfer this type of information. Here we use message body, because it is used in gRPC streams which do not support per message headers. This field will be populated with the trace context contained in the original submission. If that was not provided, a unique ledger-api-server generated trace context will be used instead.
Optional
offset: i64May be used in a subsequent CompletionStreamRequest to resume the consumption of this stream at a later time. Must be a valid absolute offset (positive integer).
Required
synchronizer_time: Option<SynchronizerTime>The synchronizer along with its record time. The synchronizer id provided, in case of
- successful/failed transactions: identifies the synchronizer of the transaction
- for successful/failed unassign commands: identifies the source synchronizer
- for successful/failed assign commands: identifies the target synchronizer
Required
paid_traffic_cost: i64The traffic cost paid by this participant node for the confirmation request for the submitted command.
Commands whose execution is rejected before their corresponding confirmation request is ordered by the synchronizer will report a paid traffic cost of zero. If a confirmation request is ordered for a command, but the request fails (e.g., due to contention with a concurrent contract archival), the traffic cost is paid and reported on the failed completion for the request.
If you want to correlate the traffic cost of a successful completion
with the transaction that resulted from the command, you can use the
offset field to retrieve the transaction using
UpdateService.GetUpdateByOffset on the same participant node; or alternatively use the update_id
field to retrieve the transaction using UpdateService.GetUpdateById on any participant node
that sees the transaction.
Note: for completions processed before the participant started serving traffic cost on the Ledger API, this field will be set to zero. Additionally, the total cost incurred by the submitting node for the submission of the transaction may be greater than the reported cost, for example if retries were issued due to failed submissions to the synchronizer. The cost reported here is the one paid for ordering the confirmation request.
Optional
transaction_hash: Option<Vec<u8>>The transaction hash signed by the external party for prepared transactions
that were submitted using InteractiveSubmissionService.ExecuteSubmission
or one of its variants.
Use this to correlate prepared transactions with their execution result on the same participant that executed the transaction.
Not available for:
- transactions executed on Canton versions prior to 3.5
- transactions of internal parties submitted using
CommandSubmissionService.Submitand its variants
Optional: can be empty
deduplication_period: Option<DeduplicationPeriod>The actual deduplication window used for the submission, which is derived from
Commands.deduplication_period. The ledger may convert the deduplication period into other
descriptions and extend the period in implementation-specified ways.
Used to audit the deduplication guarantee described in commands.proto.
The deduplication guarantee applies even if the completion omits this field.
Optional
Implementations§
Source§impl Completion
impl Completion
Sourcepub fn transaction_hash(&self) -> &[u8] ⓘ
pub fn transaction_hash(&self) -> &[u8] ⓘ
Returns the value of transaction_hash, or the default value if transaction_hash is unset.
Trait Implementations§
Source§impl Clone for Completion
impl Clone for Completion
Source§fn clone(&self) -> Completion
fn clone(&self) -> Completion
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Completion
impl Debug for Completion
Source§impl Default for Completion
impl Default for Completion
Source§fn default() -> Completion
fn default() -> Completion
Source§impl Message for Completion
impl Message for Completion
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 PartialEq for Completion
impl PartialEq for Completion
impl StructuralPartialEq for Completion
Auto Trait Implementations§
impl Freeze for Completion
impl RefUnwindSafe for Completion
impl Send for Completion
impl Sync for Completion
impl Unpin for Completion
impl UnsafeUnpin for Completion
impl UnwindSafe for Completion
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
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<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
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> 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::Request