This document is a Work In Progress

Processing Pipeline

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. downloadingBlockExecutionData download is in progress.
  3. indexingBlockExecutionData 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: