Expand description
Transaction processing glue code, mainly consisting of Object-safe traits
InstalledSchedulerPool lends one of pooled InstalledSchedulers as wrapped in
BankWithScheduler, which can be used by ReplayStage
and BankingStage
for transaction
execution. After use, the scheduler will be returned to the pool.
InstalledScheduler can be fed with SanitizedTransactions. Then, it schedules those executions and commits those results into the associated bank.
It’s generally assumed that each InstalledScheduler is backed by multiple threads for parallel transaction processing and there are multiple independent schedulers inside a single instance of InstalledSchedulerPool.
Dynamic dispatch was inevitable due to the desire to piggyback on
BankForks’s pruning for scheduler lifecycle management as the
common place both for ReplayStage
and BankingStage
and the resultant need of invoking
actual implementations provided by the dependent crate (solana-unified-scheduler-pool
, which
in turn depends on solana-ledger
, which in turn depends on solana-runtime
), avoiding a
cyclic dependency.
See InstalledScheduler for visualized interaction.
Structs§
- Very thin wrapper around Arc
- A small context to propagate a bank and its scheduling mode to the scheduler subsystem.
Enums§
Traits§
- Schedules, executes, and commits transactions under encapsulated implementation