Skip to content

Commit

Permalink
Update fdlimit crate and handle errors gracefully instead of catchi…
Browse files Browse the repository at this point in the history
…ng panics
  • Loading branch information
nazar-pc committed Nov 9, 2023
1 parent e2046c2 commit 1537b4d
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 26 deletions.
17 changes: 9 additions & 8 deletions Cargo.lock

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

2 changes: 1 addition & 1 deletion substrate/client/cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ targets = ["x86_64-unknown-linux-gnu"]
array-bytes = "6.1"
chrono = "0.4.27"
clap = { version = "4.4.6", features = ["derive", "string", "wrap_help"] }
fdlimit = "0.2.1"
fdlimit = "0.3.0"
futures = "0.3.21"
itertools = "0.10.3"
libp2p-identity = { version = "0.1.3", features = ["peerid", "ed25519"]}
Expand Down
20 changes: 5 additions & 15 deletions substrate/client/cli/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -605,29 +605,19 @@ pub trait CliConfiguration<DCV: DefaultConfigurationValues = ()>: Sized {

logger.init()?;

match std::panic::catch_unwind(fdlimit::raise_fd_limit) {
Ok(Some(new_limit)) =>
if new_limit < RECOMMENDED_OPEN_FILE_DESCRIPTOR_LIMIT {
match fdlimit::raise_fd_limit() {
Ok(fdlimit::Outcome::LimitRaised { to, .. }) =>
if to < RECOMMENDED_OPEN_FILE_DESCRIPTOR_LIMIT {
warn!(
"Low open file descriptor limit configured for the process. \
Current value: {:?}, recommended value: {:?}.",
new_limit, RECOMMENDED_OPEN_FILE_DESCRIPTOR_LIMIT,
to, RECOMMENDED_OPEN_FILE_DESCRIPTOR_LIMIT,
);
},
Ok(None) => {
Ok(fdlimit::Outcome::Unsupported) => {
// Unsupported platform (non-Linux)
},
Err(error) => {
let error = if let Some(error) = error.downcast_ref::<&str>() {
*error
} else if let Some(error) = error.downcast_ref::<String>() {
error
} else {
unreachable!(
"Should be unreachable as `fdlimit` uses panic macro, \
which should return either `&str` or `String`"
)
};
warn!(
"Failed to configure file descriptor limit for the process: \
{}, recommended value: {:?}.",
Expand Down
2 changes: 1 addition & 1 deletion substrate/client/service/test/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
async-channel = "1.8.0"
array-bytes = "6.1"
fdlimit = "0.2.1"
fdlimit = "0.3.0"
futures = "0.3.21"
log = "0.4.17"
parity-scale-codec = "3.6.1"
Expand Down
2 changes: 1 addition & 1 deletion substrate/client/service/test/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ where
base_port: u16,
) -> TestNet<G, E, F, U> {
sp_tracing::try_init_simple();
fdlimit::raise_fd_limit();
fdlimit::raise_fd_limit().unwrap();
let runtime = Runtime::new().expect("Error creating tokio runtime");
let mut net = TestNet {
runtime,
Expand Down

0 comments on commit 1537b4d

Please sign in to comment.