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§

Traits§

Type Aliases§