mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-18 13:28:33 +00:00
Lint against panicky calls in async functions (#3250)
## Description Add a new lint to CI that attempts to detect calls to functions like `block_on` from async execution contexts. This lint was written from scratch exactly for this purpose, on my fork of Clippy: https://github.com/michaelsproul/rust-clippy/tree/disallow-from-async ## Additional Info - I've successfully detected the previous two issues we had with `block_on` by running the linter on the commits prior to each of these PRs: https://github.com/sigp/lighthouse/pull/3165, https://github.com/sigp/lighthouse/pull/3199. - The lint runs on CI with `continue-on-error: true` so that if it fails spuriously it won't block CI. - I think it would be good to merge this PR before https://github.com/sigp/lighthouse/pull/3244 so that we can lint the extensive executor-related changes in that PR. - I aim to upstream the lint to Clippy, at which point building a custom version of Clippy from my fork will no longer be necessary. I imagine this will take several weeks or months though, because the code is currently a bit hacky and will need some renovations to pass review.
This commit is contained in:
21
.github/custom/clippy.toml
vendored
Normal file
21
.github/custom/clippy.toml
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
disallowed-from-async-methods = [
|
||||
"tokio::runtime::Handle::block_on",
|
||||
"tokio::runtime::Runtime::block_on",
|
||||
"tokio::task::LocalSet::block_on",
|
||||
"tokio::sync::Mutex::blocking_lock",
|
||||
"tokio::sync::RwLock::blocking_read",
|
||||
"tokio::sync::mpsc::Receiver::blocking_recv",
|
||||
"tokio::sync::mpsc::UnboundedReceiver::blocking_recv",
|
||||
"tokio::sync::oneshot::Receiver::blocking_recv",
|
||||
"tokio::sync::mpsc::Sender::blocking_send",
|
||||
"tokio::sync::RwLock::blocking_write",
|
||||
]
|
||||
async-wrapper-methods = [
|
||||
"tokio::runtime::Handle::spawn_blocking",
|
||||
"task_executor::TaskExecutor::spawn_blocking",
|
||||
"task_executor::TaskExecutor::spawn_blocking_handle",
|
||||
"warp_utils::task::blocking_task",
|
||||
"warp_utils::task::blocking_json_task",
|
||||
"validator_client::http_api::blocking_signed_json_task",
|
||||
"execution_layer::test_utils::MockServer::new",
|
||||
]
|
||||
Reference in New Issue
Block a user