rework assert_no_shrink_in_progress to get assert stack easily (#31251)
This commit is contained in:
parent
812d899c7f
commit
9124d1f35d
|
@ -67,15 +67,15 @@ impl AccountStorage {
|
||||||
.or_else(lookup_in_map)
|
.or_else(lookup_in_map)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// assert if shrink in progress is active
|
/// returns true if shrink in progress is NOT active
|
||||||
pub(crate) fn assert_no_shrink_in_progress(&self) {
|
pub(crate) fn no_shrink_in_progress(&self) -> bool {
|
||||||
assert!(self.shrink_in_progress_map.is_empty());
|
self.shrink_in_progress_map.is_empty()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// return the append vec for 'slot' if it exists
|
/// return the append vec for 'slot' if it exists
|
||||||
/// This is only ever called when shrink is not possibly running and there is a max of 1 append vec per slot.
|
/// This is only ever called when shrink is not possibly running and there is a max of 1 append vec per slot.
|
||||||
pub(crate) fn get_slot_storage_entry(&self, slot: Slot) -> Option<Arc<AccountStorageEntry>> {
|
pub(crate) fn get_slot_storage_entry(&self, slot: Slot) -> Option<Arc<AccountStorageEntry>> {
|
||||||
self.assert_no_shrink_in_progress();
|
assert!(self.no_shrink_in_progress());
|
||||||
self.get_slot_storage_entry_shrinking_in_progress_ok(slot)
|
self.get_slot_storage_entry_shrinking_in_progress_ok(slot)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,21 +88,21 @@ impl AccountStorage {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn all_slots(&self) -> Vec<Slot> {
|
pub(crate) fn all_slots(&self) -> Vec<Slot> {
|
||||||
self.assert_no_shrink_in_progress();
|
assert!(self.no_shrink_in_progress());
|
||||||
self.map.iter().map(|iter_item| *iter_item.key()).collect()
|
self.map.iter().map(|iter_item| *iter_item.key()).collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// returns true if there is no entry for 'slot'
|
/// returns true if there is no entry for 'slot'
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
pub(crate) fn is_empty_entry(&self, slot: Slot) -> bool {
|
pub(crate) fn is_empty_entry(&self, slot: Slot) -> bool {
|
||||||
self.assert_no_shrink_in_progress();
|
assert!(self.no_shrink_in_progress());
|
||||||
self.map.get(&slot).is_none()
|
self.map.get(&slot).is_none()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// initialize the storage map to 'all_storages'
|
/// initialize the storage map to 'all_storages'
|
||||||
pub(crate) fn initialize(&mut self, all_storages: AccountStorageMap) {
|
pub(crate) fn initialize(&mut self, all_storages: AccountStorageMap) {
|
||||||
assert!(self.map.is_empty());
|
assert!(self.map.is_empty());
|
||||||
self.assert_no_shrink_in_progress();
|
assert!(self.no_shrink_in_progress());
|
||||||
self.map.extend(all_storages.into_iter())
|
self.map.extend(all_storages.into_iter())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,12 +119,12 @@ impl AccountStorage {
|
||||||
|
|
||||||
/// iterate through all (slot, append-vec)
|
/// iterate through all (slot, append-vec)
|
||||||
pub(crate) fn iter(&self) -> AccountStorageIter<'_> {
|
pub(crate) fn iter(&self) -> AccountStorageIter<'_> {
|
||||||
self.assert_no_shrink_in_progress();
|
assert!(self.no_shrink_in_progress());
|
||||||
AccountStorageIter::new(self)
|
AccountStorageIter::new(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn insert(&self, slot: Slot, store: Arc<AccountStorageEntry>) {
|
pub(crate) fn insert(&self, slot: Slot, store: Arc<AccountStorageEntry>) {
|
||||||
self.assert_no_shrink_in_progress();
|
assert!(self.no_shrink_in_progress());
|
||||||
assert!(self
|
assert!(self
|
||||||
.map
|
.map
|
||||||
.insert(
|
.insert(
|
||||||
|
@ -352,7 +352,7 @@ pub(crate) mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic(expected = "self.shrink_in_progress_map.is_empty()")]
|
#[should_panic(expected = "assertion failed: self.no_shrink_in_progress()")]
|
||||||
fn test_get_slot_storage_entry_fail() {
|
fn test_get_slot_storage_entry_fail() {
|
||||||
let storage = AccountStorage::default();
|
let storage = AccountStorage::default();
|
||||||
storage
|
storage
|
||||||
|
@ -362,7 +362,7 @@ pub(crate) mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic(expected = "self.shrink_in_progress_map.is_empty()")]
|
#[should_panic(expected = "assertion failed: self.no_shrink_in_progress()")]
|
||||||
fn test_all_slots_fail() {
|
fn test_all_slots_fail() {
|
||||||
let storage = AccountStorage::default();
|
let storage = AccountStorage::default();
|
||||||
storage
|
storage
|
||||||
|
@ -372,7 +372,7 @@ pub(crate) mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic(expected = "self.shrink_in_progress_map.is_empty()")]
|
#[should_panic(expected = "assertion failed: self.no_shrink_in_progress()")]
|
||||||
fn test_initialize_fail() {
|
fn test_initialize_fail() {
|
||||||
let mut storage = AccountStorage::default();
|
let mut storage = AccountStorage::default();
|
||||||
storage
|
storage
|
||||||
|
@ -382,7 +382,9 @@ pub(crate) mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic(expected = "self.shrink_in_progress_map.is_empty()")]
|
#[should_panic(
|
||||||
|
expected = "assertion failed: shrink_can_be_active || self.shrink_in_progress_map.is_empty()"
|
||||||
|
)]
|
||||||
fn test_remove_fail() {
|
fn test_remove_fail() {
|
||||||
let storage = AccountStorage::default();
|
let storage = AccountStorage::default();
|
||||||
storage
|
storage
|
||||||
|
@ -392,7 +394,7 @@ pub(crate) mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic(expected = "self.shrink_in_progress_map.is_empty()")]
|
#[should_panic(expected = "assertion failed: self.no_shrink_in_progress()")]
|
||||||
fn test_iter_fail() {
|
fn test_iter_fail() {
|
||||||
let storage = AccountStorage::default();
|
let storage = AccountStorage::default();
|
||||||
storage
|
storage
|
||||||
|
@ -402,7 +404,7 @@ pub(crate) mod tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic(expected = "self.shrink_in_progress_map.is_empty()")]
|
#[should_panic(expected = "assertion failed: self.no_shrink_in_progress()")]
|
||||||
fn test_insert_fail() {
|
fn test_insert_fail() {
|
||||||
let storage = AccountStorage::default();
|
let storage = AccountStorage::default();
|
||||||
let sample = storage.get_test_storage();
|
let sample = storage.get_test_storage();
|
||||||
|
|
|
@ -8091,7 +8091,7 @@ impl AccountsDb {
|
||||||
where
|
where
|
||||||
I: Iterator<Item = &'a (Slot, AccountInfo)>,
|
I: Iterator<Item = &'a (Slot, AccountInfo)>,
|
||||||
{
|
{
|
||||||
self.storage.assert_no_shrink_in_progress();
|
assert!(self.storage.no_shrink_in_progress());
|
||||||
|
|
||||||
let mut dead_slots = HashSet::new();
|
let mut dead_slots = HashSet::new();
|
||||||
let mut new_shrink_candidates: ShrinkCandidates = HashMap::new();
|
let mut new_shrink_candidates: ShrinkCandidates = HashMap::new();
|
||||||
|
|
Loading…
Reference in New Issue