Skip to content

Commit

Permalink
Refactor Weak usage
Browse files Browse the repository at this point in the history
  • Loading branch information
andreisilviudragnea committed Jul 4, 2024
1 parent 31fb006 commit df800a7
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 22 deletions.
2 changes: 1 addition & 1 deletion core/benches/banking_stage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ fn simulate_process_entries(
let bank_fork = BankForks::new_rw_arc(bank);
let bank = bank_fork.read().unwrap().get_with_scheduler(slot).unwrap();
bank.clone_without_scheduler()
.set_fork_graph_in_program_cache(bank_fork.clone());
.set_fork_graph_in_program_cache(Arc::downgrade(&bank_fork));

for i in 0..(num_accounts / 2) {
bank.transfer(initial_lamports, mint_keypair, &keypairs[i * 2].pubkey())
Expand Down
3 changes: 1 addition & 2 deletions core/benches/consumer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use {
poh_recorder::{create_test_recorder, PohRecorder},
poh_service::PohService,
},
solana_runtime::bank::Bank,
solana_runtime::{bank::Bank, bank_forks::BankForks},
solana_sdk::{
account::{Account, ReadableAccount},
signature::Keypair,
Expand All @@ -35,7 +35,6 @@ use {
tempfile::TempDir,
test::Bencher,
};
use solana_runtime::bank_forks::BankForks;

extern crate test;

Expand Down
2 changes: 1 addition & 1 deletion core/tests/unified_scheduler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ fn test_scheduler_waited_by_drop_bank_service() {
bank_forks.write().unwrap().install_scheduler_pool(pool);
let genesis = 0;
let genesis_bank = &bank_forks.read().unwrap().get(genesis).unwrap();
genesis_bank.set_fork_graph_in_program_cache(bank_forks.clone());
genesis_bank.set_fork_graph_in_program_cache(Arc::downgrade(&bank_forks));

// Create bank, which is pruned later
let pruned = 2;
Expand Down
5 changes: 4 additions & 1 deletion ledger/benches/blockstore_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,10 @@ use {
system_program, system_transaction,
transaction::SanitizedTransaction,
},
std::{borrow::Cow, sync::{Arc, RwLock}},
std::{
borrow::Cow,
sync::{Arc, RwLock},
},
test::Bencher,
};

Expand Down
26 changes: 13 additions & 13 deletions program-runtime/src/loaded_programs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -826,8 +826,8 @@ impl<FG: ForkGraph> ProgramCache<FG> {
}
}

pub fn set_fork_graph(&mut self, fork_graph: Arc<RwLock<FG>>) {
self.fork_graph = Some(Arc::downgrade(&fork_graph));
pub fn set_fork_graph(&mut self, fork_graph: Weak<RwLock<FG>>) {
self.fork_graph = Some(fork_graph);
}

/// Returns the current environments depending on the given epoch
Expand Down Expand Up @@ -2031,7 +2031,7 @@ mod tests {
relation: BlockRelation::Unrelated,
}));

cache.set_fork_graph(fork_graph.clone());
cache.set_fork_graph(Arc::downgrade(&fork_graph));

cache.prune(0, 0);
assert!(cache.get_flattened_entries_for_tests().is_empty());
Expand All @@ -2044,7 +2044,7 @@ mod tests {
relation: BlockRelation::Ancestor,
}));

cache.set_fork_graph(fork_graph.clone());
cache.set_fork_graph(Arc::downgrade(&fork_graph));

cache.prune(0, 0);
assert!(cache.get_flattened_entries_for_tests().is_empty());
Expand All @@ -2057,7 +2057,7 @@ mod tests {
relation: BlockRelation::Descendant,
}));

cache.set_fork_graph(fork_graph.clone());
cache.set_fork_graph(Arc::downgrade(&fork_graph));

cache.prune(0, 0);
assert!(cache.get_flattened_entries_for_tests().is_empty());
Expand All @@ -2069,7 +2069,7 @@ mod tests {
let fork_graph = Arc::new(RwLock::new(TestForkGraph {
relation: BlockRelation::Unknown,
}));
cache.set_fork_graph(fork_graph.clone());
cache.set_fork_graph(Arc::downgrade(&fork_graph));

cache.prune(0, 0);
assert!(cache.get_flattened_entries_for_tests().is_empty());
Expand All @@ -2086,7 +2086,7 @@ mod tests {
relation: BlockRelation::Ancestor,
}));

cache.set_fork_graph(fork_graph.clone());
cache.set_fork_graph(Arc::downgrade(&fork_graph));

let program1 = Pubkey::new_unique();
cache.assign_program(program1, new_test_entry(10, 10));
Expand Down Expand Up @@ -2245,7 +2245,7 @@ mod tests {
fork_graph.insert_fork(&[0, 5, 11, 25, 27]);

let fork_graph = Arc::new(RwLock::new(fork_graph));
cache.set_fork_graph(fork_graph.clone());
cache.set_fork_graph(Arc::downgrade(&fork_graph));

let program1 = Pubkey::new_unique();
cache.assign_program(program1, new_test_entry(0, 1));
Expand Down Expand Up @@ -2440,7 +2440,7 @@ mod tests {
fork_graph.insert_fork(&[0, 5, 11, 25, 27]);

let fork_graph = Arc::new(RwLock::new(fork_graph));
cache.set_fork_graph(fork_graph.clone());
cache.set_fork_graph(Arc::downgrade(&fork_graph));

let program1 = Pubkey::new_unique();
cache.assign_program(program1, new_test_entry(0, 1));
Expand Down Expand Up @@ -2497,7 +2497,7 @@ mod tests {
fork_graph.insert_fork(&[0, 5, 11, 25, 27]);

let fork_graph = Arc::new(RwLock::new(fork_graph));
cache.set_fork_graph(fork_graph.clone());
cache.set_fork_graph(Arc::downgrade(&fork_graph));

let program1 = Pubkey::new_unique();
cache.assign_program(program1, new_test_entry(0, 1));
Expand Down Expand Up @@ -2553,7 +2553,7 @@ mod tests {
let mut cache = new_mock_cache::<TestForkGraphSpecific>();
let fork_graph = TestForkGraphSpecific::default();
let fork_graph = Arc::new(RwLock::new(fork_graph));
cache.set_fork_graph(fork_graph.clone());
cache.set_fork_graph(Arc::downgrade(&fork_graph));

let program1 = Pubkey::new_unique();
let mut missing = vec![(program1, (ProgramCacheMatchCriteria::NoCriteria, 1))];
Expand Down Expand Up @@ -2625,7 +2625,7 @@ mod tests {
fork_graph.insert_fork(&[0, 10, 20]);
fork_graph.insert_fork(&[0, 5]);
let fork_graph = Arc::new(RwLock::new(fork_graph));
cache.set_fork_graph(fork_graph.clone());
cache.set_fork_graph(Arc::downgrade(&fork_graph));

let program1 = Pubkey::new_unique();
cache.assign_program(program1, new_test_entry(0, 1));
Expand Down Expand Up @@ -2665,7 +2665,7 @@ mod tests {
fork_graph.insert_fork(&[0, 10, 20]);
fork_graph.insert_fork(&[0, 5, 6]);
let fork_graph = Arc::new(RwLock::new(fork_graph));
cache.set_fork_graph(fork_graph.clone());
cache.set_fork_graph(Arc::downgrade(&fork_graph));

let program1 = Pubkey::new_unique();
cache.assign_program(program1, new_test_entry(0, 1));
Expand Down
4 changes: 2 additions & 2 deletions runtime/src/bank.rs
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ use {
AtomicBool, AtomicI64, AtomicU64, AtomicUsize,
Ordering::{AcqRel, Acquire, Relaxed},
},
Arc, LockResult, Mutex, RwLock, RwLockReadGuard, RwLockWriteGuard,
Arc, LockResult, Mutex, RwLock, RwLockReadGuard, RwLockWriteGuard, Weak,
},
thread::Builder,
time::{Duration, Instant},
Expand Down Expand Up @@ -1352,7 +1352,7 @@ impl Bank {
new
}

pub fn set_fork_graph_in_program_cache(&self, fork_graph: Arc<RwLock<BankForks>>) {
pub fn set_fork_graph_in_program_cache(&self, fork_graph: Weak<RwLock<BankForks>>) {
self.transaction_processor
.program_cache
.write()
Expand Down
2 changes: 1 addition & 1 deletion runtime/src/bank_forks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ impl BankForks {
scheduler_pool: None,
}));

root_bank.set_fork_graph_in_program_cache(bank_forks.clone());
root_bank.set_fork_graph_in_program_cache(Arc::downgrade(&bank_forks));
bank_forks
}

Expand Down
2 changes: 1 addition & 1 deletion unified-scheduler-pool/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2204,7 +2204,7 @@ mod tests {
let slot = bank.slot();
let bank_fork = BankForks::new_rw_arc(bank);
let bank = bank_fork.read().unwrap().get(slot).unwrap();
bank.set_fork_graph_in_program_cache(bank_fork.clone());
bank.set_fork_graph_in_program_cache(Arc::downgrade(&bank_fork));
(bank, bank_fork)
}

Expand Down

0 comments on commit df800a7

Please sign in to comment.