solana_runtime

Module installed_scheduler_pool

Source
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§

BankWithScheduler
Very thin wrapper around Arc
BankWithSchedulerInner
SchedulerAborted
SchedulingContext
A small context to propagate a bank and its scheduling mode to the scheduler subsystem.
TimeoutListener

Enums§

SchedulerStatus

Traits§

InstalledScheduler
Schedules, executes, and commits transactions under encapsulated implementation
InstalledSchedulerPool
UninstalledScheduler

Functions§

initialized_result_with_timings

Type Aliases§

InstalledSchedulerBox
InstalledSchedulerPoolArc
InstalledSchedulerRwLock
ResultWithTimings
ScheduleResult
SchedulerId
UninstalledSchedulerBox