Expand description

CheckpointExecutor is a Node component that executes all checkpoints for the given epoch. It acts as a Consumer to StateSync for newly synced checkpoints, taking these checkpoints and scheduling and monitoring their execution. Its primary goal is to allow for catching up to the current checkpoint sequence number of the network as quickly as possible so that a newly joined, or recovering Node can participate in a timely manner. To that end, CheckpointExecutor attempts to saturate the CPU with executor tasks (one per checkpoint), each of which handle scheduling and awaiting checkpoint transaction execution.

CheckpointExecutor is made recoverable in the event of Node shutdown by way of a watermark, highest_executed_checkpoint, which is guaranteed to be updated sequentially in order, despite checkpoints themselves potentially being executed nonsequentially and in parallel. CheckpointExecutor parallelizes checkpoints of the same epoch as much as possible. CheckpointExecutor enforces the invariant that if run returns successfully, we have reached the end of epoch. This allows us to use it as a signal for reconfig.

Structs§

Enums§