You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
3, due to the complexity of the changes in the RPC server and subscription handling logic, which requires a good understanding of asynchronous programming and error handling in Rust.
🧪 Relevant tests
No
⚡ Possible issues
Possible Bug: The use of let _ = ... in multiple places might suppress important errors that should be handled or logged. This could lead to silent failures in the system.
🔒 Security concerns
No
Code feedback:
relevant file
src/eth/rpc/rpc_server.rs
suggestion
Consider handling or logging the result of spawn_subscriptions_cleaner() instead of ignoring it with let _ = .... This could be important for debugging issues related to subscription cleanup. [important]
Instead of using let _ = join!(...), consider handling the results of the joined futures to ensure that any errors or important information are not missed. [important]
Improve error handling by logging errors from spawning subscription cleaners.
Replace the use of let _ = with a proper error handling or logging mechanism. Ignoring the result of Arc::clone(&subs).spawn_subscriptions_cleaner() may lead to unhandled errors or unexpected behavior in the RPC server.
-tracing::warn!("stopping subscription logs notifier because tx channel was closed");+tracing::warn!("Stopping subscription logs notifier because tx channel was closed. Receiver: {:?}", rx);
Best practice
Replace join! with tokio::select! for better asynchronous task management.
Consider using tokio::select! instead of join! for handling asynchronous tasks to allow finer control over task cancellation and error handling.
-let Ok(block) = rx.recv().await else {- tracing::warn!("stopping subscription blocks notifier because tx channel was closed");- break;-};+while let Ok(block) = rx.recv().await {+ let msg = SubscriptionMessage::from(block.header);+ let new_heads_subs = self.new_heads.read().await;+ for sub in new_heads_subs.values() {+ notify(sub, msg.clone()).await;+ }+}+tracing::warn!("stopping subscription blocks notifier because tx channel was closed");
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.