From a6a127e1fffecdb85921f0a464da1e76b3527243 Mon Sep 17 00:00:00 2001 From: Vladimir Motylenko Date: Tue, 11 Jan 2022 16:10:14 +0200 Subject: [PATCH] Fix Review comments --- .github/workflows/tests.yaml | 28 +++--- Cargo.lock | 127 ++++--------------------- core/src/evm_rpc_impl/mod.rs | 22 +++-- core/src/rpc.rs | 2 +- evm-utils/evm-state/src/storage/mod.rs | 10 +- ledger/src/blockstore_processor.rs | 1 + runtime/src/bank.rs | 2 - runtime/src/serde_snapshot.rs | 2 +- 8 files changed, 57 insertions(+), 137 deletions(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 77265aac22..83995321d1 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -14,17 +14,16 @@ jobs: runs-on: build steps: - uses: actions/checkout@v2 + - name: install dependencies + run: | + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get -q -y install curl git libssl-dev libudev-dev make pkg-config zlib1g-dev llvm clang - name: Install stable toolchain uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: stable - override: true + toolchain: 1.55 components: clippy - - name: install dependencies - run: | - apt-get update - apt-get -y install curl git libssl-dev libudev-dev make pkg-config zlib1g-dev llvm clang - name: Run cargo clippy uses: actions-rs/cargo@v1 with: @@ -32,21 +31,22 @@ jobs: args: -- -Dwarnings test: name: test - container: - image: ubuntu:20.04 - runs-on: build + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + - name: install dependencies + run: | + sudo apt-get update + DEBIAN_FRONTEND=noninteractive sudo apt-get -q -y install curl git libssl-dev libudev-dev make pkg-config zlib1g-dev llvm clang - name: Install stable toolchain uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: stable - override: true - - name: install dependencies + toolchain: 1.55 + - name: Setting limits run: | - apt-get update - apt-get -y install curl git libssl-dev libudev-dev make pkg-config zlib1g-dev llvm clang + sudo sysctl -w fs.file-max=5000000 + sudo sysctl -w vm.max_map_count=5000000 - name: Run cargo test uses: actions-rs/cargo@v1 with: diff --git a/Cargo.lock b/Cargo.lock index 1ddcc52b51..0e427c695b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -113,12 +113,6 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" -[[package]] -name = "arrayvec" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" - [[package]] name = "ascii" version = "0.9.3" @@ -368,18 +362,6 @@ dependencies = [ "wyz", ] -[[package]] -name = "bitvec" -version = "0.20.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" -dependencies = [ - "funty", - "radium 0.6.2", - "tap", - "wyz", -] - [[package]] name = "blake3" version = "0.3.8" @@ -572,12 +554,6 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" -[[package]] -name = "byte-slice-cast" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d30c751592b77c499e7bce34d99d67c2c11bdc0574e9a488ddade14150a4698" - [[package]] name = "byte-tools" version = "0.2.0" @@ -1630,7 +1606,7 @@ dependencies = [ "ethereum-types", "hash-db", "hash256-std-hasher", - "parity-scale-codec 1.3.7", + "parity-scale-codec", "rlp", "rlp-derive", "serde", @@ -1648,7 +1624,7 @@ dependencies = [ "fixed-hash", "impl-rlp", "impl-serde", - "primitive-types 0.8.0", + "primitive-types", "uint", ] @@ -1662,8 +1638,8 @@ dependencies = [ "evm-gasometer", "evm-runtime", "log 0.4.14", - "parity-scale-codec 1.3.7", - "primitive-types 0.8.0", + "parity-scale-codec", + "primitive-types", "rlp", "serde", "sha3 0.8.2", @@ -1688,7 +1664,7 @@ dependencies = [ "log 0.4.14", "once_cell", "paw", - "primitive-types 0.8.0", + "primitive-types", "regex", "rlp", "secp256k1", @@ -1713,8 +1689,8 @@ name = "evm-core" version = "0.23.0" source = "git+https://github.com/velas/evm?branch=add-traces#6c553073c2cb9433f290385a4bfa89c41bec5559" dependencies = [ - "parity-scale-codec 1.3.7", - "primitive-types 0.8.0", + "parity-scale-codec", + "primitive-types", "serde", ] @@ -1725,7 +1701,7 @@ source = "git+https://github.com/velas/evm?branch=add-traces#6c553073c2cb9433f29 dependencies = [ "evm-core", "evm-runtime", - "primitive-types 0.8.0", + "primitive-types", ] [[package]] @@ -1743,7 +1719,7 @@ dependencies = [ "jsonrpc-derive", "jsonrpc-http-server", "jsonrpc-pubsub", - "primitive-types 0.8.0", + "primitive-types", "rlp", "rustc-hex", "secp256k1", @@ -1759,7 +1735,7 @@ version = "0.23.0" source = "git+https://github.com/velas/evm?branch=add-traces#6c553073c2cb9433f290385a4bfa89c41bec5559" dependencies = [ "evm-core", - "primitive-types 0.8.0", + "primitive-types", "sha3 0.8.2", ] @@ -1789,7 +1765,7 @@ dependencies = [ "log 0.4.14", "once_cell", "paste 1.0.5", - "primitive-types 0.8.0", + "primitive-types", "quickcheck 0.9.2", "quickcheck_macros 0.9.1", "rand 0.6.1", @@ -2583,16 +2559,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" dependencies = [ - "parity-scale-codec 1.3.7", -] - -[[package]] -name = "impl-codec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" -dependencies = [ - "parity-scale-codec 2.3.1", + "parity-scale-codec", ] [[package]] @@ -2613,17 +2580,6 @@ dependencies = [ "serde", ] -[[package]] -name = "impl-trait-for-tuples" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5dacb10c5b3bb92d46ba347505a9041e676bb20ad220101326bffb0c93031ee" -dependencies = [ - "proc-macro2 1.0.28", - "quote 1.0.9", - "syn 1.0.74", -] - [[package]] name = "indexed" version = "0.1.1" @@ -2907,7 +2863,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3208a3f8f6fad9a5c626276812ebdd54d3b5f79cb59e34c2fdcdf03837900072" dependencies = [ - "primitive-types 0.8.0", + "primitive-types", "tiny-keccak", ] @@ -3544,22 +3500,8 @@ checksum = "a4b26b16c7687c3075982af47719e481815df30bc544f7a6690763a25ca16e9d" dependencies = [ "arrayvec 0.5.2", "bitvec 0.17.4", - "byte-slice-cast 0.3.5", - "parity-scale-codec-derive 1.2.3", - "serde", -] - -[[package]] -name = "parity-scale-codec" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" -dependencies = [ - "arrayvec 0.7.2", - "bitvec 0.20.4", - "byte-slice-cast 1.2.0", - "impl-trait-for-tuples", - "parity-scale-codec-derive 2.3.1", + "byte-slice-cast", + "parity-scale-codec-derive", "serde", ] @@ -3575,18 +3517,6 @@ dependencies = [ "syn 1.0.74", ] -[[package]] -name = "parity-scale-codec-derive" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" -dependencies = [ - "proc-macro-crate 1.0.0", - "proc-macro2 1.0.28", - "quote 1.0.9", - "syn 1.0.74", -] - [[package]] name = "parity-tokio-ipc" version = "0.8.0" @@ -3940,20 +3870,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3824ae2c5e27160113b9e029a10ec9e3f0237bad8029f69c7724393c9fdefd8" dependencies = [ "fixed-hash", - "impl-codec 0.4.2", - "impl-rlp", - "impl-serde", - "uint", -] - -[[package]] -name = "primitive-types" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" -dependencies = [ - "fixed-hash", - "impl-codec 0.5.1", + "impl-codec", "impl-rlp", "impl-serde", "uint", @@ -4149,12 +4066,6 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8" -[[package]] -name = "radium" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" - [[package]] name = "rand" version = "0.3.23" @@ -5608,7 +5519,7 @@ dependencies = [ "net2", "num-traits", "num_cpus", - "primitive-types 0.8.0", + "primitive-types", "rand 0.7.3", "rand_chacha 0.2.2", "rand_core 0.6.3", @@ -5738,7 +5649,7 @@ dependencies = [ "num-derive", "num-traits", "once_cell", - "primitive-types 0.8.0", + "primitive-types", "quickcheck 1.0.3", "quickcheck_macros 1.0.0", "ripemd160", @@ -7810,7 +7721,7 @@ dependencies = [ "dashmap", "derivative", "log 0.4.14", - "primitive-types 0.10.1", + "primitive-types", "rlp", "rocksdb", "sha3 0.9.1", diff --git a/core/src/evm_rpc_impl/mod.rs b/core/src/evm_rpc_impl/mod.rs index 15aa1916e4..30c6c5ed84 100644 --- a/core/src/evm_rpc_impl/mod.rs +++ b/core/src/evm_rpc_impl/mod.rs @@ -9,7 +9,7 @@ use evm_rpc::error::EvmStateError; use evm_rpc::{ basic::BasicERPC, chain_mock::ChainMockERPC, - error::{into_native_error, BlockNotFound, Error}, + error::{into_native_error, BlockNotFound, Error, StateNotFoundForBlock}, trace::TraceMeta, BlockId, BlockRelId, Bytes, Either, Hex, RPCBlock, RPCLog, RPCLogFilter, RPCReceipt, RPCTopicFilter, RPCTransaction, @@ -49,9 +49,13 @@ impl StateRootWithBank { return Ok(evm.get_account_state(address)); } let archive_evm_state = meta.evm_state_archive().ok_or(Error::ArchiveNotSupported)?; - archive_evm_state + ensure!( + archive_evm_state.kvs().check_root_exist(root), + StateNotFoundForBlock { block: self.block } + ); + Ok(archive_evm_state .get_account_state_at(root, address) - .map_err(|_| Error::StateNotFoundForBlock { block: self.block }) // wrap error to typed + .unwrap_or_default()) } pub fn get_storage_at( @@ -73,9 +77,13 @@ impl StateRootWithBank { return Ok(evm.get_storage(address, idx)); } let archive_evm_state = meta.evm_state_archive().ok_or(Error::ArchiveNotSupported)?; - archive_evm_state + ensure!( + archive_evm_state.kvs().check_root_exist(root), + StateNotFoundForBlock { block: self.block } + ); + Ok(archive_evm_state .get_storage_at(root, address, idx) - .map_err(|_| Error::StateNotFoundForBlock { block: self.block }) // wrap error to typed + .unwrap_or_default()) } } @@ -100,7 +108,7 @@ fn block_to_state_root( }; } BlockId::RelativeId(BlockRelId::Earliest) | BlockId::Num(Hex(0)) => { - meta.get_frist_available_evm_block() + meta.get_first_available_evm_block() } BlockId::Num(num) => num.0, BlockId::BlockHash { block_hash } => { @@ -139,7 +147,7 @@ fn block_parse_confirmed_num( let block = block.unwrap_or_default(); match block { BlockId::BlockHash { .. } => None, - BlockId::RelativeId(BlockRelId::Earliest) => Some(meta.get_frist_available_evm_block()), + BlockId::RelativeId(BlockRelId::Earliest) => Some(meta.get_first_available_evm_block()), BlockId::RelativeId(BlockRelId::Pending) | BlockId::RelativeId(BlockRelId::Latest) => { Some(meta.get_last_available_evm_block().unwrap_or_else(|| { let bank = meta.bank(Some(CommitmentConfig::processed())); diff --git a/core/src/rpc.rs b/core/src/rpc.rs index b722090cf9..9ce95d7a4c 100644 --- a/core/src/rpc.rs +++ b/core/src/rpc.rs @@ -2036,7 +2036,7 @@ impl JsonRpcRequestProcessor { Ok(logs) } - pub fn get_frist_available_evm_block(&self) -> u64 { + pub fn get_first_available_evm_block(&self) -> u64 { let block = self .blockstore .get_first_available_evm_block() diff --git a/evm-utils/evm-state/src/storage/mod.rs b/evm-utils/evm-state/src/storage/mod.rs index 32eedae268..d91b35ff28 100644 --- a/evm-utils/evm-state/src/storage/mod.rs +++ b/evm-utils/evm-state/src/storage/mod.rs @@ -182,7 +182,7 @@ impl Storage { // TODO: measure engine.purge_old_backups(HARD_BACKUPS_COUNT)?; } - engine.create_new_backup_flush(&self.db.0, true)?; + engine.create_new_backup_flush(self.db.as_ref(), true)?; Ok(backup_dir) } @@ -448,7 +448,7 @@ impl Storage { let trie = self.rocksdb_trie_handle(); if trie.gc_unpin_root(purge_root) { // TODO: Propagate cleanup to outer level. - RootCleanup::new(&self, vec![purge_root]).cleanup()?; + RootCleanup::new(self, vec![purge_root]).cleanup()?; } } Ok(()) @@ -473,10 +473,12 @@ impl Storage { if slot == keep_slot { continue; } - self.purge_slot(slot)?.map(|root| cleanup_roots.push(root)); + if let Some(root) = self.purge_slot(slot)? { + cleanup_roots.push(root) + } } - let mut cleaner = RootCleanup::new(&self, cleanup_roots); + let mut cleaner = RootCleanup::new(self, cleanup_roots); cleaner.cleanup() } diff --git a/ledger/src/blockstore_processor.rs b/ledger/src/blockstore_processor.rs index 56b85b99a3..a8c19d5683 100644 --- a/ledger/src/blockstore_processor.rs +++ b/ledger/src/blockstore_processor.rs @@ -1132,6 +1132,7 @@ where // Processes and replays the contents of a single slot, returns Error // if failed to play the slot +#[allow(clippy::too_many_arguments)] fn process_single_slot( blockstore: &Blockstore, bank: &Arc, diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 8b0cec0bed..b9fe9a9e28 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -2140,8 +2140,6 @@ impl Bank { } pub fn commit_evm(&self) { -<<<<<<< HEAD - let last_root = self.evm_state.read().unwrap().last_root(); let mut measure = Measure::start("commit-evm-block-ms"); let old_root = self.evm_state.read().unwrap().last_root(); diff --git a/runtime/src/serde_snapshot.rs b/runtime/src/serde_snapshot.rs index db54c16904..4abc0c10b9 100644 --- a/runtime/src/serde_snapshot.rs +++ b/runtime/src/serde_snapshot.rs @@ -325,7 +325,7 @@ where }; evm_state::storage::copy_and_purge( src, - &destination, + destination, bank_fields.evm_persist_feilds.last_root(), ) .map_err(|e| Error::custom(format!("Unable to copy_and_purge storage {}", e)))?;