Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fixed tests
  • Loading branch information
arkpar committed Mar 28, 2019
commit d9d83e485c082e7c9f84eb6e66b0af84790890b9
91 changes: 27 additions & 64 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions core/client/db/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ use client::ExecutionStrategies;
use parity_codec::{Decode, Encode};
use hash_db::Hasher;
use kvdb::{KeyValueDB, DBTransaction};
use trie::{MemoryDB, prefixed_key};
use trie::{MemoryDB, PrefixedMemoryDB, prefixed_key};
use parking_lot::RwLock;
use primitives::{H256, Blake2Hasher, ChangesTrieConfiguration, convert_hash};
use primitives::storage::well_known_keys;
Expand Down Expand Up @@ -259,7 +259,7 @@ impl<Block: BlockT> client::blockchain::Backend<Block> for BlockchainDb<Block> {
/// Database transaction
pub struct BlockImportOperation<Block: BlockT, H: Hasher> {
old_state: CachingState<Blake2Hasher, DbState, Block>,
db_updates: MemoryDB<H>,
db_updates: PrefixedMemoryDB<H>,
storage_updates: Vec<(Vec<u8>, Option<Vec<u8>>)>,
changes_trie_updates: MemoryDB<H>,
pending_block: Option<PendingBlock<Block>>,
Expand Down Expand Up @@ -310,7 +310,7 @@ where Block: BlockT<Hash=H256>,
// currently authorities are not cached on full nodes
}

fn update_db_storage(&mut self, update: MemoryDB<Blake2Hasher>) -> Result<(), client::error::Error> {
fn update_db_storage(&mut self, update: PrefixedMemoryDB<Blake2Hasher>) -> Result<(), client::error::Error> {
self.db_updates = update;
Ok(())
}
Expand All @@ -321,7 +321,7 @@ where Block: BlockT<Hash=H256>,
return Err(client::error::ErrorKind::GenesisInvalid.into());
}

let mut transaction: MemoryDB<Blake2Hasher> = Default::default();
let mut transaction: PrefixedMemoryDB<Blake2Hasher> = Default::default();

for (child_key, child_map) in children {
if !well_known_keys::is_child_storage_key(&child_key) {
Expand Down Expand Up @@ -1032,7 +1032,7 @@ impl<Block> client::backend::Backend<Block, Blake2Hasher> for Backend<Block> whe
Ok(BlockImportOperation {
pending_block: None,
old_state,
db_updates: MemoryDB::default(),
db_updates: PrefixedMemoryDB::default(),
storage_updates: Default::default(),
changes_trie_updates: MemoryDB::default(),
aux_ops: Vec::new(),
Expand Down Expand Up @@ -1550,7 +1550,7 @@ mod tests {
assert_eq!(backend.changes_tries_storage.root(&anchor, block), Ok(Some(changes_root)));

for (key, (val, _)) in changes_trie_update.drain() {
assert_eq!(backend.changes_trie_storage().unwrap().get(&H256::from_slice(key.as_slice()), &[]), Ok(Some(val)));
assert_eq!(backend.changes_trie_storage().unwrap().get(&key, &[]), Ok(Some(val)));
}
};

Expand Down
2 changes: 1 addition & 1 deletion core/primitives/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ primitive-types = { version = "0.2", default-features = false, features = ["code
impl-serde = { version = "0.1", optional = true }
wasmi = { version = "0.4.3", optional = true }
hash-db = { version = "0.12", default-features = false }
hash256-std-hasher = { version = "0.11", default-features = false }
hash256-std-hasher = { version = "0.12", default-features = false }
ring = { version = "0.14", optional = true }
untrusted = { version = "0.6", optional = true }
hex-literal = { version = "0.1", optional = true }
Expand Down
4 changes: 2 additions & 2 deletions core/state-machine/src/backend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,9 @@ impl Consolidate for Vec<(Option<Vec<u8>>, Vec<u8>, Option<Vec<u8>>)> {
}
}

impl<H: Hasher> Consolidate for MemoryDB<H> {
impl<H: Hasher, KF: trie::KeyFunction<H>> Consolidate for trie::GenericMemoryDB<H, KF> {
fn consolidate(&mut self, other: Self) {
MemoryDB::consolidate(self, other)
trie::GenericMemoryDB::consolidate(self, other)
}
}

Expand Down
2 changes: 2 additions & 0 deletions core/state-machine/src/changes_trie/storage.rs
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,8 @@ impl<'a, H: Hasher, S: 'a + Storage<H>> TrieBackendAdapter<'a, H, S> {
}

impl<'a, H: Hasher, S: 'a + Storage<H>> TrieBackendStorage<H> for TrieBackendAdapter<'a, H, S> {
type Overlay = MemoryDB<H>;

fn get(&self, key: &H::Out, prefix: &[u8]) -> Result<Option<DBValue>, String> {
self.storage.get(key, prefix)
}
Expand Down
16 changes: 8 additions & 8 deletions core/state-machine/src/proving_backend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ use log::debug;
use hash_db::Hasher;
use heapsize::HeapSizeOf;
use hash_db::HashDB;
use trie::{Recorder, MemoryDB, TrieError, default_child_trie_root, read_trie_value_with, read_child_trie_value_with, record_all_keys};
use trie::{Recorder, MemoryDB, PrefixedMemoryDB, TrieError, default_child_trie_root, read_trie_value_with, read_child_trie_value_with, record_all_keys};
use crate::trie_backend::TrieBackend;
use crate::trie_backend_essence::{Ephemeral, TrieBackendEssence, TrieBackendStorage};
use crate::{Error, ExecutionError, Backend};
Expand All @@ -40,7 +40,7 @@ impl<'a, S, H> ProvingBackendEssence<'a, S, H>
H::Out: HeapSizeOf,
{
pub fn storage(&mut self, key: &[u8]) -> Result<Option<Vec<u8>>, String> {
let mut read_overlay = MemoryDB::default();
let mut read_overlay = S::Overlay::default();
let eph = Ephemeral::new(
self.backend.backend_storage(),
&mut read_overlay,
Expand All @@ -54,7 +54,7 @@ impl<'a, S, H> ProvingBackendEssence<'a, S, H>
pub fn child_storage(&mut self, storage_key: &[u8], key: &[u8]) -> Result<Option<Vec<u8>>, String> {
let root = self.storage(storage_key)?.unwrap_or(default_child_trie_root::<H>(storage_key));

let mut read_overlay = MemoryDB::default();
let mut read_overlay = S::Overlay::default();
let eph = Ephemeral::new(
self.backend.backend_storage(),
&mut read_overlay,
Expand All @@ -66,7 +66,7 @@ impl<'a, S, H> ProvingBackendEssence<'a, S, H>
}

pub fn record_all_keys(&mut self) {
let mut read_overlay = MemoryDB::default();
let mut read_overlay = S::Overlay::default();
let eph = Ephemeral::new(
self.backend.backend_storage(),
&mut read_overlay,
Expand Down Expand Up @@ -116,8 +116,8 @@ impl<'a, S, H> Backend<H> for ProvingBackend<'a, S, H>
H::Out: Ord + HeapSizeOf,
{
type Error = String;
type Transaction = MemoryDB<H>;
type TrieBackendStorage = MemoryDB<H>;
type Transaction = S::Overlay;
type TrieBackendStorage = PrefixedMemoryDB<H>;

fn storage(&self, key: &[u8]) -> Result<Option<Vec<u8>>, Self::Error> {
ProvingBackendEssence {
Expand Down Expand Up @@ -151,7 +151,7 @@ impl<'a, S, H> Backend<H> for ProvingBackend<'a, S, H>
self.backend.keys(prefix)
}

fn storage_root<I>(&self, delta: I) -> (H::Out, MemoryDB<H>)
fn storage_root<I>(&self, delta: I) -> (H::Out, Self::Transaction)
where I: IntoIterator<Item=(Vec<u8>, Option<Vec<u8>>)>
{
self.backend.storage_root(delta)
Expand Down Expand Up @@ -210,7 +210,7 @@ mod tests {
use super::*;
use primitives::{Blake2Hasher};

fn test_proving<'a>(trie_backend: &'a TrieBackend<MemoryDB<Blake2Hasher>, Blake2Hasher>) -> ProvingBackend<'a, MemoryDB<Blake2Hasher>, Blake2Hasher> {
fn test_proving<'a>(trie_backend: &'a TrieBackend<PrefixedMemoryDB<Blake2Hasher>, Blake2Hasher>) -> ProvingBackend<'a, PrefixedMemoryDB<Blake2Hasher>, Blake2Hasher> {
ProvingBackend::new(trie_backend)
}

Expand Down
Loading