Expand description

A client backed by multiple replicas.

This client accepts commands and responds as would a correctly implemented client. Its implementation is wrapped around clients that may fail at any point, and restart. To accommodate this, it records the commands it accepts, and should a client restart the commands are replayed at it, with some modification. As the clients respond, the wrapper client tracks the responses and ensures that they are “logically deduplicated”, so that the receiver need not be aware of the replication and restarting.

This tactic requires that dataflows be restartable, which they generally are not, due to allowed compaction of their source data. This client must correctly observe commands that allow for compaction of its assets, and only attempt to rebuild them as of those compacted frontiers, as the underlying resources to rebuild them any earlier may not exist any longer.

Structs

A client backed by multiple replicas.
The internal state of the client.
Additional information to store with pending peeks.
State for a single replica.
Configuration for replica_task.
Reported upper frontiers for a single compute collection.

Enums

A response from the ActiveReplication client.

Functions

Asynchronously forwards commands to and responses from a single replica.