From 60078b32141428576158662c81b402f081927e1b Mon Sep 17 00:00:00 2001 From: cheme Date: Mon, 6 Sep 2021 12:42:02 +0200 Subject: [PATCH] reset cache when storage possibly change (fix init of tests). (#9665) * reset cache when storage possibly change (fix init of tests). * remove backend_storage_mut * fix warn * remove remaining backend_storage_mut --- primitives/state-machine/src/in_memory_backend.rs | 5 +++-- primitives/state-machine/src/lib.rs | 7 ++++--- primitives/state-machine/src/trie_backend.rs | 5 ----- primitives/state-machine/src/trie_backend_essence.rs | 5 ----- 4 files changed, 7 insertions(+), 15 deletions(-) diff --git a/primitives/state-machine/src/in_memory_backend.rs b/primitives/state-machine/src/in_memory_backend.rs index 3e75ff5126a61..f9f94c0c50d60 100644 --- a/primitives/state-machine/src/in_memory_backend.rs +++ b/primitives/state-machine/src/in_memory_backend.rs @@ -74,8 +74,9 @@ where /// Apply the given transaction to this backend and set the root to the given value. pub fn apply_transaction(&mut self, root: H::Out, transaction: MemoryDB) { - self.backend_storage_mut().consolidate(transaction); - self.essence.set_root(root); + let mut storage = sp_std::mem::take(self).into_storage(); + storage.consolidate(transaction); + *self = TrieBackend::new(storage, root); } /// Compare with another in-memory backend. diff --git a/primitives/state-machine/src/lib.rs b/primitives/state-machine/src/lib.rs index 07d7e54530ea2..e12be0c586b7d 100644 --- a/primitives/state-machine/src/lib.rs +++ b/primitives/state-machine/src/lib.rs @@ -1619,7 +1619,7 @@ mod tests { let child_info2 = ChildInfo::new_default(b"sub2"); // this root will be include in proof let child_info3 = ChildInfo::new_default(b"sub"); - let mut remote_backend = trie_backend::tests::test_trie(); + let remote_backend = trie_backend::tests::test_trie(); let (remote_root, transaction) = remote_backend.full_storage_root( std::iter::empty(), vec![ @@ -1641,8 +1641,9 @@ mod tests { ] .into_iter(), ); - remote_backend.backend_storage_mut().consolidate(transaction); - remote_backend.essence.set_root(remote_root.clone()); + let mut remote_storage = remote_backend.into_storage(); + remote_storage.consolidate(transaction); + let remote_backend = TrieBackend::new(remote_storage, remote_root); let remote_proof = prove_child_read(remote_backend, &child_info1, &[b"key1"]).unwrap(); let remote_proof = test_compact(remote_proof, &remote_root); let local_result1 = read_child_proof_check::( diff --git a/primitives/state-machine/src/trie_backend.rs b/primitives/state-machine/src/trie_backend.rs index 4cdf1d3b75e9a..7cb725a80503d 100644 --- a/primitives/state-machine/src/trie_backend.rs +++ b/primitives/state-machine/src/trie_backend.rs @@ -56,11 +56,6 @@ where self.essence.backend_storage() } - /// Get backend storage reference. - pub fn backend_storage_mut(&mut self) -> &mut S { - self.essence.backend_storage_mut() - } - /// Get trie root. pub fn root(&self) -> &H::Out { self.essence.root() diff --git a/primitives/state-machine/src/trie_backend_essence.rs b/primitives/state-machine/src/trie_backend_essence.rs index 052c61bd6eee1..557a098fbaf79 100644 --- a/primitives/state-machine/src/trie_backend_essence.rs +++ b/primitives/state-machine/src/trie_backend_essence.rs @@ -92,11 +92,6 @@ where &self.storage } - /// Get backend storage reference. - pub fn backend_storage_mut(&mut self) -> &mut S { - &mut self.storage - } - /// Get trie root. pub fn root(&self) -> &H::Out { &self.root