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.

Additional information to store with pening peeks.

Functions

Spawns a task that repeatedly sends messages back and forth between a client and its owner, and return channels to communicate with it.