<aside> 🚧

This document is a Work In Progress

</aside>

The processing pipeline handles all of the logic to download, index, query, and persist data for a single ExecutionResult. See Result Processing for protocol design.

State Machine

The pipeline will be implemented as a state machine, with the following states:

  1. ready → This is the initial state after instantiation and before downloading has begun.
  2. downloading → BlockExecutionData download is in progress.
  3. indexing → BlockExecutionData is being indexed.
  4. waiting_persist → All data is indexed, but conditions to persist are not met.
  5. persisting → Persist conditions are all met, and the indexed data is being persisted to storage.
  6. complete → All prior steps completed successfully.
  7. canceled → Processing was aborted. This is generally because it no longer descends from the latest persisted sealed result.

The following conditions must be met before transitioning to the next state: