small refactor to shorten the lock on slot_under_contention hashset (#23891)

* small refactor to shorten the lock on slot_under_contention hashset

* adding comments

* comments
This commit is contained in:
HaoranYi 2022-03-24 08:20:56 -05:00 committed by GitHub
parent 91c2729856
commit 90009f330b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 16 deletions

View File

@ -4853,22 +4853,14 @@ impl AccountsDb {
slot: Slot,
should_flush_f: Option<&mut impl FnMut(&Pubkey, &AccountSharedData) -> bool>,
) -> Option<FlushStats> {
let is_being_purged = {
let mut slots_under_contention = self
.remove_unrooted_slots_synchronization
.slots_under_contention
.lock()
.unwrap();
// If we're purging this slot, don't flush it here
if slots_under_contention.contains(&slot) {
true
} else {
slots_under_contention.insert(slot);
false
}
};
if !is_being_purged {
if self
.remove_unrooted_slots_synchronization
.slots_under_contention
.lock()
.unwrap()
.insert(slot)
{
// We have not see this slot, flush it.
let flush_stats = self.accounts_cache.slot_cache(slot).map(|slot_cache| {
#[cfg(test)]
{
@ -4898,6 +4890,7 @@ impl AccountsDb {
.notify_all();
flush_stats
} else {
// We have already seen this slot. It is already under flushing. Skip.
None
}
}