Allow capping the amount of work performed when deleting a child trie (#7671)

* Allow Backend::for_keys_in_child_storage to be aborted by the closure

* Ext::kill_child_storage now takes an upper limit for backend deletion

* Add Storage::storage_kill_limited() runtime interface

* review: Use a new version of kill_storage instead of a new interface

* review: Simplify boolean expression

Co-authored-by: cheme <emericchevalier.pro@gmail.com>

* review: Rename for_keys_in_child_storage

Co-authored-by: cheme <emericchevalier.pro@gmail.com>
This commit is contained in:
Alexander Theißenandcheme authored and GitHub committed 2020-12-09 01:17:28 +00:00
1 parent 4689c21069
commit 9ce24fe1f4
19 files changed
+219 -34

No files matched your search

+2 -2
View File
@@ -441,14 +441,14 @@ impl<H: Hasher> StateBackend<H> for GenesisOrUnavailableState<H>
}
}
fn for_keys_in_child_storage<A: FnMut(&[u8])>(
fn apply_to_child_keys_while<A: FnMut(&[u8]) -> bool>(
&self,
child_info: &ChildInfo,
action: A,
) {
match *self {
GenesisOrUnavailableState::Genesis(ref state) =>
state.for_keys_in_child_storage(child_info, action),
state.apply_to_child_keys_while(child_info, action),
GenesisOrUnavailableState::Unavailable => (),
}
}