pub enum ComputeResponse<T = Timestamp> {
    FrontierUppers(Vec<(GlobalId, Antichain<T>)>),
    PeekResponse(UuidPeekResponseOpenTelemetryContext),
    SubscribeResponse(GlobalIdSubscribeResponse<T>),
}
Expand description

Compute protocol responses, sent by replicas to the compute controller.

Replicas send ComputeResponses in response to ComputeCommands they previously received from the compute controller.

Variants§

§

FrontierUppers(Vec<(GlobalId, Antichain<T>)>)

FrontierUppers announces the advancement of the upper frontiers of the specified compute collections. The response contains a mapping of collection IDs to their new upper frontiers.

Upon receiving a FrontierUppers response, the controller may assume that the replica has finished computing the given collections up to at least the given frontiers. It may also assume that the replica has finished reading from the collections’ inputs up to those frontiers.

Replicas must send FrontierUppers responses for compute collections that are indexes or storage sinks. Replicas must not send FrontierUppers responses for subscribes.

Replicas must never report regressing frontiers. Specifically:

  • The first frontier reported for a collection must not be less than that collection’s initial as_of frontier.
  • Subsequent reported frontiers for a collection must not be less than any frontier reported previously for the same collection.

Replicas must send a FrontierUppers response reporting advancement to the empty frontier for a collection in two cases:

  • The collection has advanced to the empty frontier (e.g. because its inputs have advanced to the empty frontier).
  • The collection was dropped in response to an AllowCompaction command that advanced its read frontier to the empty frontier. (#16275)

Once a collection was reported to have been advanced to the empty upper frontier:

  • It must no longer read from its inputs.
  • The replica must not send further FrontierUppers responses for that collection.

The replica must not send FrontierUppers responses for collections that have not been created previously by a CreateDataflows command or by a CreateInstance command. An exception are FrontierUppers responses that report the empty frontier. (#16247)

§

PeekResponse(UuidPeekResponseOpenTelemetryContext)

PeekResponse reports the result of a previous Peek command. The peek is identified by a Uuid that matches the command’s Peek::uuid.

The replica must send exactly one PeekResponse for every Peek command it received.

If the replica did not receive a CancelPeeks command for a peek, it must not send a Canceled response for that peek. If the replica did receive a CancelPeeks command for a peek, it may send any of the three PeekResponse variants.

The replica must not send PeekResponses for peek IDs that were not previously specified in a Peek command.

§

SubscribeResponse(GlobalIdSubscribeResponse<T>)

SubscribeResponse reports the results emitted by an active subscribe over some time interval.

For each subscribe that was installed by a previous CreateDataflows command, the replica must emit Batch responses that cover the entire time interval from the subscribe dataflow’s as_of until the subscribe advances to the empty frontier or is dropped. The time intervals of consecutive Batches must be increasing, contiguous, non-overlapping, and non-empty. All updates transmitted in a batch must have times within that batch’s time interval. The upper of the first Batch of a subscribe must not be less than that subscribe’s initial as_of frontier.

The replica must send DroppedAt responses if the subscribe was dropped in response to an AllowCompaction command that advanced its read frontier to the empty frontier. The DroppedAt frontier must be the upper frontier of the last emitted batch.

The replica must not send a DroppedAt response if the subscribe’s upper frontier (reported by Batch responses) has advanced to the empty frontier (e.g. because its inputs advanced to the empty frontier).

Once a subscribe was reported to have advanced to the empty frontier, or has been dropped:

  • It must no longer read from its inputs.
  • The replica must not send further SubscribeResponses for that subscribe.

The replica must not send Batch responses for subscribes that have not been created previously by a CreateDataflows command. The replica may send DroppedAt responses for subscribes that have not been created previously by a CreateDataflows command. (#16247)

Trait Implementations§

The type of Strategy used to generate values of type Self.
The type of parameters that arbitrary_with accepts for configuration of the generated Strategy. Parameters must implement Default.
Generates a Strategy for producing arbitrary values of type the implementing type (Self). The strategy is passed the arguments given in args. Read more
Generates a Strategy for producing arbitrary values of type the implementing type (Self). Read more
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Deserialize this value from the given Serde deserializer. Read more
Sends a command to the dataflow server. Read more
Receives the next response from the dataflow server. Read more
Returns an adapter that treats the client as a stream. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
The type which functions as the state machine for the partitioning.
Construct a PartitionedState for the command–response pair.
Splits a command into multiple partitions.
Absorbs a response from a single partition. Read more
Convert a Self into a Proto value.
Consume and convert a Proto back into a Self value. Read more
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Converts to this type from a reference to the input type.
Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Attaches the current Context to this type, returning a WithContext wrapper. Read more
Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Wrap the input message T in a tonic::Request
The alignment of pointer.
The type for initializers.
Initializes a with the given initializer. Read more
Dereferences the given pointer. Read more
Mutably dereferences the given pointer. Read more
Drops the object pointed to by the given pointer. Read more
Upcasts this ProgressEventTimestamp to Any. Read more
Returns the name of the concrete type of this object. Read more
Should always be Self
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more