This document is a Work In Progress
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.
The pipeline will be implemented as a state machine, with the following states:
ready
→ This is the initial state after instantiation and before downloading has begun.downloading
→ BlockExecutionData
download is in progress.indexing
→ BlockExecutionData
is being indexed.waiting_persist
→ All data is indexed, but conditions to persist are not met.persisting
→ Persist conditions are all met, and the indexed data is being persisted to storage.complete
→ All prior steps completed successfully.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:
ready
→ downloading
ExecutionResult
descends from the last persisted sealed result.downloading
, indexing
, waiting_persist
, persisting
, or complete
.downloading
→ indexing
ExecutionResult
descends from the last persisted sealed result.canceled
.indexing
→ waiting_persist
ExecutionResult
descends from the last persisted sealed result.canceled
.waiting_persist
→ persisting
ExecutionResult
is sealedcomplete