Skip to content

Commit 6a29d19

Browse files
authored
fix: setup tokio runtime with macro in forest-tool and forest-wallet (#6337)
1 parent a9fee74 commit 6a29d19

File tree

4 files changed

+32
-40
lines changed

4 files changed

+32
-40
lines changed

src/bin/forest-tool.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright 2019-2025 ChainSafe Systems
22
// SPDX-License-Identifier: Apache-2.0, MIT
33

4-
fn main() -> anyhow::Result<()> {
5-
forest::forest_tool_main(std::env::args_os())
4+
#[tokio::main(flavor = "multi_thread")]
5+
async fn main() -> anyhow::Result<()> {
6+
forest::forest_tool_main(std::env::args_os()).await
67
}

src/bin/forest-wallet.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright 2019-2025 ChainSafe Systems
22
// SPDX-License-Identifier: Apache-2.0, MIT
33

4-
fn main() -> anyhow::Result<()> {
5-
forest::forest_wallet_main(std::env::args_os())
4+
#[tokio::main(flavor = "multi_thread")]
5+
async fn main() -> anyhow::Result<()> {
6+
forest::forest_wallet_main(std::env::args_os()).await
67
}

src/tool/main.rs

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use super::subcommands::Subcommand;
88
use crate::cli_shared::logger::setup_minimal_logger;
99
use clap::Parser as _;
1010

11-
pub fn main<ArgT>(args: impl IntoIterator<Item = ArgT>) -> anyhow::Result<()>
11+
pub async fn main<ArgT>(args: impl IntoIterator<Item = ArgT>) -> anyhow::Result<()>
1212
where
1313
ArgT: Into<OsString> + Clone,
1414
{
@@ -18,26 +18,21 @@ where
1818

1919
let client = crate::rpc::Client::default_or_from_env(None)?;
2020

21-
tokio::runtime::Builder::new_multi_thread()
22-
.enable_all()
23-
.build()?
24-
.block_on(async {
25-
// Run command
26-
match cmd {
27-
Subcommand::Backup(cmd) => cmd.run(),
28-
Subcommand::Benchmark(cmd) => cmd.run().await,
29-
Subcommand::StateMigration(cmd) => cmd.run().await,
30-
Subcommand::Snapshot(cmd) => cmd.run().await,
31-
Subcommand::Fetch(cmd) => cmd.run().await,
32-
Subcommand::Archive(cmd) => cmd.run().await,
33-
Subcommand::DB(cmd) => cmd.run().await,
34-
Subcommand::Index(cmd) => cmd.run().await,
35-
Subcommand::Car(cmd) => cmd.run().await,
36-
Subcommand::Api(cmd) => cmd.run().await,
37-
Subcommand::Net(cmd) => cmd.run().await,
38-
Subcommand::Shed(cmd) => cmd.run(client).await,
39-
Subcommand::State(cmd) => cmd.run().await,
40-
Subcommand::Completion(cmd) => cmd.run(&mut std::io::stdout()),
41-
}
42-
})
21+
// Run command
22+
match cmd {
23+
Subcommand::Backup(cmd) => cmd.run(),
24+
Subcommand::Benchmark(cmd) => cmd.run().await,
25+
Subcommand::StateMigration(cmd) => cmd.run().await,
26+
Subcommand::Snapshot(cmd) => cmd.run().await,
27+
Subcommand::Fetch(cmd) => cmd.run().await,
28+
Subcommand::Archive(cmd) => cmd.run().await,
29+
Subcommand::DB(cmd) => cmd.run().await,
30+
Subcommand::Index(cmd) => cmd.run().await,
31+
Subcommand::Car(cmd) => cmd.run().await,
32+
Subcommand::Api(cmd) => cmd.run().await,
33+
Subcommand::Net(cmd) => cmd.run().await,
34+
Subcommand::Shed(cmd) => cmd.run(client).await,
35+
Subcommand::State(cmd) => cmd.run().await,
36+
Subcommand::Completion(cmd) => cmd.run(&mut std::io::stdout()),
37+
}
4338
}

src/wallet/main.rs

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use crate::shim::address::{CurrentNetwork, Network};
1010
use clap::Parser;
1111
use std::str::FromStr;
1212

13-
pub fn main<ArgT>(args: impl IntoIterator<Item = ArgT>) -> anyhow::Result<()>
13+
pub async fn main<ArgT>(args: impl IntoIterator<Item = ArgT>) -> anyhow::Result<()>
1414
where
1515
ArgT: Into<OsString> + Clone,
1616
{
@@ -24,16 +24,11 @@ where
2424

2525
let client = rpc::Client::default_or_from_env(opts.token.as_deref())?;
2626

27-
tokio::runtime::Builder::new_multi_thread()
28-
.enable_all()
29-
.build()?
30-
.block_on(async {
31-
let name = StateNetworkName::call(&client, ()).await?;
32-
let chain = NetworkChain::from_str(&name)?;
33-
if chain.is_testnet() {
34-
CurrentNetwork::set_global(Network::Testnet);
35-
}
36-
// Run command
37-
cmd.run(client, remote_wallet, encrypt).await
38-
})
27+
let name = StateNetworkName::call(&client, ()).await?;
28+
let chain = NetworkChain::from_str(&name)?;
29+
if chain.is_testnet() {
30+
CurrentNetwork::set_global(Network::Testnet);
31+
}
32+
// Run command
33+
cmd.run(client, remote_wallet, encrypt).await
3934
}

0 commit comments

Comments
 (0)