mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-11 22:21:07 +00:00
refactor(sc-executor): use wasm executor builder instead of old apis (#13740)
* refactor: use builder api for all executors * improve a lot * remove unused args * cleanup deps * fix inconsistency about heap alloc * add `heap_pages` back to try-runtime * fix * chore: reduce duplicated code for sc-service-test * cleanup code * fmt * improve test executor * improve * use #[deprecated] * set runtime_cache_size: 4 * fix and improve * refactor builder * fix * fix bench * fix tests * fix warnings * fix warnings * fix * fix * update by suggestions * update name
This commit is contained in:
@@ -27,7 +27,7 @@ use sc_client_api::execution_extensions::ExecutionStrategies;
|
||||
use sc_service::{
|
||||
config::{
|
||||
BlocksPruning, DatabaseSource, KeystoreConfig, NetworkConfiguration, OffchainWorkerConfig,
|
||||
PruningMode, TransactionPoolOptions, WasmExecutionMethod,
|
||||
PruningMode, TransactionPoolOptions,
|
||||
},
|
||||
BasePath, Configuration, Role,
|
||||
};
|
||||
@@ -69,7 +69,7 @@ fn new_node(tokio_handle: Handle) -> node_cli::service::NewFullBase {
|
||||
state_pruning: Some(PruningMode::ArchiveAll),
|
||||
blocks_pruning: BlocksPruning::KeepAll,
|
||||
chain_spec: spec,
|
||||
wasm_method: WasmExecutionMethod::Interpreted,
|
||||
wasm_method: Default::default(),
|
||||
// NOTE: we enforce the use of the native runtime to make the errors more debuggable
|
||||
execution_strategies: ExecutionStrategies {
|
||||
syncing: sc_client_api::ExecutionStrategy::NativeWhenPossible,
|
||||
|
||||
@@ -163,12 +163,7 @@ pub fn new_partial(
|
||||
})
|
||||
.transpose()?;
|
||||
|
||||
let executor = NativeElseWasmExecutor::<ExecutorDispatch>::new(
|
||||
config.wasm_method,
|
||||
config.default_heap_pages,
|
||||
config.max_runtime_instances,
|
||||
config.runtime_cache_size,
|
||||
);
|
||||
let executor = sc_service::new_native_or_wasm_executor(&config);
|
||||
|
||||
let (client, backend, keystore_container, task_manager) =
|
||||
sc_service::new_full_parts::<Block, RuntimeApi, _>(
|
||||
|
||||
@@ -26,7 +26,7 @@ use node_executor::ExecutorDispatch;
|
||||
use node_primitives::{BlockNumber, Hash};
|
||||
use node_testing::keyring::*;
|
||||
use sc_executor::{
|
||||
Externalities, NativeElseWasmExecutor, RuntimeVersionOf, WasmExecutionMethod,
|
||||
Externalities, NativeElseWasmExecutor, RuntimeVersionOf, WasmExecutionMethod, WasmExecutor,
|
||||
WasmtimeInstantiationStrategy,
|
||||
};
|
||||
use sp_core::{
|
||||
@@ -191,12 +191,13 @@ fn bench_execute_block(c: &mut Criterion) {
|
||||
for strategy in execution_methods {
|
||||
group.bench_function(format!("{:?}", strategy), |b| {
|
||||
let genesis_config = node_testing::genesis::config(Some(compact_code_unwrap()));
|
||||
let (use_native, wasm_method) = match strategy {
|
||||
ExecutionMethod::Native => (true, WasmExecutionMethod::Interpreted),
|
||||
ExecutionMethod::Wasm(wasm_method) => (false, wasm_method),
|
||||
let use_native = match strategy {
|
||||
ExecutionMethod::Native => true,
|
||||
ExecutionMethod::Wasm(..) => false,
|
||||
};
|
||||
|
||||
let executor = NativeElseWasmExecutor::new(wasm_method, None, 8, 2);
|
||||
let executor =
|
||||
NativeElseWasmExecutor::new_with_wasm_executor(WasmExecutor::builder().build());
|
||||
let runtime_code = RuntimeCode {
|
||||
code_fetcher: &sp_core::traits::WrappedRuntimeCode(compact_code_unwrap().into()),
|
||||
hash: vec![1, 2, 3],
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
use codec::{Decode, Encode};
|
||||
use frame_support::Hashable;
|
||||
use frame_system::offchain::AppCrypto;
|
||||
use sc_executor::{error::Result, NativeElseWasmExecutor, WasmExecutionMethod};
|
||||
use sc_executor::{error::Result, NativeElseWasmExecutor, WasmExecutor};
|
||||
use sp_consensus_babe::{
|
||||
digests::{PreDigest, SecondaryPlainPreDigest},
|
||||
Slot, BABE_ENGINE_ID,
|
||||
@@ -98,7 +98,7 @@ pub fn from_block_number(n: u32) -> Header {
|
||||
}
|
||||
|
||||
pub fn executor() -> NativeElseWasmExecutor<ExecutorDispatch> {
|
||||
NativeElseWasmExecutor::new(WasmExecutionMethod::Interpreted, None, 8, 2)
|
||||
NativeElseWasmExecutor::new_with_wasm_executor(WasmExecutor::builder().build())
|
||||
}
|
||||
|
||||
pub fn executor_call(
|
||||
|
||||
@@ -23,41 +23,34 @@ use crate::{
|
||||
Inspector,
|
||||
};
|
||||
use sc_cli::{CliConfiguration, ImportParams, Result, SharedParams};
|
||||
use sc_executor::NativeElseWasmExecutor;
|
||||
use sc_service::{new_full_client, Configuration, NativeExecutionDispatch};
|
||||
use sc_service::{Configuration, NativeExecutionDispatch};
|
||||
use sp_runtime::traits::Block;
|
||||
use std::str::FromStr;
|
||||
|
||||
impl InspectCmd {
|
||||
/// Run the inspect command, passing the inspector.
|
||||
pub fn run<B, RA, EX>(&self, config: Configuration) -> Result<()>
|
||||
pub fn run<B, RA, D>(&self, config: Configuration) -> Result<()>
|
||||
where
|
||||
B: Block,
|
||||
B::Hash: FromStr,
|
||||
RA: Send + Sync + 'static,
|
||||
EX: NativeExecutionDispatch + 'static,
|
||||
D: NativeExecutionDispatch + 'static,
|
||||
{
|
||||
let executor = NativeElseWasmExecutor::<EX>::new(
|
||||
config.wasm_method,
|
||||
config.default_heap_pages,
|
||||
config.max_runtime_instances,
|
||||
config.runtime_cache_size,
|
||||
);
|
||||
|
||||
let client = new_full_client::<B, RA, _>(&config, None, executor)?;
|
||||
let executor = sc_service::new_native_or_wasm_executor::<D>(&config);
|
||||
let client = sc_service::new_full_client::<B, RA, _>(&config, None, executor)?;
|
||||
let inspect = Inspector::<B>::new(client);
|
||||
|
||||
match &self.command {
|
||||
InspectSubCmd::Block { input } => {
|
||||
let input = input.parse()?;
|
||||
let res = inspect.block(input).map_err(|e| format!("{}", e))?;
|
||||
println!("{}", res);
|
||||
let res = inspect.block(input).map_err(|e| e.to_string())?;
|
||||
println!("{res}");
|
||||
Ok(())
|
||||
},
|
||||
InspectSubCmd::Extrinsic { input } => {
|
||||
let input = input.parse()?;
|
||||
let res = inspect.extrinsic(input).map_err(|e| format!("{}", e))?;
|
||||
println!("{}", res);
|
||||
let res = inspect.extrinsic(input).map_err(|e| e.to_string())?;
|
||||
println!("{res}");
|
||||
Ok(())
|
||||
},
|
||||
}
|
||||
|
||||
@@ -392,14 +392,14 @@ impl BenchDb {
|
||||
let task_executor = TaskExecutor::new();
|
||||
|
||||
let backend = sc_service::new_db_backend(db_config).expect("Should not fail");
|
||||
let executor = NativeElseWasmExecutor::new(
|
||||
WasmExecutionMethod::Compiled {
|
||||
instantiation_strategy: WasmtimeInstantiationStrategy::PoolingCopyOnWrite,
|
||||
},
|
||||
None,
|
||||
8,
|
||||
2,
|
||||
let executor = NativeElseWasmExecutor::new_with_wasm_executor(
|
||||
sc_executor::WasmExecutor::builder()
|
||||
.with_execution_method(WasmExecutionMethod::Compiled {
|
||||
instantiation_strategy: WasmtimeInstantiationStrategy::PoolingCopyOnWrite,
|
||||
})
|
||||
.build(),
|
||||
);
|
||||
|
||||
let client_config = sc_service::ClientConfig::default();
|
||||
let genesis_block_builder = sc_service::GenesisBlockBuilder::new(
|
||||
&keyring.generate_genesis(),
|
||||
|
||||
Reference in New Issue
Block a user