-
Notifications
You must be signed in to change notification settings - Fork 119
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
[ISSUE #1277]⚡️Optimize name server DefaultRequestProcessor#wipe_write_perm_of_broker_by_lock #1278
Conversation
…e_perm_of_broker_by_lock
WalkthroughThe changes in this pull request involve modifications to the Changes
Assessment against linked issues
Possibly related issues
Possibly related PRs
Suggested labels
Suggested reviewers
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
🔊@mxsm 🚀Thanks for your contribution 🎉. CodeRabbit(AI) will review your code first 🔥 |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1278 +/- ##
==========================================
- Coverage 18.98% 18.98% -0.01%
==========================================
Files 428 428
Lines 53842 53853 +11
==========================================
Hits 10224 10224
- Misses 43618 43629 +11 ☔ View full report in Codecov by Sentry. 🚨 Try these New Features:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Outside diff range and nitpick comments (2)
rocketmq-namesrv/src/processor/default_request_processor.rs (1)
Line range hint
321-337
: Consider adding error handling for the broker permission operations.While the optimizations are good, both methods should consider handling potential errors that might occur during the permission operations, such as:
- Invalid broker names
- Concurrent modification conflicts
- System-level errors
Consider wrapping the return values in a Result type:
-fn wipe_write_perm_of_broker(&mut self, request: RemotingCommand) -> RemotingCommand { +fn wipe_write_perm_of_broker(&mut self, request: RemotingCommand) -> Result<RemotingCommand, Error> { let request_header = request .decode_command_custom_header::<WipeWritePermOfBrokerRequestHeader>() .expect("decode WipeWritePermOfBrokerRequestHeader failed"); - let wipe_topic_cnt = self + let wipe_topic_cnt = self .route_info_manager - .wipe_write_perm_of_broker_by_lock(&request_header.broker_name); - RemotingCommand::create_response_command() - .set_command_custom_header(WipeWritePermOfBrokerResponseHeader::new(wipe_topic_cnt)) + .wipe_write_perm_of_broker_by_lock(&request_header.broker_name) + .map_err(|e| Error::PermissionError(e.to_string()))?; + Ok(RemotingCommand::create_response_command() + .set_command_custom_header(WipeWritePermOfBrokerResponseHeader::new(wipe_topic_cnt))) }rocketmq-namesrv/src/route/route_info_manager.rs (1)
696-706
: Improved error handling with early return.The implementation now properly checks for the existence of queue data before attempting to modify permissions. This prevents potential issues with missing queue data.
Consider adding debug logging when queue data is not found to help with troubleshooting:
if qd.is_none() { + debug!("Queue data not found for broker: {}", broker_name); continue; }
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
📒 Files selected for processing (2)
rocketmq-namesrv/src/processor/default_request_processor.rs
(2 hunks)rocketmq-namesrv/src/route/route_info_manager.rs
(1 hunks)
🔇 Additional comments (4)
rocketmq-namesrv/src/processor/default_request_processor.rs (2)
321-326
: LGTM! Optimization looks good.
The change to pass a reference to broker_name
directly to wipe_write_perm_of_broker_by_lock
is a good optimization that:
- Avoids unnecessary string operations
- Improves thread safety by using immutable references
332-337
: LGTM! Optimization looks good.
Similarly, the change to pass a reference to broker_name
directly to add_write_perm_of_broker_by_lock
is a good optimization that:
- Avoids unnecessary string operations
- Improves thread safety by using immutable references
rocketmq-namesrv/src/route/route_info_manager.rs (2)
678-684
: LGTM! Performance optimization with inline attribute.
The addition of #[inline]
attribute is a good optimization for this frequently called method. The implementation correctly uses a write lock to ensure thread safety while modifying broker permissions.
687-692
: LGTM! Consistent implementation with wipe_write_perm.
The method follows the same pattern as wipe_write_perm_of_broker_by_lock
, using write lock and inline attribute for optimization.
Which Issue(s) This PR Fixes(Closes)
Fixes #1277
Brief Description
How Did You Test This Change?
Summary by CodeRabbit
New Features
Bug Fixes
Documentation