From 9d8d1c6f27b4e6036a6e24bbf030fb56c7ace338 Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Mon, 1 May 2023 15:21:33 +0400 Subject: [PATCH 01/19] remote externalities refactor --- Cargo.lock | 62 +++++ utils/frame/remote-externalities/Cargo.toml | 2 + utils/frame/remote-externalities/src/lib.rs | 275 +++++++------------- 3 files changed, 152 insertions(+), 187 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a1244f2711beb..af7aa502cc7c7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1115,6 +1115,19 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "console" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.42.0", +] + [[package]] name = "const-oid" version = "0.9.2" @@ -1968,6 +1981,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + [[package]] name = "enum-as-inner" version = "0.5.1" @@ -2441,6 +2460,7 @@ dependencies = [ "async-recursion", "frame-support", "futures", + "indicatif", "jsonrpsee", "log", "pallet-elections-phragmen", @@ -2449,6 +2469,7 @@ dependencies = [ "sp-core", "sp-io", "sp-runtime", + "spinners", "substrate-rpc-client", "tokio", "tracing-subscriber 0.3.16", @@ -3344,6 +3365,18 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" +[[package]] +name = "indicatif" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef509aa9bc73864d6756f0d34d35504af3cf0844373afe9b8669a5b8005a729" +dependencies = [ + "console", + "number_prefix", + "portable-atomic", + "unicode-width", +] + [[package]] name = "inout" version = "0.1.3" @@ -4519,6 +4552,12 @@ dependencies = [ "libc", ] +[[package]] +name = "maplit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" + [[package]] name = "match_cfg" version = "0.1.0" @@ -5448,6 +5487,12 @@ dependencies = [ "libc", ] +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + [[package]] name = "object" version = "0.29.0" @@ -7499,6 +7544,12 @@ dependencies = [ "universal-hash 0.5.0", ] +[[package]] +name = "portable-atomic" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26f6a7b87c2e435a3241addceeeff740ff8b7e76b74c13bf9acb17fa454ea00b" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -11062,6 +11113,17 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dccf47db1b41fa1573ed27ccf5e08e3ca771cb994f776668c5ebda893b248fc" +[[package]] +name = "spinners" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08615eea740067d9899969bc2891c68a19c315cb1f66640af9a9ecb91b13bcab" +dependencies = [ + "lazy_static", + "maplit", + "strum", +] + [[package]] name = "spki" version = "0.6.0" diff --git a/utils/frame/remote-externalities/Cargo.toml b/utils/frame/remote-externalities/Cargo.toml index d3909af34451b..21b652014f66e 100644 --- a/utils/frame/remote-externalities/Cargo.toml +++ b/utils/frame/remote-externalities/Cargo.toml @@ -24,6 +24,8 @@ tokio = { version = "1.22.0", features = ["macros", "rt-multi-thread"] } substrate-rpc-client = { path = "../rpc/client" } futures = "0.3" async-recursion = "1.0.4" +indicatif = "0.17.3" +spinners = "4.1.0" [dev-dependencies] frame-support = { version = "4.0.0-dev", path = "../../../frame/support" } diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index 283d2c280b15e..beb995c7915d1 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -22,7 +22,7 @@ use async_recursion::async_recursion; use codec::{Decode, Encode}; -use futures::{channel::mpsc, stream::StreamExt}; +use indicatif::{ProgressBar, ProgressStyle}; use jsonrpsee::{ core::params::ArrayParams, http_client::{HttpClient, HttpClientBuilder}, @@ -39,14 +39,13 @@ use sp_core::{ }; pub use sp_io::TestExternalities; use sp_runtime::{traits::Block as BlockT, StateVersion}; +use spinners::{Spinner, Spinners}; use std::{ - cmp::{max, min}, + cmp::max, fs, - num::NonZeroUsize, ops::{Deref, DerefMut}, path::{Path, PathBuf}, - sync::Arc, - thread, + time::Instant, }; use substrate_rpc_client::{rpc_params, BatchRequestBuilder, ChainApi, ClientT, StateApi}; @@ -119,7 +118,7 @@ pub enum Transport { /// Use the `URI` to open a new WebSocket connection. Uri(String), /// Use HTTP connection. - RemoteClient(Arc), + RemoteClient(HttpClient), } impl Transport { @@ -130,13 +129,6 @@ impl Transport { } } - fn as_client_cloned(&self) -> Option> { - match self { - Self::RemoteClient(client) => Some(client.clone()), - _ => None, - } - } - // Build an HttpClient from a URI. async fn init(&mut self) -> Result<(), &'static str> { if let Self::Uri(uri) = self { @@ -166,7 +158,7 @@ impl Transport { "failed to build http client" })?; - *self = Self::RemoteClient(Arc::new(http_client)) + *self = Self::RemoteClient(http_client) } Ok(()) @@ -179,8 +171,8 @@ impl From for Transport { } } -impl From> for Transport { - fn from(client: Arc) -> Self { +impl From for Transport { + fn from(client: HttpClient) -> Self { Transport::RemoteClient(client) } } @@ -216,13 +208,6 @@ impl OnlineConfig { .expect("http client must have been initialized by now; qed.") } - /// Return a cloned rpc (http) client, suitable for being moved to threads. - fn rpc_client_cloned(&self) -> Arc { - self.transport - .as_client_cloned() - .expect("http client must have been initialized by now; qed.") - } - fn at_expected(&self) -> B::Hash { self.at.expect("block at must be initialized; qed") } @@ -327,31 +312,12 @@ where B::Hash: DeserializeOwned, B::Header: DeserializeOwned, { - const DEFAULT_PARALLELISM: usize = 4; const BATCH_SIZE_INCREASE_FACTOR: f32 = 1.10; const BATCH_SIZE_DECREASE_FACTOR: f32 = 0.50; const INITIAL_BATCH_SIZE: usize = 5000; // NOTE: increasing this value does not seem to impact speed all that much. const DEFAULT_KEY_DOWNLOAD_PAGE: u32 = 1000; - /// Get the number of threads to use. - /// Cap the number of threads. Performance improvement beyond a small number of threads is - /// negligible, and too many threads can create issues with the HttpClient. - fn threads() -> NonZeroUsize { - let avaliable = thread::available_parallelism() - .unwrap_or(NonZeroUsize::new(1usize).expect("1 is non-zero; qed")) - .get(); - assert!(avaliable > 0, "avaliable parallelism must be greater than 0"); - - let requested: usize = match std::env::var("TRY_RUNTIME_MAX_THREADS") { - Ok(n) => n.parse::().expect("TRY_RUNTIME_MAX_THREADS must be a number"), - Err(_) => Self::DEFAULT_PARALLELISM, - }; - assert!(requested > 0, "TRY_RUNTIME_MAX_THREADS must be greater than 0"); - return NonZeroUsize::new(min(requested, avaliable)) - .expect("requested and avaliable are non-zero; qed") - } - async fn rpc_get_storage( &self, key: StorageKey, @@ -471,9 +437,10 @@ where /// ``` #[async_recursion] async fn get_storage_data_dynamic_batch_size( - client: &Arc, + client: &HttpClient, payloads: Vec<(String, ArrayParams)>, batch_size: usize, + bar: &ProgressBar, ) -> Result>, String> { // All payloads have been processed if payloads.is_empty() { @@ -514,6 +481,7 @@ where client, payloads, max(1, (batch_size as f32 * Self::BATCH_SIZE_DECREASE_FACTOR) as usize), + bar, ) .await }, @@ -521,19 +489,22 @@ where // Collect the data from this batch let mut data: Vec> = vec![]; + let batch_response_len = batch_response.len(); for item in batch_response.into_iter() { match item { Ok(x) => data.push(x), Err(e) => return Err(e.message().to_string()), } } + bar.inc(batch_response_len as u64); // Return this data joined with the remaining keys - let payloads = payloads.iter().skip(batch_size).cloned().collect::>(); + let remaining_payloads = payloads.iter().skip(batch_size).cloned().collect::>(); let mut rest = Self::get_storage_data_dynamic_batch_size( client, - payloads, + remaining_payloads, max(batch_size + 1, (batch_size as f32 * Self::BATCH_SIZE_INCREASE_FACTOR) as usize), + bar, ) .await?; data.append(&mut rest); @@ -550,154 +521,86 @@ where at: B::Hash, pending_ext: &mut TestExternalities, ) -> Result, &'static str> { - let keys = self.rpc_get_keys_paged(prefix.clone(), at).await?; + let start = Instant::now(); + let mut sp = Spinner::with_timer(Spinners::Dots, "Scraping keys...".into()); + let keys = self + .rpc_get_keys_paged(prefix.clone(), at) + .await? + .into_iter() + .filter(|k| !is_default_child_storage_key(&k.0)) + .collect::>(); + sp.stop_with_message(format!( + "✅ Found {} keys ({}s)", + keys.len(), + start.elapsed().as_secs() + )); if keys.is_empty() { return Ok(Default::default()) } - let client = self.as_online().rpc_client_cloned(); - let threads = Self::threads().get(); - let thread_chunk_size = (keys.len() + threads - 1) / threads; + let client = self.as_online().rpc_client(); + let payloads = keys + .iter() + .map(|key| ("state_getStorage".to_string(), rpc_params!(key, at))) + .collect::>(); - log::info!( - target: LOG_TARGET, - "Querying a total of {} keys from prefix {:?}, splitting among {} threads, {} keys per thread", - keys.len(), - HexDisplay::from(&prefix), - threads, - thread_chunk_size, + let bar = ProgressBar::new(payloads.len() as u64); + let bar_message = format!("Downloading key values"); + bar.set_message(bar_message); + bar.set_style( + ProgressStyle::with_template( + "[{elapsed_precise}] {msg} [{wide_bar}] {pos}/{len} ({eta})", + ) + .unwrap() + .progress_chars("=>-"), ); - - let mut handles = Vec::new(); - let keys_chunked: Vec> = - keys.chunks(thread_chunk_size).map(|s| s.into()).collect::>(); - - enum Message { - /// This thread completed the assigned work. - Terminated, - /// The thread produced the following batch response. - Batch(Vec<(Vec, Vec)>), - /// A request from the batch failed. - BatchFailed(String), + let batches = payloads.chunks(&payloads.len() / 4); + let mut operations = vec![]; + for payload_batch in batches { + operations.push(Self::get_storage_data_dynamic_batch_size( + &client, + payload_batch.to_vec(), + Self::INITIAL_BATCH_SIZE, + &bar, + )) } + let storage_data = futures::future::join_all(operations) + .await + .into_iter() + .map(|r| r.unwrap()) + .flatten() + .collect::>(); + bar.finish_with_message("✅ Downloaded key values"); + print!("\n"); + // std::io::stdout().flush().unwrap(); + // std::io::stderr().flush().unwrap(); - let (tx, mut rx) = mpsc::unbounded::(); - - for thread_keys in keys_chunked { - let thread_sender = tx.clone(); - let thread_client = client.clone(); - let handle = std::thread::spawn(move || { - // Process the payloads in chunks so each thread can pass kvs back to the main - // thread to start inserting before all of the data has been queried from the node. - // Inserting data takes a very long time, so the earlier it can start the better. - let mut thread_key_values = vec![]; - let chunk_size = thread_keys.len() / 1; - for thread_keys_chunk in thread_keys.chunks(chunk_size) { - let mut thread_key_chunk_values = Vec::with_capacity(thread_keys_chunk.len()); - - let payloads = thread_keys_chunk - .iter() - .map(|key| ("state_getStorage".to_string(), rpc_params!(key, at))) - .collect::>(); - - let rt = tokio::runtime::Runtime::new().unwrap(); - let storage_data = match rt.block_on(Self::get_storage_data_dynamic_batch_size( - &thread_client, - payloads, - Self::INITIAL_BATCH_SIZE, - )) { - Ok(storage_data) => storage_data, - Err(e) => { - thread_sender.unbounded_send(Message::BatchFailed(e)).unwrap(); - return Default::default() - }, - }; - - // Check if we got responses for all submitted requests. - assert_eq!(thread_keys_chunk.len(), storage_data.len()); - - let mut batch_kv = Vec::with_capacity(thread_keys_chunk.len()); - for (key, maybe_value) in thread_keys_chunk.iter().zip(storage_data) { - match maybe_value { - Some(data) => { - thread_key_chunk_values.push((key.clone(), data.clone())); - batch_kv.push((key.clone().0, data.0)); - }, - None => { - log::warn!( - target: LOG_TARGET, - "key {:?} had none corresponding value.", - &key - ); - let data = StorageData(vec![]); - thread_key_chunk_values.push((key.clone(), data.clone())); - batch_kv.push((key.clone().0, data.0)); - }, - }; - } - - // Send this chunk to the main thread to start inserting. - thread_sender.unbounded_send(Message::Batch(batch_kv)).unwrap(); - thread_key_values.extend(thread_key_chunk_values); - } - - thread_sender.unbounded_send(Message::Terminated).unwrap(); - thread_key_values - }); - - handles.push(handle); - } + // Check if we got responses for all submitted requests. + assert_eq!(keys.len(), storage_data.len()); - // first, wait until all threads send a `Terminated` message, in the meantime populate - // `pending_ext`. - let mut terminated = 0usize; - let mut batch_failed = false; - let mut processed = 0usize; - loop { - match rx.next().await.unwrap() { - Message::Batch(kvs) => { - let kvs = kvs - .into_iter() - .filter(|(k, _)| !is_default_child_storage_key(k)) - .collect::>(); - processed += kvs.len(); - pending_ext.batch_insert(kvs); - log::info!( - target: LOG_TARGET, - "inserting keys progress = {:.0}% [{} / {}]", - (processed as f32 / keys.len() as f32) * 100f32, - processed, - keys.len(), - ); - }, - Message::BatchFailed(error) => { - log::error!(target: LOG_TARGET, "Batch processing failed: {:?}", error); - batch_failed = true; - break - }, - Message::Terminated => { - terminated += 1; - if terminated == handles.len() { - break - } + let key_values = keys + .iter() + .zip(storage_data) + .map(|(key, maybe_value)| match maybe_value { + Some(data) => (key.clone(), data), + None => { + log::warn!(target: LOG_TARGET, "key {:?} had none corresponding value.", &key); + let data = StorageData(vec![]); + (key.clone(), data) }, - } - } - - // Ensure all threads finished execution before returning. - let keys_and_values = - handles.into_iter().flat_map(|h| h.join().unwrap()).collect::>(); - - if batch_failed { - return Err("Batch failed.") - } + }) + .collect::>(); - Ok(keys_and_values) + let mut sp = Spinner::with_timer(Spinners::Dots, "Inserting keys into DB...".into()); + let start = Instant::now(); + pending_ext.batch_insert(key_values.clone().into_iter().map(|(k, v)| (k.0, v.0))); + sp.stop_with_message(format!("✅ Inserted keys into DB ({}s)", start.elapsed().as_secs())); + Ok(key_values) } /// Get the values corresponding to `child_keys` at the given `prefixed_top_key`. pub(crate) async fn rpc_child_get_storage_paged( - client: &Arc, + client: &HttpClient, prefixed_top_key: &StorageKey, child_keys: Vec, at: B::Hash, @@ -718,10 +621,12 @@ where }) .collect::>(); + let bar = ProgressBar::new(payloads.len() as u64); let storage_data = match Self::get_storage_data_dynamic_batch_size( client, payloads, Self::INITIAL_BATCH_SIZE, + &bar, ) .await { @@ -814,19 +719,15 @@ where let at = self.as_online().at_expected(); - let arc_client = self.as_online().rpc_client_cloned(); + let client = self.as_online().rpc_client(); let mut child_kv = vec![]; for prefixed_top_key in child_roots { - let child_keys = Self::rpc_child_get_keys( - arc_client.as_ref(), - &prefixed_top_key, - StorageKey(vec![]), - at, - ) - .await?; + let child_keys = + Self::rpc_child_get_keys(&client, &prefixed_top_key, StorageKey(vec![]), at) + .await?; let child_kv_inner = - Self::rpc_child_get_storage_paged(&arc_client, &prefixed_top_key, child_keys, at) + Self::rpc_child_get_storage_paged(&client, &prefixed_top_key, child_keys, at) .await?; let prefixed_top_key = PrefixedStorageKey::new(prefixed_top_key.clone().0); From 9f973086fc660adc9f1c6e1e1db73e24d855019f Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Mon, 1 May 2023 15:52:35 +0400 Subject: [PATCH 02/19] remove redundant logs --- utils/frame/remote-externalities/src/lib.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index beb995c7915d1..e6a79a319eab5 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -572,8 +572,6 @@ where .collect::>(); bar.finish_with_message("✅ Downloaded key values"); print!("\n"); - // std::io::stdout().flush().unwrap(); - // std::io::stderr().flush().unwrap(); // Check if we got responses for all submitted requests. assert_eq!(keys.len(), storage_data.len()); From c9f8b3e3b18cd919a096c6981ddc66aeb0325bef Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Mon, 1 May 2023 15:59:59 +0400 Subject: [PATCH 03/19] use const for parallel requests --- utils/frame/remote-externalities/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index e6a79a319eab5..21f7e87d77d31 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -312,6 +312,7 @@ where B::Hash: DeserializeOwned, B::Header: DeserializeOwned, { + const PARALLEL_REQUESTS: usize = 4; const BATCH_SIZE_INCREASE_FACTOR: f32 = 1.10; const BATCH_SIZE_DECREASE_FACTOR: f32 = 0.50; const INITIAL_BATCH_SIZE: usize = 5000; @@ -554,7 +555,7 @@ where .unwrap() .progress_chars("=>-"), ); - let batches = payloads.chunks(&payloads.len() / 4); + let batches = payloads.chunks(&payloads.len() / Self::PARALLEL_REQUESTS); let mut operations = vec![]; for payload_batch in batches { operations.push(Self::get_storage_data_dynamic_batch_size( From 266de138b918aa414e8766b8914c8b970102ffff Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Mon, 1 May 2023 16:15:23 +0400 Subject: [PATCH 04/19] prefer functional --- utils/frame/remote-externalities/src/lib.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index 21f7e87d77d31..b94c218218e76 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -555,17 +555,16 @@ where .unwrap() .progress_chars("=>-"), ); - let batches = payloads.chunks(&payloads.len() / Self::PARALLEL_REQUESTS); - let mut operations = vec![]; - for payload_batch in batches { - operations.push(Self::get_storage_data_dynamic_batch_size( + let payloads_batched = payloads.chunks(&payloads.len() / Self::PARALLEL_REQUESTS); + let requests = payloads_batched.map(|payload_batch| { + Self::get_storage_data_dynamic_batch_size( &client, payload_batch.to_vec(), Self::INITIAL_BATCH_SIZE, &bar, - )) - } - let storage_data = futures::future::join_all(operations) + ) + }); + let storage_data = futures::future::join_all(requests) .await .into_iter() .map(|r| r.unwrap()) From 5ec01550b58efe7ddcfea48b23f0e5599e5b2108 Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Mon, 1 May 2023 16:16:32 +0400 Subject: [PATCH 05/19] improve variable naming --- utils/frame/remote-externalities/src/lib.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index b94c218218e76..a160c37bfcd88 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -555,11 +555,11 @@ where .unwrap() .progress_chars("=>-"), ); - let payloads_batched = payloads.chunks(&payloads.len() / Self::PARALLEL_REQUESTS); - let requests = payloads_batched.map(|payload_batch| { + let payloads_chunked = payloads.chunks(&payloads.len() / Self::PARALLEL_REQUESTS); + let requests = payloads_chunked.map(|payload_chunk| { Self::get_storage_data_dynamic_batch_size( &client, - payload_batch.to_vec(), + payload_chunk.to_vec(), Self::INITIAL_BATCH_SIZE, &bar, ) From 7026d00064e71883aa2908a3ab4aee181bc8bd0c Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Tue, 2 May 2023 10:24:35 +0400 Subject: [PATCH 06/19] handle requests error --- utils/frame/remote-externalities/src/lib.rs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index a160c37bfcd88..3358a7697c48f 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -564,12 +564,17 @@ where &bar, ) }); - let storage_data = futures::future::join_all(requests) - .await - .into_iter() - .map(|r| r.unwrap()) - .flatten() - .collect::>(); + // Execute the requests and move the Result outside. + let storage_data_result: Result, _> = + futures::future::join_all(requests).await.into_iter().collect(); + // Handle the Result. + let storage_data = match storage_data_result { + Ok(storage_data) => storage_data.into_iter().flatten().collect::>(), + Err(e) => { + log::error!(target: LOG_TARGET, "Error while getting storage data: {}", e); + return Err("Error while getting storage data") + }, + }; bar.finish_with_message("✅ Downloaded key values"); print!("\n"); From c0ddb87a5abdd52207597f5df66cbbdf9d79badc Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Tue, 2 May 2023 13:40:07 +0400 Subject: [PATCH 07/19] use overlayedchanges --- .../src/overlayed_changes/mod.rs | 2 +- primitives/state-machine/src/testing.rs | 7 ++- utils/frame/remote-externalities/Cargo.toml | 1 + utils/frame/remote-externalities/src/lib.rs | 52 +++++++++++-------- 4 files changed, 38 insertions(+), 24 deletions(-) diff --git a/primitives/state-machine/src/overlayed_changes/mod.rs b/primitives/state-machine/src/overlayed_changes/mod.rs index b32df635b177c..8d54262e27539 100644 --- a/primitives/state-machine/src/overlayed_changes/mod.rs +++ b/primitives/state-machine/src/overlayed_changes/mod.rs @@ -276,7 +276,7 @@ impl OverlayedChanges { /// `None` can be used to delete a value specified by the given key. /// /// Can be rolled back or committed when called inside a transaction. - pub(crate) fn set_child_storage( + pub fn set_child_storage( &mut self, child_info: &ChildInfo, key: StorageKey, diff --git a/primitives/state-machine/src/testing.rs b/primitives/state-machine/src/testing.rs index 1921287a64745..873b7cf01e784 100644 --- a/primitives/state-machine/src/testing.rs +++ b/primitives/state-machine/src/testing.rs @@ -117,7 +117,12 @@ where } } - /// Returns the overlayed changes. + /// Returns a mutable reference to the overlayed changes. + pub fn overlayed_changes_mut(&mut self) -> &mut OverlayedChanges { + &mut self.overlay + } + + /// Returns an immutable reference to the overlayed changes. pub fn overlayed_changes(&self) -> &OverlayedChanges { &self.overlay } diff --git a/utils/frame/remote-externalities/Cargo.toml b/utils/frame/remote-externalities/Cargo.toml index 21b652014f66e..c16e553ece8a9 100644 --- a/utils/frame/remote-externalities/Cargo.toml +++ b/utils/frame/remote-externalities/Cargo.toml @@ -17,6 +17,7 @@ codec = { package = "parity-scale-codec", version = "3.2.2" } log = "0.4.17" serde = "1.0.136" frame-support = { version = "4.0.0-dev", optional = true, path = "../../../frame/support" } +sp-state-machine = { version = "0.13.0", path = "../../../primitives/state-machine" } sp-core = { version = "7.0.0", path = "../../../primitives/core" } sp-io = { version = "7.0.0", path = "../../../primitives/io" } sp-runtime = { version = "7.0.0", path = "../../../primitives/runtime" } diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index 3358a7697c48f..c6010bb7feee2 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -39,6 +39,7 @@ use sp_core::{ }; pub use sp_io::TestExternalities; use sp_runtime::{traits::Block as BlockT, StateVersion}; +use sp_state_machine::OverlayedChanges; use spinners::{Spinner, Spinners}; use std::{ cmp::max, @@ -520,7 +521,7 @@ where &self, prefix: StorageKey, at: B::Hash, - pending_ext: &mut TestExternalities, + ext_overlay: &mut OverlayedChanges, ) -> Result, &'static str> { let start = Instant::now(); let mut sp = Spinner::with_timer(Spinners::Dots, "Scraping keys...".into()); @@ -546,7 +547,7 @@ where .collect::>(); let bar = ProgressBar::new(payloads.len() as u64); - let bar_message = format!("Downloading key values"); + let bar_message = "Downloading key values".to_string(); bar.set_message(bar_message); bar.set_style( ProgressStyle::with_template( @@ -596,7 +597,9 @@ where let mut sp = Spinner::with_timer(Spinners::Dots, "Inserting keys into DB...".into()); let start = Instant::now(); - pending_ext.batch_insert(key_values.clone().into_iter().map(|(k, v)| (k.0, v.0))); + key_values.clone().into_iter().for_each(|(k, v)| { + ext_overlay.set_storage(k.0, Some(v.0)); + }); sp.stop_with_message(format!("✅ Inserted keys into DB ({}s)", start.elapsed().as_secs())); Ok(key_values) } @@ -703,7 +706,7 @@ where async fn load_child_remote( &self, top_kv: &[KeyValue], - pending_ext: &mut TestExternalities, + ext_overlay: &mut OverlayedChanges, ) -> Result { let child_roots = top_kv .into_iter() @@ -747,7 +750,7 @@ where child_kv_inner.iter().cloned().map(|(k, v)| (k.0, v.0)).collect::>(); child_kv.push((info.clone(), child_kv_inner)); for (k, v) in key_values { - pending_ext.insert_child(info.clone(), k, v); + ext_overlay.set_child_storage(&info, k, Some(v)); } } @@ -756,11 +759,11 @@ where /// Build `Self` from a network node denoted by `uri`. /// - /// This function concurrently populates `pending_ext`. the return value is only for writing to - /// cache, we can also optimize further. + /// This function populates `ext_overlay`. The return value is for optionally writing to a + /// snapshot file. async fn load_top_remote( &self, - pending_ext: &mut TestExternalities, + ext_overlay: &mut OverlayedChanges, ) -> Result { let config = self.as_online(); let at = self @@ -773,7 +776,7 @@ where for prefix in &config.hashed_prefixes { let now = std::time::Instant::now(); let additional_key_values = - self.rpc_get_pairs_paged(StorageKey(prefix.to_vec()), at, pending_ext).await?; + self.rpc_get_pairs_paged(StorageKey(prefix.to_vec()), at, ext_overlay).await?; let elapsed = now.elapsed(); log::info!( target: LOG_TARGET, @@ -793,7 +796,7 @@ where ); match self.rpc_get_storage(key.clone(), Some(at)).await? { Some(value) => { - pending_ext.insert(key.clone().0, value.clone().0); + ext_overlay.set_storage(key.clone().0, Some(value.clone().0)); keys_and_values.push((key, value)); }, None => { @@ -874,8 +877,10 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); - let top_kv = self.load_top_remote(&mut pending_ext).await?; - let child_kv = self.load_child_remote(&top_kv, &mut pending_ext).await?; + let top_kv = self.load_top_remote(&mut pending_ext.overlayed_changes_mut()).await?; + let child_kv = self + .load_child_remote(&top_kv, &mut pending_ext.overlayed_changes_mut()) + .await?; if let Some(path) = self.as_online().state_snapshot.clone().map(|c| c.path) { let snapshot = Snapshot:: { @@ -925,24 +930,23 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); + let ext_overlay = inner_ext.overlayed_changes_mut(); - info!(target: LOG_TARGET, "injecting a total of {} top keys", top.len()); - let top = top - .into_iter() + info!(target: LOG_TARGET, "injecting {} top keys", top.len()); + top.into_iter() .filter(|(k, _)| !is_default_child_storage_key(k.as_ref())) - .map(|(k, v)| (k.0, v.0)) - .collect::>(); - inner_ext.batch_insert(top); + .for_each(|(k, v)| { + ext_overlay.set_storage(k.0, Some(v.0)); + }); info!( target: LOG_TARGET, - "injecting a total of {} child keys", + "injecting {} child keys", child.iter().flat_map(|(_, kv)| kv).count() ); - for (info, key_values) in child { for (k, v) in key_values { - inner_ext.insert_child(info.clone(), k.0, v.0); + ext_overlay.set_child_storage(&info.clone(), k.0, Some(v.0)); } } @@ -960,6 +964,7 @@ where } }, }; + let ext_overlay = ext.inner_ext.overlayed_changes_mut(); // inject manual key values. if !self.hashed_key_values.is_empty() { @@ -968,7 +973,10 @@ where "extending externalities with {} manually injected key-values", self.hashed_key_values.len() ); - ext.batch_insert(self.hashed_key_values.into_iter().map(|(k, v)| (k.0, v.0))); + + self.hashed_key_values.into_iter().for_each(|(k, v)| { + ext_overlay.set_storage(k.0, Some(v.0)); + }); } // exclude manual key values. From 1d49362d9b999c045c8f970a0ab8b486bc47a90a Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Tue, 2 May 2023 14:29:58 +0400 Subject: [PATCH 08/19] Revert "use overlayedchanges" This reverts commit c0ddb87a5abdd52207597f5df66cbbdf9d79badc. --- .../src/overlayed_changes/mod.rs | 2 +- primitives/state-machine/src/testing.rs | 7 +-- utils/frame/remote-externalities/Cargo.toml | 1 - utils/frame/remote-externalities/src/lib.rs | 52 ++++++++----------- 4 files changed, 24 insertions(+), 38 deletions(-) diff --git a/primitives/state-machine/src/overlayed_changes/mod.rs b/primitives/state-machine/src/overlayed_changes/mod.rs index 8d54262e27539..b32df635b177c 100644 --- a/primitives/state-machine/src/overlayed_changes/mod.rs +++ b/primitives/state-machine/src/overlayed_changes/mod.rs @@ -276,7 +276,7 @@ impl OverlayedChanges { /// `None` can be used to delete a value specified by the given key. /// /// Can be rolled back or committed when called inside a transaction. - pub fn set_child_storage( + pub(crate) fn set_child_storage( &mut self, child_info: &ChildInfo, key: StorageKey, diff --git a/primitives/state-machine/src/testing.rs b/primitives/state-machine/src/testing.rs index 873b7cf01e784..1921287a64745 100644 --- a/primitives/state-machine/src/testing.rs +++ b/primitives/state-machine/src/testing.rs @@ -117,12 +117,7 @@ where } } - /// Returns a mutable reference to the overlayed changes. - pub fn overlayed_changes_mut(&mut self) -> &mut OverlayedChanges { - &mut self.overlay - } - - /// Returns an immutable reference to the overlayed changes. + /// Returns the overlayed changes. pub fn overlayed_changes(&self) -> &OverlayedChanges { &self.overlay } diff --git a/utils/frame/remote-externalities/Cargo.toml b/utils/frame/remote-externalities/Cargo.toml index c16e553ece8a9..21b652014f66e 100644 --- a/utils/frame/remote-externalities/Cargo.toml +++ b/utils/frame/remote-externalities/Cargo.toml @@ -17,7 +17,6 @@ codec = { package = "parity-scale-codec", version = "3.2.2" } log = "0.4.17" serde = "1.0.136" frame-support = { version = "4.0.0-dev", optional = true, path = "../../../frame/support" } -sp-state-machine = { version = "0.13.0", path = "../../../primitives/state-machine" } sp-core = { version = "7.0.0", path = "../../../primitives/core" } sp-io = { version = "7.0.0", path = "../../../primitives/io" } sp-runtime = { version = "7.0.0", path = "../../../primitives/runtime" } diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index c6010bb7feee2..3358a7697c48f 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -39,7 +39,6 @@ use sp_core::{ }; pub use sp_io::TestExternalities; use sp_runtime::{traits::Block as BlockT, StateVersion}; -use sp_state_machine::OverlayedChanges; use spinners::{Spinner, Spinners}; use std::{ cmp::max, @@ -521,7 +520,7 @@ where &self, prefix: StorageKey, at: B::Hash, - ext_overlay: &mut OverlayedChanges, + pending_ext: &mut TestExternalities, ) -> Result, &'static str> { let start = Instant::now(); let mut sp = Spinner::with_timer(Spinners::Dots, "Scraping keys...".into()); @@ -547,7 +546,7 @@ where .collect::>(); let bar = ProgressBar::new(payloads.len() as u64); - let bar_message = "Downloading key values".to_string(); + let bar_message = format!("Downloading key values"); bar.set_message(bar_message); bar.set_style( ProgressStyle::with_template( @@ -597,9 +596,7 @@ where let mut sp = Spinner::with_timer(Spinners::Dots, "Inserting keys into DB...".into()); let start = Instant::now(); - key_values.clone().into_iter().for_each(|(k, v)| { - ext_overlay.set_storage(k.0, Some(v.0)); - }); + pending_ext.batch_insert(key_values.clone().into_iter().map(|(k, v)| (k.0, v.0))); sp.stop_with_message(format!("✅ Inserted keys into DB ({}s)", start.elapsed().as_secs())); Ok(key_values) } @@ -706,7 +703,7 @@ where async fn load_child_remote( &self, top_kv: &[KeyValue], - ext_overlay: &mut OverlayedChanges, + pending_ext: &mut TestExternalities, ) -> Result { let child_roots = top_kv .into_iter() @@ -750,7 +747,7 @@ where child_kv_inner.iter().cloned().map(|(k, v)| (k.0, v.0)).collect::>(); child_kv.push((info.clone(), child_kv_inner)); for (k, v) in key_values { - ext_overlay.set_child_storage(&info, k, Some(v)); + pending_ext.insert_child(info.clone(), k, v); } } @@ -759,11 +756,11 @@ where /// Build `Self` from a network node denoted by `uri`. /// - /// This function populates `ext_overlay`. The return value is for optionally writing to a - /// snapshot file. + /// This function concurrently populates `pending_ext`. the return value is only for writing to + /// cache, we can also optimize further. async fn load_top_remote( &self, - ext_overlay: &mut OverlayedChanges, + pending_ext: &mut TestExternalities, ) -> Result { let config = self.as_online(); let at = self @@ -776,7 +773,7 @@ where for prefix in &config.hashed_prefixes { let now = std::time::Instant::now(); let additional_key_values = - self.rpc_get_pairs_paged(StorageKey(prefix.to_vec()), at, ext_overlay).await?; + self.rpc_get_pairs_paged(StorageKey(prefix.to_vec()), at, pending_ext).await?; let elapsed = now.elapsed(); log::info!( target: LOG_TARGET, @@ -796,7 +793,7 @@ where ); match self.rpc_get_storage(key.clone(), Some(at)).await? { Some(value) => { - ext_overlay.set_storage(key.clone().0, Some(value.clone().0)); + pending_ext.insert(key.clone().0, value.clone().0); keys_and_values.push((key, value)); }, None => { @@ -877,10 +874,8 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); - let top_kv = self.load_top_remote(&mut pending_ext.overlayed_changes_mut()).await?; - let child_kv = self - .load_child_remote(&top_kv, &mut pending_ext.overlayed_changes_mut()) - .await?; + let top_kv = self.load_top_remote(&mut pending_ext).await?; + let child_kv = self.load_child_remote(&top_kv, &mut pending_ext).await?; if let Some(path) = self.as_online().state_snapshot.clone().map(|c| c.path) { let snapshot = Snapshot:: { @@ -930,23 +925,24 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); - let ext_overlay = inner_ext.overlayed_changes_mut(); - info!(target: LOG_TARGET, "injecting {} top keys", top.len()); - top.into_iter() + info!(target: LOG_TARGET, "injecting a total of {} top keys", top.len()); + let top = top + .into_iter() .filter(|(k, _)| !is_default_child_storage_key(k.as_ref())) - .for_each(|(k, v)| { - ext_overlay.set_storage(k.0, Some(v.0)); - }); + .map(|(k, v)| (k.0, v.0)) + .collect::>(); + inner_ext.batch_insert(top); info!( target: LOG_TARGET, - "injecting {} child keys", + "injecting a total of {} child keys", child.iter().flat_map(|(_, kv)| kv).count() ); + for (info, key_values) in child { for (k, v) in key_values { - ext_overlay.set_child_storage(&info.clone(), k.0, Some(v.0)); + inner_ext.insert_child(info.clone(), k.0, v.0); } } @@ -964,7 +960,6 @@ where } }, }; - let ext_overlay = ext.inner_ext.overlayed_changes_mut(); // inject manual key values. if !self.hashed_key_values.is_empty() { @@ -973,10 +968,7 @@ where "extending externalities with {} manually injected key-values", self.hashed_key_values.len() ); - - self.hashed_key_values.into_iter().for_each(|(k, v)| { - ext_overlay.set_storage(k.0, Some(v.0)); - }); + ext.batch_insert(self.hashed_key_values.into_iter().map(|(k, v)| (k.0, v.0))); } // exclude manual key values. From 06df786488d94f249e9abccffac4af445f76e5a7 Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Tue, 2 May 2023 15:39:01 +0400 Subject: [PATCH 09/19] Revert "Revert "use overlayedchanges"" This reverts commit 1d49362d9b999c045c8f970a0ab8b486bc47a90a. --- .../src/overlayed_changes/mod.rs | 2 +- primitives/state-machine/src/testing.rs | 7 ++- utils/frame/remote-externalities/Cargo.toml | 1 + utils/frame/remote-externalities/src/lib.rs | 52 +++++++++++-------- 4 files changed, 38 insertions(+), 24 deletions(-) diff --git a/primitives/state-machine/src/overlayed_changes/mod.rs b/primitives/state-machine/src/overlayed_changes/mod.rs index b32df635b177c..8d54262e27539 100644 --- a/primitives/state-machine/src/overlayed_changes/mod.rs +++ b/primitives/state-machine/src/overlayed_changes/mod.rs @@ -276,7 +276,7 @@ impl OverlayedChanges { /// `None` can be used to delete a value specified by the given key. /// /// Can be rolled back or committed when called inside a transaction. - pub(crate) fn set_child_storage( + pub fn set_child_storage( &mut self, child_info: &ChildInfo, key: StorageKey, diff --git a/primitives/state-machine/src/testing.rs b/primitives/state-machine/src/testing.rs index 1921287a64745..873b7cf01e784 100644 --- a/primitives/state-machine/src/testing.rs +++ b/primitives/state-machine/src/testing.rs @@ -117,7 +117,12 @@ where } } - /// Returns the overlayed changes. + /// Returns a mutable reference to the overlayed changes. + pub fn overlayed_changes_mut(&mut self) -> &mut OverlayedChanges { + &mut self.overlay + } + + /// Returns an immutable reference to the overlayed changes. pub fn overlayed_changes(&self) -> &OverlayedChanges { &self.overlay } diff --git a/utils/frame/remote-externalities/Cargo.toml b/utils/frame/remote-externalities/Cargo.toml index 21b652014f66e..c16e553ece8a9 100644 --- a/utils/frame/remote-externalities/Cargo.toml +++ b/utils/frame/remote-externalities/Cargo.toml @@ -17,6 +17,7 @@ codec = { package = "parity-scale-codec", version = "3.2.2" } log = "0.4.17" serde = "1.0.136" frame-support = { version = "4.0.0-dev", optional = true, path = "../../../frame/support" } +sp-state-machine = { version = "0.13.0", path = "../../../primitives/state-machine" } sp-core = { version = "7.0.0", path = "../../../primitives/core" } sp-io = { version = "7.0.0", path = "../../../primitives/io" } sp-runtime = { version = "7.0.0", path = "../../../primitives/runtime" } diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index 3358a7697c48f..c6010bb7feee2 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -39,6 +39,7 @@ use sp_core::{ }; pub use sp_io::TestExternalities; use sp_runtime::{traits::Block as BlockT, StateVersion}; +use sp_state_machine::OverlayedChanges; use spinners::{Spinner, Spinners}; use std::{ cmp::max, @@ -520,7 +521,7 @@ where &self, prefix: StorageKey, at: B::Hash, - pending_ext: &mut TestExternalities, + ext_overlay: &mut OverlayedChanges, ) -> Result, &'static str> { let start = Instant::now(); let mut sp = Spinner::with_timer(Spinners::Dots, "Scraping keys...".into()); @@ -546,7 +547,7 @@ where .collect::>(); let bar = ProgressBar::new(payloads.len() as u64); - let bar_message = format!("Downloading key values"); + let bar_message = "Downloading key values".to_string(); bar.set_message(bar_message); bar.set_style( ProgressStyle::with_template( @@ -596,7 +597,9 @@ where let mut sp = Spinner::with_timer(Spinners::Dots, "Inserting keys into DB...".into()); let start = Instant::now(); - pending_ext.batch_insert(key_values.clone().into_iter().map(|(k, v)| (k.0, v.0))); + key_values.clone().into_iter().for_each(|(k, v)| { + ext_overlay.set_storage(k.0, Some(v.0)); + }); sp.stop_with_message(format!("✅ Inserted keys into DB ({}s)", start.elapsed().as_secs())); Ok(key_values) } @@ -703,7 +706,7 @@ where async fn load_child_remote( &self, top_kv: &[KeyValue], - pending_ext: &mut TestExternalities, + ext_overlay: &mut OverlayedChanges, ) -> Result { let child_roots = top_kv .into_iter() @@ -747,7 +750,7 @@ where child_kv_inner.iter().cloned().map(|(k, v)| (k.0, v.0)).collect::>(); child_kv.push((info.clone(), child_kv_inner)); for (k, v) in key_values { - pending_ext.insert_child(info.clone(), k, v); + ext_overlay.set_child_storage(&info, k, Some(v)); } } @@ -756,11 +759,11 @@ where /// Build `Self` from a network node denoted by `uri`. /// - /// This function concurrently populates `pending_ext`. the return value is only for writing to - /// cache, we can also optimize further. + /// This function populates `ext_overlay`. The return value is for optionally writing to a + /// snapshot file. async fn load_top_remote( &self, - pending_ext: &mut TestExternalities, + ext_overlay: &mut OverlayedChanges, ) -> Result { let config = self.as_online(); let at = self @@ -773,7 +776,7 @@ where for prefix in &config.hashed_prefixes { let now = std::time::Instant::now(); let additional_key_values = - self.rpc_get_pairs_paged(StorageKey(prefix.to_vec()), at, pending_ext).await?; + self.rpc_get_pairs_paged(StorageKey(prefix.to_vec()), at, ext_overlay).await?; let elapsed = now.elapsed(); log::info!( target: LOG_TARGET, @@ -793,7 +796,7 @@ where ); match self.rpc_get_storage(key.clone(), Some(at)).await? { Some(value) => { - pending_ext.insert(key.clone().0, value.clone().0); + ext_overlay.set_storage(key.clone().0, Some(value.clone().0)); keys_and_values.push((key, value)); }, None => { @@ -874,8 +877,10 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); - let top_kv = self.load_top_remote(&mut pending_ext).await?; - let child_kv = self.load_child_remote(&top_kv, &mut pending_ext).await?; + let top_kv = self.load_top_remote(&mut pending_ext.overlayed_changes_mut()).await?; + let child_kv = self + .load_child_remote(&top_kv, &mut pending_ext.overlayed_changes_mut()) + .await?; if let Some(path) = self.as_online().state_snapshot.clone().map(|c| c.path) { let snapshot = Snapshot:: { @@ -925,24 +930,23 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); + let ext_overlay = inner_ext.overlayed_changes_mut(); - info!(target: LOG_TARGET, "injecting a total of {} top keys", top.len()); - let top = top - .into_iter() + info!(target: LOG_TARGET, "injecting {} top keys", top.len()); + top.into_iter() .filter(|(k, _)| !is_default_child_storage_key(k.as_ref())) - .map(|(k, v)| (k.0, v.0)) - .collect::>(); - inner_ext.batch_insert(top); + .for_each(|(k, v)| { + ext_overlay.set_storage(k.0, Some(v.0)); + }); info!( target: LOG_TARGET, - "injecting a total of {} child keys", + "injecting {} child keys", child.iter().flat_map(|(_, kv)| kv).count() ); - for (info, key_values) in child { for (k, v) in key_values { - inner_ext.insert_child(info.clone(), k.0, v.0); + ext_overlay.set_child_storage(&info.clone(), k.0, Some(v.0)); } } @@ -960,6 +964,7 @@ where } }, }; + let ext_overlay = ext.inner_ext.overlayed_changes_mut(); // inject manual key values. if !self.hashed_key_values.is_empty() { @@ -968,7 +973,10 @@ where "extending externalities with {} manually injected key-values", self.hashed_key_values.len() ); - ext.batch_insert(self.hashed_key_values.into_iter().map(|(k, v)| (k.0, v.0))); + + self.hashed_key_values.into_iter().for_each(|(k, v)| { + ext_overlay.set_storage(k.0, Some(v.0)); + }); } // exclude manual key values. From c0e5fbab9140ba9aa86fcac6919f8af3643cf35e Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Tue, 2 May 2023 16:05:21 +0400 Subject: [PATCH 10/19] Revert "Revert "Revert "use overlayedchanges""" This reverts commit 06df786488d94f249e9abccffac4af445f76e5a7. --- .../src/overlayed_changes/mod.rs | 2 +- primitives/state-machine/src/testing.rs | 7 +-- utils/frame/remote-externalities/Cargo.toml | 1 - utils/frame/remote-externalities/src/lib.rs | 52 ++++++++----------- 4 files changed, 24 insertions(+), 38 deletions(-) diff --git a/primitives/state-machine/src/overlayed_changes/mod.rs b/primitives/state-machine/src/overlayed_changes/mod.rs index 8d54262e27539..b32df635b177c 100644 --- a/primitives/state-machine/src/overlayed_changes/mod.rs +++ b/primitives/state-machine/src/overlayed_changes/mod.rs @@ -276,7 +276,7 @@ impl OverlayedChanges { /// `None` can be used to delete a value specified by the given key. /// /// Can be rolled back or committed when called inside a transaction. - pub fn set_child_storage( + pub(crate) fn set_child_storage( &mut self, child_info: &ChildInfo, key: StorageKey, diff --git a/primitives/state-machine/src/testing.rs b/primitives/state-machine/src/testing.rs index 873b7cf01e784..1921287a64745 100644 --- a/primitives/state-machine/src/testing.rs +++ b/primitives/state-machine/src/testing.rs @@ -117,12 +117,7 @@ where } } - /// Returns a mutable reference to the overlayed changes. - pub fn overlayed_changes_mut(&mut self) -> &mut OverlayedChanges { - &mut self.overlay - } - - /// Returns an immutable reference to the overlayed changes. + /// Returns the overlayed changes. pub fn overlayed_changes(&self) -> &OverlayedChanges { &self.overlay } diff --git a/utils/frame/remote-externalities/Cargo.toml b/utils/frame/remote-externalities/Cargo.toml index c16e553ece8a9..21b652014f66e 100644 --- a/utils/frame/remote-externalities/Cargo.toml +++ b/utils/frame/remote-externalities/Cargo.toml @@ -17,7 +17,6 @@ codec = { package = "parity-scale-codec", version = "3.2.2" } log = "0.4.17" serde = "1.0.136" frame-support = { version = "4.0.0-dev", optional = true, path = "../../../frame/support" } -sp-state-machine = { version = "0.13.0", path = "../../../primitives/state-machine" } sp-core = { version = "7.0.0", path = "../../../primitives/core" } sp-io = { version = "7.0.0", path = "../../../primitives/io" } sp-runtime = { version = "7.0.0", path = "../../../primitives/runtime" } diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index c6010bb7feee2..3358a7697c48f 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -39,7 +39,6 @@ use sp_core::{ }; pub use sp_io::TestExternalities; use sp_runtime::{traits::Block as BlockT, StateVersion}; -use sp_state_machine::OverlayedChanges; use spinners::{Spinner, Spinners}; use std::{ cmp::max, @@ -521,7 +520,7 @@ where &self, prefix: StorageKey, at: B::Hash, - ext_overlay: &mut OverlayedChanges, + pending_ext: &mut TestExternalities, ) -> Result, &'static str> { let start = Instant::now(); let mut sp = Spinner::with_timer(Spinners::Dots, "Scraping keys...".into()); @@ -547,7 +546,7 @@ where .collect::>(); let bar = ProgressBar::new(payloads.len() as u64); - let bar_message = "Downloading key values".to_string(); + let bar_message = format!("Downloading key values"); bar.set_message(bar_message); bar.set_style( ProgressStyle::with_template( @@ -597,9 +596,7 @@ where let mut sp = Spinner::with_timer(Spinners::Dots, "Inserting keys into DB...".into()); let start = Instant::now(); - key_values.clone().into_iter().for_each(|(k, v)| { - ext_overlay.set_storage(k.0, Some(v.0)); - }); + pending_ext.batch_insert(key_values.clone().into_iter().map(|(k, v)| (k.0, v.0))); sp.stop_with_message(format!("✅ Inserted keys into DB ({}s)", start.elapsed().as_secs())); Ok(key_values) } @@ -706,7 +703,7 @@ where async fn load_child_remote( &self, top_kv: &[KeyValue], - ext_overlay: &mut OverlayedChanges, + pending_ext: &mut TestExternalities, ) -> Result { let child_roots = top_kv .into_iter() @@ -750,7 +747,7 @@ where child_kv_inner.iter().cloned().map(|(k, v)| (k.0, v.0)).collect::>(); child_kv.push((info.clone(), child_kv_inner)); for (k, v) in key_values { - ext_overlay.set_child_storage(&info, k, Some(v)); + pending_ext.insert_child(info.clone(), k, v); } } @@ -759,11 +756,11 @@ where /// Build `Self` from a network node denoted by `uri`. /// - /// This function populates `ext_overlay`. The return value is for optionally writing to a - /// snapshot file. + /// This function concurrently populates `pending_ext`. the return value is only for writing to + /// cache, we can also optimize further. async fn load_top_remote( &self, - ext_overlay: &mut OverlayedChanges, + pending_ext: &mut TestExternalities, ) -> Result { let config = self.as_online(); let at = self @@ -776,7 +773,7 @@ where for prefix in &config.hashed_prefixes { let now = std::time::Instant::now(); let additional_key_values = - self.rpc_get_pairs_paged(StorageKey(prefix.to_vec()), at, ext_overlay).await?; + self.rpc_get_pairs_paged(StorageKey(prefix.to_vec()), at, pending_ext).await?; let elapsed = now.elapsed(); log::info!( target: LOG_TARGET, @@ -796,7 +793,7 @@ where ); match self.rpc_get_storage(key.clone(), Some(at)).await? { Some(value) => { - ext_overlay.set_storage(key.clone().0, Some(value.clone().0)); + pending_ext.insert(key.clone().0, value.clone().0); keys_and_values.push((key, value)); }, None => { @@ -877,10 +874,8 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); - let top_kv = self.load_top_remote(&mut pending_ext.overlayed_changes_mut()).await?; - let child_kv = self - .load_child_remote(&top_kv, &mut pending_ext.overlayed_changes_mut()) - .await?; + let top_kv = self.load_top_remote(&mut pending_ext).await?; + let child_kv = self.load_child_remote(&top_kv, &mut pending_ext).await?; if let Some(path) = self.as_online().state_snapshot.clone().map(|c| c.path) { let snapshot = Snapshot:: { @@ -930,23 +925,24 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); - let ext_overlay = inner_ext.overlayed_changes_mut(); - info!(target: LOG_TARGET, "injecting {} top keys", top.len()); - top.into_iter() + info!(target: LOG_TARGET, "injecting a total of {} top keys", top.len()); + let top = top + .into_iter() .filter(|(k, _)| !is_default_child_storage_key(k.as_ref())) - .for_each(|(k, v)| { - ext_overlay.set_storage(k.0, Some(v.0)); - }); + .map(|(k, v)| (k.0, v.0)) + .collect::>(); + inner_ext.batch_insert(top); info!( target: LOG_TARGET, - "injecting {} child keys", + "injecting a total of {} child keys", child.iter().flat_map(|(_, kv)| kv).count() ); + for (info, key_values) in child { for (k, v) in key_values { - ext_overlay.set_child_storage(&info.clone(), k.0, Some(v.0)); + inner_ext.insert_child(info.clone(), k.0, v.0); } } @@ -964,7 +960,6 @@ where } }, }; - let ext_overlay = ext.inner_ext.overlayed_changes_mut(); // inject manual key values. if !self.hashed_key_values.is_empty() { @@ -973,10 +968,7 @@ where "extending externalities with {} manually injected key-values", self.hashed_key_values.len() ); - - self.hashed_key_values.into_iter().for_each(|(k, v)| { - ext_overlay.set_storage(k.0, Some(v.0)); - }); + ext.batch_insert(self.hashed_key_values.into_iter().map(|(k, v)| (k.0, v.0))); } // exclude manual key values. From 476e7279a6b8b0394af592258b334a5cb31dbaad Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Wed, 3 May 2023 10:43:14 +0400 Subject: [PATCH 11/19] backup/load raw storage values --- primitives/state-machine/src/testing.rs | 34 +++++++++++++++++- primitives/state-machine/src/trie_backend.rs | 10 ++++++ utils/frame/remote-externalities/src/lib.rs | 38 +++++++------------- 3 files changed, 55 insertions(+), 27 deletions(-) diff --git a/primitives/state-machine/src/testing.rs b/primitives/state-machine/src/testing.rs index 1921287a64745..a0bfcf4561f77 100644 --- a/primitives/state-machine/src/testing.rs +++ b/primitives/state-machine/src/testing.rs @@ -27,7 +27,7 @@ use crate::{ StorageTransactionCache, StorageValue, TrieBackendBuilder, }; -use hash_db::Hasher; +use hash_db::{HashDB, Hasher}; use sp_core::{ offchain::testing::TestPersistentOffchainDB, storage::{ @@ -160,6 +160,38 @@ where self.extensions.register(ext); } + /// Sets raw storage key/values and a root. + /// + /// This can be used as a fast way to restore the storage state from a backup because the trie + /// does not need to be computed. + pub fn set_raw_storage_and_root( + &mut self, + raw_storage: Vec<(H::Out, Vec)>, + storage_root: H::Out, + ) { + for (k, v) in raw_storage { + self.backend.backend_storage_mut().emplace(k, hash_db::EMPTY_PREFIX, v); + } + self.backend.set_root(storage_root); + } + + /// Drains the underlying raw storage key/values and returns the root hash. + /// + /// Useful for backing up the storage in a format that can be quickly re-loaded. + /// + /// Note: This DB will be inoperable after this call. + pub fn drain_raw_storage(&mut self) -> (Vec<(H::Out, Vec)>, H::Out) { + let raw_key_values = self + .backend + .backend_storage_mut() + .drain() + .into_iter() + .map(|(k, v)| (k, v.0)) + .collect::)>>(); + + (raw_key_values, self.backend.root().clone()) + } + /// Return a new backend with all pending changes. /// /// In contrast to [`commit_all`](Self::commit_all) this will not panic if there are open diff --git a/primitives/state-machine/src/trie_backend.rs b/primitives/state-machine/src/trie_backend.rs index afbe6cbbea081..abd58b383969a 100644 --- a/primitives/state-machine/src/trie_backend.rs +++ b/primitives/state-machine/src/trie_backend.rs @@ -242,11 +242,21 @@ where &self.essence } + /// Get backend storage reference. + pub fn backend_storage_mut(&mut self) -> &mut S { + self.essence.backend_storage_mut() + } + /// Get backend storage reference. pub fn backend_storage(&self) -> &S { self.essence.backend_storage() } + /// Set trie root. + pub fn set_root(&mut self, root: H::Out) { + self.essence.set_root(root) + } + /// Get trie root. pub fn root(&self) -> &H::Out { self.essence.root() diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index 3358a7697c48f..98ff652716c90 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -36,6 +36,7 @@ use sp_core::{ well_known_keys::{is_default_child_storage_key, DEFAULT_CHILD_STORAGE_KEY_PREFIX}, ChildInfo, ChildType, PrefixedStorageKey, StorageData, StorageKey, }, + H256, }; pub use sp_io::TestExternalities; use sp_runtime::{traits::Block as BlockT, StateVersion}; @@ -60,8 +61,8 @@ const DEFAULT_HTTP_ENDPOINT: &str = "https://rpc.polkadot.io:443"; struct Snapshot { state_version: StateVersion, block_hash: B::Hash, - top: TopKeyValues, - child: ChildKeyValues, + db: Vec<(H256, Vec)>, + storage_root: H256, } /// An externalities that acts exactly the same as [`sp_io::TestExternalities`] but has a few extra @@ -874,18 +875,22 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); + + // Load data from the remote into `pending_ext`. let top_kv = self.load_top_remote(&mut pending_ext).await?; - let child_kv = self.load_child_remote(&top_kv, &mut pending_ext).await?; + self.load_child_remote(&top_kv, &mut pending_ext).await?; + // If we need to save a snapshot, save the raw storage and root hash to the snapshot. if let Some(path) = self.as_online().state_snapshot.clone().map(|c| c.path) { + let (raw_storage, storage_root) = pending_ext.drain_raw_storage(); let snapshot = Snapshot:: { state_version, - top: top_kv, - child: child_kv, block_hash: self .as_online() .at .expect("set to `Some` in `init_remote_client`; must be called before; qed"), + db: raw_storage, + storage_root, }; let encoded = snapshot.encode(); log::info!( @@ -917,7 +922,7 @@ where &mut self, config: OfflineConfig, ) -> Result, &'static str> { - let Snapshot { block_hash, top, child, state_version } = + let Snapshot { block_hash, state_version, db, storage_root } = self.load_snapshot(config.state_snapshot.path.clone())?; let mut inner_ext = TestExternalities::new_with_code_and_state( @@ -925,26 +930,7 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); - - info!(target: LOG_TARGET, "injecting a total of {} top keys", top.len()); - let top = top - .into_iter() - .filter(|(k, _)| !is_default_child_storage_key(k.as_ref())) - .map(|(k, v)| (k.0, v.0)) - .collect::>(); - inner_ext.batch_insert(top); - - info!( - target: LOG_TARGET, - "injecting a total of {} child keys", - child.iter().flat_map(|(_, kv)| kv).count() - ); - - for (info, key_values) in child { - for (k, v) in key_values { - inner_ext.insert_child(info.clone(), k.0, v.0); - } - } + inner_ext.set_raw_storage_and_root(db, storage_root); Ok(RemoteExternalities { inner_ext, block_hash }) } From c4ba497aff8b6da87d4a03420f6a10dcab4526ed Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Wed, 3 May 2023 11:37:09 +0400 Subject: [PATCH 12/19] test raw storage drain and restore --- primitives/state-machine/src/testing.rs | 39 +++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/primitives/state-machine/src/testing.rs b/primitives/state-machine/src/testing.rs index a0bfcf4561f77..a3b59d985eaa5 100644 --- a/primitives/state-machine/src/testing.rs +++ b/primitives/state-machine/src/testing.rs @@ -394,6 +394,45 @@ mod tests { assert_eq!(H256::from_slice(ext.storage_root(Default::default()).as_slice()), root); } + #[test] + fn raw_storage_drain_and_restore() { + // Create a TestExternalities with some data in it. + let mut original_ext = + TestExternalities::::from((Default::default(), Default::default())); + original_ext.insert(b"doe".to_vec(), b"reindeer".to_vec()); + original_ext.insert(b"dog".to_vec(), b"puppy".to_vec()); + original_ext.insert(b"dogglesworth".to_vec(), b"cat".to_vec()); + let child_info = ChildInfo::new_default(&b"test_child"[..]); + original_ext.insert_child(child_info.clone(), b"cattytown".to_vec(), b"is_dark".to_vec()); + original_ext.insert_child(child_info.clone(), b"doggytown".to_vec(), b"is_sunny".to_vec()); + + // Drain the raw storage and root. + let (raw_storage, storage_root) = original_ext.drain_raw_storage(); + + // Load the raw storage and root into a new TestExternalities. + let mut recovered_ext = + TestExternalities::::from((Default::default(), Default::default())); + recovered_ext.set_raw_storage_and_root(raw_storage, storage_root); + + // Check the storage root is the same as the original + assert_eq!(original_ext.backend.root(), recovered_ext.backend.root()); + + // Check the original storage key/values were recovered correctly + assert_eq!(recovered_ext.backend.storage(b"doe").unwrap(), Some(b"reindeer".to_vec())); + assert_eq!(recovered_ext.backend.storage(b"dog").unwrap(), Some(b"puppy".to_vec())); + assert_eq!(recovered_ext.backend.storage(b"dogglesworth").unwrap(), Some(b"cat".to_vec())); + + // Check the original child storage key/values were recovered correctly + assert_eq!( + recovered_ext.backend.child_storage(&child_info, b"cattytown").unwrap(), + Some(b"is_dark".to_vec()) + ); + assert_eq!( + recovered_ext.backend.child_storage(&child_info, b"doggytown").unwrap(), + Some(b"is_sunny".to_vec()) + ); + } + #[test] fn set_and_retrieve_code() { let mut ext = TestExternalities::::default(); From 9bd60e5348072f014ecc543fa5c19c5f9ec410ef Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Wed, 3 May 2023 11:37:34 +0400 Subject: [PATCH 13/19] update snapshot tests --- utils/frame/remote-externalities/src/lib.rs | 32 +++++++++--------- .../remote-externalities/test_data/proxy_test | Bin 70206 -> 183839 bytes 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index 98ff652716c90..eb0ab59daec14 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -61,7 +61,7 @@ const DEFAULT_HTTP_ENDPOINT: &str = "https://rpc.polkadot.io:443"; struct Snapshot { state_version: StateVersion, block_hash: B::Hash, - db: Vec<(H256, Vec)>, + raw_storage: Vec<(H256, Vec)>, storage_root: H256, } @@ -889,7 +889,7 @@ where .as_online() .at .expect("set to `Some` in `init_remote_client`; must be called before; qed"), - db: raw_storage, + raw_storage, storage_root, }; let encoded = snapshot.encode(); @@ -922,7 +922,7 @@ where &mut self, config: OfflineConfig, ) -> Result, &'static str> { - let Snapshot { block_hash, state_version, db, storage_root } = + let Snapshot { block_hash, state_version, raw_storage, storage_root } = self.load_snapshot(config.state_snapshot.path.clone())?; let mut inner_ext = TestExternalities::new_with_code_and_state( @@ -930,7 +930,7 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); - inner_ext.set_raw_storage_and_root(db, storage_root); + inner_ext.set_raw_storage_and_root(raw_storage, storage_root); Ok(RemoteExternalities { inner_ext, block_hash }) } @@ -1046,7 +1046,7 @@ mod test_prelude { mod tests { use super::test_prelude::*; - #[tokio::test(flavor = "multi_thread")] + #[tokio::test] async fn can_load_state_snapshot() { init_logger(); Builder::::new() @@ -1059,7 +1059,7 @@ mod tests { .execute_with(|| {}); } - #[tokio::test(flavor = "multi_thread")] + #[tokio::test] async fn can_exclude_from_snapshot() { init_logger(); @@ -1095,7 +1095,7 @@ mod remote_tests { use super::test_prelude::*; use std::os::unix::fs::MetadataExt; - #[tokio::test(flavor = "multi_thread")] + #[tokio::test] async fn state_version_is_kept_and_can_be_altered() { const CACHE: &'static str = "state_version_is_kept_and_can_be_altered"; init_logger(); @@ -1136,7 +1136,7 @@ mod remote_tests { assert_eq!(cached_ext.state_version, other); } - #[tokio::test(flavor = "multi_thread")] + #[tokio::test] async fn snapshot_block_hash_works() { const CACHE: &'static str = "snapshot_block_hash_works"; init_logger(); @@ -1163,7 +1163,7 @@ mod remote_tests { assert_eq!(ext.block_hash, cached_ext.block_hash); } - #[tokio::test(flavor = "multi_thread")] + #[tokio::test] async fn offline_else_online_works() { const CACHE: &'static str = "offline_else_online_works_data"; init_logger(); @@ -1208,7 +1208,7 @@ mod remote_tests { std::fs::remove_file(to_delete[0].path()).unwrap(); } - #[tokio::test(flavor = "multi_thread")] + #[tokio::test] async fn can_build_one_small_pallet() { init_logger(); Builder::::new() @@ -1223,7 +1223,7 @@ mod remote_tests { .execute_with(|| {}); } - #[tokio::test(flavor = "multi_thread")] + #[tokio::test] async fn can_build_few_pallet() { init_logger(); Builder::::new() @@ -1263,7 +1263,7 @@ mod remote_tests { .collect::>(); let snap: Snapshot = Builder::::new().load_snapshot(CACHE.into()).unwrap(); - assert!(matches!(snap, Snapshot { top, child, .. } if top.len() > 0 && child.len() == 0)); + assert!(matches!(snap, Snapshot { raw_storage, .. } if raw_storage.len() > 0)); assert!(to_delete.len() == 1); let to_delete = to_delete.first().unwrap(); @@ -1271,7 +1271,7 @@ mod remote_tests { std::fs::remove_file(to_delete.path()).unwrap(); } - #[tokio::test(flavor = "multi_thread")] + #[tokio::test] async fn can_create_child_snapshot() { const CACHE: &'static str = "can_create_child_snapshot"; init_logger(); @@ -1295,7 +1295,7 @@ mod remote_tests { .collect::>(); let snap: Snapshot = Builder::::new().load_snapshot(CACHE.into()).unwrap(); - assert!(matches!(snap, Snapshot { top, child, .. } if top.len() > 0 && child.len() > 0)); + assert!(matches!(snap, Snapshot { raw_storage, .. } if raw_storage.len() > 0)); assert!(to_delete.len() == 1); let to_delete = to_delete.first().unwrap(); @@ -1303,7 +1303,7 @@ mod remote_tests { std::fs::remove_file(to_delete.path()).unwrap(); } - #[tokio::test(flavor = "multi_thread")] + #[tokio::test] async fn can_build_big_pallet() { if std::option_env!("TEST_WS").is_none() { return @@ -1322,7 +1322,7 @@ mod remote_tests { .execute_with(|| {}); } - #[tokio::test(flavor = "multi_thread")] + #[tokio::test] async fn can_fetch_all() { if std::option_env!("TEST_WS").is_none() { return diff --git a/utils/frame/remote-externalities/test_data/proxy_test b/utils/frame/remote-externalities/test_data/proxy_test index 6673bd6765ad8df2a9e74f210d8795acfeb54a30..f749531a8a9d767b14e1869bbfa16c390cacfa68 100644 GIT binary patch literal 183839 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�rgqyB12J)SC29x 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π-drTw$itePL8?O_e4^(}1AC4qhq7AL$G)=h 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≪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

44PKZDy21+0e#13*J^7a~5(h|1LMC;b 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≤2SZcdgm^Le@~{46&tnSsR`!esmpmh2!ixJ3 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%0AS)>pp5TfMYWy z+t$~xP!lEAins;Ej{XdUctEYt>UvIx?gHZpbc@Kexuhv%ufM`qNoQ*YhQq=^9$r^% zzru?N8h>wQOTU9ardv>rn@~UH*F?}%(z^(ajeU!JyDueJz4vjrLY(ZZ(cyNbfR(?a zGBG{8(aL%~>oD}2_ssf$pt<`W1dox_H))v7ptBCl5&H|d*7w|M&~|q?fNYkuB!s<( zzG&9%N6z|3lui6TFvX85P}cY{!$__Jjsr4Lw!-oh5=Dg>gnPgi+A812UM5;|FmD5h zqwo!ARSYKXFM6JxC|O)PO;{|)d<+qu%swwGFF7(MP+$+9yjdXbJP&x^p^gb@+1ig$ z^)av7DVnFK*un>*m~!mydU(;i*m*T~B?H)bkpqY2!isIy7`U*pFLWw~&}Aq_8ggvz zLTWwbJ?3%X6@3j>I;?5${(X~bCo0x3FfB#{iein(U?k>v)r3y!l4tXCXqXh zp{b@3&sB3!!Eb#O∓|K{_GMY7wcZ&NYN@E4saWZ_3#3kfmv!*p#Gsxf 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 JWU_6^b^so%Zm|FW literal 70206 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 V3ArEafJTFa^6EoE{wI_h?O!-)7>WP@ From d10507e7b4171bdd95e1a18af303d9b45df8d8ff Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Wed, 3 May 2023 11:47:09 +0400 Subject: [PATCH 14/19] improve logs --- utils/frame/remote-externalities/src/lib.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index eb0ab59daec14..8b98300bd6491 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -532,9 +532,9 @@ where .filter(|k| !is_default_child_storage_key(&k.0)) .collect::>(); sp.stop_with_message(format!( - "✅ Found {} keys ({}s)", + "✅ Found {} keys ({:.2}s)", keys.len(), - start.elapsed().as_secs() + start.elapsed().as_secs_f32() )); if keys.is_empty() { return Ok(Default::default()) @@ -598,7 +598,10 @@ where let mut sp = Spinner::with_timer(Spinners::Dots, "Inserting keys into DB...".into()); let start = Instant::now(); pending_ext.batch_insert(key_values.clone().into_iter().map(|(k, v)| (k.0, v.0))); - sp.stop_with_message(format!("✅ Inserted keys into DB ({}s)", start.elapsed().as_secs())); + sp.stop_with_message(format!( + "✅ Inserted keys into DB ({:.2}s)", + start.elapsed().as_secs_f32() + )); Ok(key_values) } @@ -778,9 +781,9 @@ where let elapsed = now.elapsed(); log::info!( target: LOG_TARGET, - "adding data for hashed prefix: {:?}, took {:?}s", + "adding data for hashed prefix: {:?}, took {:.2}s", HexDisplay::from(prefix), - elapsed.as_secs() + elapsed.as_secs_f32() ); keys_and_values.extend(additional_key_values); } @@ -922,6 +925,8 @@ where &mut self, config: OfflineConfig, ) -> Result, &'static str> { + let mut sp = Spinner::with_timer(Spinners::Dots, "Loading snapshot...".into()); + let start = Instant::now(); let Snapshot { block_hash, state_version, raw_storage, storage_root } = self.load_snapshot(config.state_snapshot.path.clone())?; @@ -931,6 +936,7 @@ where self.overwrite_state_version.unwrap_or(state_version), ); inner_ext.set_raw_storage_and_root(raw_storage, storage_root); + sp.stop_with_message(format!("✅ Loaded snapshot ({:.2}s)", start.elapsed().as_secs_f32())); Ok(RemoteExternalities { inner_ext, block_hash }) } From 736363f7672477414d9fef7c804ee45aa8b1b34b Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Wed, 3 May 2023 13:38:27 +0400 Subject: [PATCH 15/19] clippy suggestions --- primitives/state-machine/src/testing.rs | 2 +- utils/frame/remote-externalities/src/lib.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/primitives/state-machine/src/testing.rs b/primitives/state-machine/src/testing.rs index a3b59d985eaa5..954c79270d7c9 100644 --- a/primitives/state-machine/src/testing.rs +++ b/primitives/state-machine/src/testing.rs @@ -189,7 +189,7 @@ where .map(|(k, v)| (k, v.0)) .collect::)>>(); - (raw_key_values, self.backend.root().clone()) + (raw_key_values, *self.backend.root()) } /// Return a new backend with all pending changes. diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index 8b98300bd6491..1c7f88061900c 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -547,7 +547,7 @@ where .collect::>(); let bar = ProgressBar::new(payloads.len() as u64); - let bar_message = format!("Downloading key values"); + let bar_message = "Downloading key values".to_string(); bar.set_message(bar_message); bar.set_style( ProgressStyle::with_template( From 27b50289220229098087f160fbf7de62449ab391 Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Thu, 4 May 2023 19:09:02 +0400 Subject: [PATCH 16/19] address comments --- primitives/state-machine/src/testing.rs | 12 ++++------- utils/frame/remote-externalities/src/lib.rs | 23 ++++++++++++++------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/primitives/state-machine/src/testing.rs b/primitives/state-machine/src/testing.rs index 954c79270d7c9..c9d04b3c165d4 100644 --- a/primitives/state-machine/src/testing.rs +++ b/primitives/state-machine/src/testing.rs @@ -164,11 +164,7 @@ where /// /// This can be used as a fast way to restore the storage state from a backup because the trie /// does not need to be computed. - pub fn set_raw_storage_and_root( - &mut self, - raw_storage: Vec<(H::Out, Vec)>, - storage_root: H::Out, - ) { + pub fn from_raw_snapshot(&mut self, raw_storage: Vec<(H::Out, Vec)>, storage_root: H::Out) { for (k, v) in raw_storage { self.backend.backend_storage_mut().emplace(k, hash_db::EMPTY_PREFIX, v); } @@ -180,7 +176,7 @@ where /// Useful for backing up the storage in a format that can be quickly re-loaded. /// /// Note: This DB will be inoperable after this call. - pub fn drain_raw_storage(&mut self) -> (Vec<(H::Out, Vec)>, H::Out) { + pub fn into_raw_snapshot(mut self) -> (Vec<(H::Out, Vec)>, H::Out) { let raw_key_values = self .backend .backend_storage_mut() @@ -407,12 +403,12 @@ mod tests { original_ext.insert_child(child_info.clone(), b"doggytown".to_vec(), b"is_sunny".to_vec()); // Drain the raw storage and root. - let (raw_storage, storage_root) = original_ext.drain_raw_storage(); + let (raw_storage, storage_root) = original_ext.into_raw_snapshot(); // Load the raw storage and root into a new TestExternalities. let mut recovered_ext = TestExternalities::::from((Default::default(), Default::default())); - recovered_ext.set_raw_storage_and_root(raw_storage, storage_root); + recovered_ext.from_raw_snapshot(raw_storage, storage_root); // Check the storage root is the same as the original assert_eq!(original_ext.backend.root(), recovered_ext.backend.root()); diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index 1c7f88061900c..ae221bd0972ca 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -46,7 +46,7 @@ use std::{ fs, ops::{Deref, DerefMut}, path::{Path, PathBuf}, - time::Instant, + time::{Duration, Instant}, }; use substrate_rpc_client::{rpc_params, BatchRequestBuilder, ChainApi, ClientT, StateApi}; @@ -547,11 +547,11 @@ where .collect::>(); let bar = ProgressBar::new(payloads.len() as u64); - let bar_message = "Downloading key values".to_string(); - bar.set_message(bar_message); + bar.enable_steady_tick(Duration::from_secs(1)); + bar.set_message("Downloading key values".to_string()); bar.set_style( ProgressStyle::with_template( - "[{elapsed_precise}] {msg} [{wide_bar}] {pos}/{len} ({eta})", + "[{elapsed_precise}] {msg} {per_sec} [{wide_bar}] {pos}/{len} ({eta})", ) .unwrap() .progress_chars("=>-"), @@ -885,14 +885,14 @@ where // If we need to save a snapshot, save the raw storage and root hash to the snapshot. if let Some(path) = self.as_online().state_snapshot.clone().map(|c| c.path) { - let (raw_storage, storage_root) = pending_ext.drain_raw_storage(); + let (raw_storage, storage_root) = pending_ext.into_raw_snapshot(); let snapshot = Snapshot:: { state_version, block_hash: self .as_online() .at .expect("set to `Some` in `init_remote_client`; must be called before; qed"), - raw_storage, + raw_storage: raw_storage.clone(), storage_root, }; let encoded = snapshot.encode(); @@ -903,6 +903,15 @@ where path ); std::fs::write(path, encoded).map_err(|_| "fs::write failed")?; + + // pending_ext was consumed when creating the snapshot, need to reinitailize it + let mut pending_ext = TestExternalities::new_with_code_and_state( + Default::default(), + Default::default(), + self.overwrite_state_version.unwrap_or(state_version), + ); + pending_ext.from_raw_snapshot(raw_storage, storage_root); + return Ok(pending_ext) } Ok(pending_ext) @@ -935,7 +944,7 @@ where Default::default(), self.overwrite_state_version.unwrap_or(state_version), ); - inner_ext.set_raw_storage_and_root(raw_storage, storage_root); + inner_ext.from_raw_snapshot(raw_storage, storage_root); sp.stop_with_message(format!("✅ Loaded snapshot ({:.2}s)", start.elapsed().as_secs_f32())); Ok(RemoteExternalities { inner_ext, block_hash }) From aefb9d2971a56bd549ceea89e903e78137c6753f Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Thu, 4 May 2023 19:26:09 +0400 Subject: [PATCH 17/19] fix example --- utils/frame/remote-externalities/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/frame/remote-externalities/src/lib.rs b/utils/frame/remote-externalities/src/lib.rs index ae221bd0972ca..01c673884765d 100644 --- a/utils/frame/remote-externalities/src/lib.rs +++ b/utils/frame/remote-externalities/src/lib.rs @@ -423,7 +423,7 @@ where /// use std::sync::Arc; /// /// async fn example() { - /// let client = Arc::new(HttpClient::new()); + /// let client = HttpClient::new(); /// let payloads = vec![ /// ("some_method".to_string(), ArrayParams::new(vec![])), /// ("another_method".to_string(), ArrayParams::new(vec![])), From 121de0a3d42a9fde04a68c1411e3604155a52a4a Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Thu, 4 May 2023 20:19:18 +0400 Subject: [PATCH 18/19] fix test --- primitives/state-machine/src/testing.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/primitives/state-machine/src/testing.rs b/primitives/state-machine/src/testing.rs index c9d04b3c165d4..d493c38b5d14c 100644 --- a/primitives/state-machine/src/testing.rs +++ b/primitives/state-machine/src/testing.rs @@ -403,6 +403,7 @@ mod tests { original_ext.insert_child(child_info.clone(), b"doggytown".to_vec(), b"is_sunny".to_vec()); // Drain the raw storage and root. + let root = original_ext.backend.root().clone(); let (raw_storage, storage_root) = original_ext.into_raw_snapshot(); // Load the raw storage and root into a new TestExternalities. @@ -411,7 +412,7 @@ mod tests { recovered_ext.from_raw_snapshot(raw_storage, storage_root); // Check the storage root is the same as the original - assert_eq!(original_ext.backend.root(), recovered_ext.backend.root()); + assert_eq!(root, *recovered_ext.backend.root()); // Check the original storage key/values were recovered correctly assert_eq!(recovered_ext.backend.storage(b"doe").unwrap(), Some(b"reindeer".to_vec())); From caa8d87b91df10d1fb10e3b76bb4cbeb1c9675ac Mon Sep 17 00:00:00 2001 From: Liam Aharon Date: Fri, 5 May 2023 10:49:27 +0400 Subject: [PATCH 19/19] clippy --- primitives/state-machine/src/testing.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/primitives/state-machine/src/testing.rs b/primitives/state-machine/src/testing.rs index d493c38b5d14c..78fec43cd7ec7 100644 --- a/primitives/state-machine/src/testing.rs +++ b/primitives/state-machine/src/testing.rs @@ -403,7 +403,7 @@ mod tests { original_ext.insert_child(child_info.clone(), b"doggytown".to_vec(), b"is_sunny".to_vec()); // Drain the raw storage and root. - let root = original_ext.backend.root().clone(); + let root = *original_ext.backend.root(); let (raw_storage, storage_root) = original_ext.into_raw_snapshot(); // Load the raw storage and root into a new TestExternalities.