pub struct CreateInvocationRequest {
    pub request_id: String,
    pub invocation_id: String,
    pub invocation: Option<Invocation>,
    pub authorization_token: String,
    pub auto_finalize_time: Option<Timestamp>,
    pub initial_resume_token: String,
    pub uploader_state: Bytes,
}
Expand description

Request passed into CreateInvocation

Fields§

§request_id: String

A unique identifier for this request. Must be set to a different value for each request that affects a given resource (eg. a random UUID). Required for the operation to be idempotent. This is achieved by ignoring this request if the last successful operation on the resource had the same request ID. If set, invocation_id must also be provided. Restricted to 36 Unicode characters.

§invocation_id: String

The invocation ID. It is optional, but strongly recommended.

If left empty then a new unique ID will be assigned by the server. If populated, a RFC 4122-compliant v4 UUID is preferred, but v3 or v5 UUIDs are allowed too.

§invocation: Option<Invocation>

Required. The invocation to create. Its name field will be ignored, since the name will be derived from the id field above and assigned by the server.

§authorization_token: String

This is a token to authorize upload access to this invocation. It must be set to a RFC 4122-compliant v3, v4, or v5 UUID. Once this is set in CreateInvocation, all other upload RPCs for that Invocation and any of its child resources must also include the exact same token, or they will be rejected. The generated token should be unique to this invocation, and it should be kept secret.

The purpose of this field is to prevent other users and tools from clobbering your upload intentionally or accidentally. The standard way of using this token is to create a second v4 UUID when the invocation_id is created, and storing them together during the upload. Essentially, this is a “password” to the invocation.

§auto_finalize_time: Option<Timestamp>

By default, Invocations are auto-finalized if they are not modified for 24 hours. If you need auto-finalize to happen sooner, set this field to the time you’d like auto-finalize to occur.

§initial_resume_token: String

Client provided unique token for batch upload to ensure data integrity and to provide a way to resume batch upload in case of a distributed failure on the client side. The standard uploading client is presumed to have many machines uploading to ResultStore, and that any given machine could process any given Invocation at any time. This field is used to coordinate between the client’s machines, resolve concurrency issues, and enforce “exactly once” semantics on each batch within the upload.

The typical usage of the resume_token is that it should contain a “key” indicating to the client where it is in the upload process, so that the client can use it to resume the upload by reconstructing the state of upload from the point where it was interrupted.

If this matches the previously uploaded resume_token, then this request will silently do nothing, making CreateInvocation idempotent. If this token is provided, all further upload RPCs must be done through UploadBatch. This token must not be combined with request_id. Must be web safe Base64 encoded bytes.

§uploader_state: Bytes

Client-specific data used to resume batch upload if an error occurs and retry is needed. This serves a role closely related to resume_token, as both fields may be used to provide state required to restore a Batch Upload, but they differ in two important aspects:

  • it is not compared to previous values, and as such does not provide concurrency control;
  • it allows for a larger payload, since the contents are never inspected/compared; The size of the message must be within 1 MiB. Too large requests will be rejected.

Trait Implementations§

source§

impl Clone for CreateInvocationRequest

source§

fn clone(&self) -> CreateInvocationRequest

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CreateInvocationRequest

source§

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

Formats the value using the given formatter. Read more
source§

impl Default for CreateInvocationRequest

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Message for CreateInvocationRequest

source§

fn encoded_len(&self) -> usize

Returns the encoded length of the message without a length delimiter.
source§

fn clear(&mut self)

Clears the message, resetting all fields to their default.
source§

fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
where B: BufMut, Self: Sized,

Encodes the message to a buffer. Read more
source§

fn encode_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message to a newly allocated buffer.
source§

fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
where B: BufMut, Self: Sized,

Encodes the message with a length-delimiter to a buffer. Read more
source§

fn encode_length_delimited_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message with a length-delimiter to a newly allocated buffer.
source§

fn decode<B>(buf: B) -> Result<Self, DecodeError>
where B: Buf, Self: Default,

Decodes an instance of the message from a buffer. Read more
source§

fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
where B: Buf, Self: Default,

Decodes a length-delimited instance of the message from the buffer.
source§

fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
where B: Buf, Self: Sized,

Decodes an instance of the message from a buffer, and merges it into self. Read more
source§

fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
where B: Buf, Self: Sized,

Decodes a length-delimited instance of the message from buffer, and merges it into self.
source§

impl PartialEq for CreateInvocationRequest

source§

fn eq(&self, other: &CreateInvocationRequest) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for CreateInvocationRequest

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.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

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

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

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<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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