Skip to content

Commit f799c9f

Browse files
authored
Runtime: Expose builtin program IDs to crate (pyth-network#318)
* runtime: bank: rename `builtin_programs` to `builtin_program_ids` * runtime: snapshot minimizer: use builtin IDs from bank
1 parent 8463944 commit f799c9f

File tree

3 files changed

+27
-19
lines changed

3 files changed

+27
-19
lines changed

runtime/src/bank.rs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,7 @@ impl PartialEq for Bank {
551551
epoch_stakes,
552552
is_delta,
553553
// TODO: Confirm if all these fields are intentionally ignored!
554-
builtin_programs: _,
554+
builtin_program_ids: _,
555555
runtime_config: _,
556556
rewards: _,
557557
cluster_type: _,
@@ -779,7 +779,7 @@ pub struct Bank {
779779
/// stream for the slot == self.slot
780780
is_delta: AtomicBool,
781781

782-
builtin_programs: HashSet<Pubkey>,
782+
builtin_program_ids: HashSet<Pubkey>,
783783

784784
/// Optional config parameters that can override runtime behavior
785785
pub(crate) runtime_config: Arc<RuntimeConfig>,
@@ -1001,7 +1001,7 @@ impl Bank {
10011001
stakes_cache: StakesCache::default(),
10021002
epoch_stakes: HashMap::<Epoch, EpochStakes>::default(),
10031003
is_delta: AtomicBool::default(),
1004-
builtin_programs: HashSet::<Pubkey>::default(),
1004+
builtin_program_ids: HashSet::<Pubkey>::default(),
10051005
runtime_config: Arc::<RuntimeConfig>::default(),
10061006
rewards: RwLock::<Vec<(Pubkey, RewardInfo)>>::default(),
10071007
cluster_type: Option::<ClusterType>::default(),
@@ -1258,8 +1258,8 @@ impl Bank {
12581258

12591259
let (epoch_stakes, epoch_stakes_time_us) = measure_us!(parent.epoch_stakes.clone());
12601260

1261-
let (builtin_programs, builtin_programs_time_us) =
1262-
measure_us!(parent.builtin_programs.clone());
1261+
let (builtin_program_ids, builtin_program_ids_time_us) =
1262+
measure_us!(parent.builtin_program_ids.clone());
12631263

12641264
let (rewards_pool_pubkeys, rewards_pool_pubkeys_time_us) =
12651265
measure_us!(parent.rewards_pool_pubkeys.clone());
@@ -1315,7 +1315,7 @@ impl Bank {
13151315
ancestors: Ancestors::default(),
13161316
hash: RwLock::new(Hash::default()),
13171317
is_delta: AtomicBool::new(false),
1318-
builtin_programs,
1318+
builtin_program_ids,
13191319
tick_height: AtomicU64::new(parent.tick_height.load(Relaxed)),
13201320
signature_count: AtomicU64::new(0),
13211321
runtime_config: parent.runtime_config.clone(),
@@ -1477,7 +1477,7 @@ impl Bank {
14771477
blockhash_queue_time_us,
14781478
stakes_cache_time_us,
14791479
epoch_stakes_time_us,
1480-
builtin_programs_time_us,
1480+
builtin_program_ids_time_us,
14811481
rewards_pool_pubkeys_time_us,
14821482
executor_cache_time_us: 0,
14831483
transaction_debug_keys_time_us,
@@ -1872,7 +1872,7 @@ impl Bank {
18721872
stakes_cache: StakesCache::new(stakes),
18731873
epoch_stakes: fields.epoch_stakes,
18741874
is_delta: AtomicBool::new(fields.is_delta),
1875-
builtin_programs: HashSet::<Pubkey>::default(),
1875+
builtin_program_ids: HashSet::<Pubkey>::default(),
18761876
runtime_config,
18771877
rewards: RwLock::new(vec![]),
18781878
cluster_type: Some(genesis_config.cluster_type),
@@ -4681,7 +4681,7 @@ impl Bank {
46814681
recording_config,
46824682
timings,
46834683
account_overrides,
4684-
self.builtin_programs.iter(),
4684+
self.builtin_program_ids.iter(),
46854685
log_messages_bytes_limit,
46864686
limit_to_load_programs,
46874687
);
@@ -6162,6 +6162,10 @@ impl Bank {
61626162
}
61636163
}
61646164

6165+
pub(crate) fn get_builtin_program_ids(&self) -> &HashSet<Pubkey> {
6166+
&self.builtin_program_ids
6167+
}
6168+
61656169
// Hi! leaky abstraction here....
61666170
// try to use get_account_with_fixed_root() if it's called ONLY from on-chain runtime account
61676171
// processing. That alternative fn provides more safety.
@@ -7190,7 +7194,7 @@ impl Bank {
71907194
pub fn add_builtin(&mut self, program_id: Pubkey, name: String, builtin: LoadedProgram) {
71917195
debug!("Adding program {} under {:?}", name, program_id);
71927196
self.add_builtin_account(name.as_str(), &program_id, false);
7193-
self.builtin_programs.insert(program_id);
7197+
self.builtin_program_ids.insert(program_id);
71947198
self.program_cache
71957199
.write()
71967200
.unwrap()

runtime/src/bank/metrics.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ pub(crate) struct NewBankTimings {
3131
pub(crate) blockhash_queue_time_us: u64,
3232
pub(crate) stakes_cache_time_us: u64,
3333
pub(crate) epoch_stakes_time_us: u64,
34-
pub(crate) builtin_programs_time_us: u64,
34+
pub(crate) builtin_program_ids_time_us: u64,
3535
pub(crate) rewards_pool_pubkeys_time_us: u64,
3636
pub(crate) executor_cache_time_us: u64,
3737
pub(crate) transaction_debug_keys_time_us: u64,
@@ -125,7 +125,11 @@ pub(crate) fn report_new_bank_metrics(
125125
("blockhash_queue_us", timings.blockhash_queue_time_us, i64),
126126
("stakes_cache_us", timings.stakes_cache_time_us, i64),
127127
("epoch_stakes_time_us", timings.epoch_stakes_time_us, i64),
128-
("builtin_programs_us", timings.builtin_programs_time_us, i64),
128+
(
129+
"builtin_programs_us",
130+
timings.builtin_program_ids_time_us,
131+
i64
132+
),
129133
(
130134
"rewards_pool_pubkeys_us",
131135
timings.rewards_pool_pubkeys_time_us,

runtime/src/snapshot_minimizer.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
//! Used to create minimal snapshots - separated here to keep accounts_db simpler
22
33
use {
4-
crate::{
5-
bank::{builtins::BUILTINS, Bank},
6-
static_ids,
7-
},
4+
crate::{bank::Bank, static_ids},
85
dashmap::DashSet,
96
log::info,
107
rayon::{
@@ -116,9 +113,12 @@ impl<'a> SnapshotMinimizer<'a> {
116113

117114
/// Used to get builtin accounts in `minimize`
118115
fn get_builtins(&self) {
119-
BUILTINS.iter().for_each(|e| {
120-
self.minimized_account_set.insert(e.program_id);
121-
});
116+
self.bank
117+
.get_builtin_program_ids()
118+
.iter()
119+
.for_each(|program_id| {
120+
self.minimized_account_set.insert(*program_id);
121+
});
122122
}
123123

124124
/// Used to get static runtime accounts in `minimize`

0 commit comments

Comments
 (0)