Skip to content

Commit 404d672

Browse files
committed
[ISSUE #1277]⚡️Optimize name server DefaultRequestProcessor#wipe_write_perm_of_broker_by_lock
1 parent 4e333ce commit 404d672

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

rocketmq-namesrv/src/processor/default_request_processor.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ impl DefaultRequestProcessor {
320320
.expect("decode WipeWritePermOfBrokerRequestHeader failed");
321321
let wipe_topic_cnt = self
322322
.route_info_manager
323-
.wipe_write_perm_of_broker_by_lock(request_header.broker_name.as_str());
323+
.wipe_write_perm_of_broker_by_lock(&request_header.broker_name);
324324
RemotingCommand::create_response_command()
325325
.set_command_custom_header(WipeWritePermOfBrokerResponseHeader::new(wipe_topic_cnt))
326326
}
@@ -331,7 +331,7 @@ impl DefaultRequestProcessor {
331331
.expect("decode AddWritePermOfBrokerRequestHeader failed");
332332
let add_topic_cnt = self
333333
.route_info_manager
334-
.add_write_perm_of_broker_by_lock(request_header.broker_name.as_str());
334+
.add_write_perm_of_broker_by_lock(&request_header.broker_name);
335335
RemotingCommand::create_response_command()
336336
.set_command_custom_header(AddWritePermOfBrokerResponseHeader::new(add_topic_cnt))
337337
}

rocketmq-namesrv/src/route/route_info_manager.rs

+21-8
Original file line numberDiff line numberDiff line change
@@ -675,22 +675,35 @@ impl RouteInfoManager {
675675
Some(group_member)
676676
}
677677

678-
pub(crate) fn wipe_write_perm_of_broker_by_lock(&mut self, broker_name: &str) -> i32 {
679-
self.operate_write_perm_of_broker(broker_name, RequestCode::WipeWritePermOfBroker)
678+
#[inline]
679+
pub(crate) fn wipe_write_perm_of_broker_by_lock(&self, broker_name: &CheetahString) -> i32 {
680+
let lock = self.lock.write();
681+
let cnt =
682+
self.operate_write_perm_of_broker(broker_name, RequestCode::WipeWritePermOfBroker);
683+
drop(lock);
684+
cnt
680685
}
681686

682-
pub(crate) fn add_write_perm_of_broker_by_lock(&mut self, broker_name: &str) -> i32 {
683-
self.operate_write_perm_of_broker(broker_name, RequestCode::AddWritePermOfBroker)
687+
#[inline]
688+
pub(crate) fn add_write_perm_of_broker_by_lock(&self, broker_name: &CheetahString) -> i32 {
689+
let lock = self.lock.write();
690+
let cnt = self.operate_write_perm_of_broker(broker_name, RequestCode::AddWritePermOfBroker);
691+
drop(lock);
692+
cnt
684693
}
685694

686695
fn operate_write_perm_of_broker(
687-
&mut self,
688-
broker_name: &str,
696+
&self,
697+
broker_name: &CheetahString,
689698
request_code: RequestCode,
690699
) -> i32 {
691700
let mut topic_cnt = 0;
692-
for (_topic, qd_map) in self.topic_queue_table.iter_mut() {
693-
let qd = qd_map.get_mut(broker_name).unwrap();
701+
for (_topic, qd_map) in self.topic_queue_table.mut_from_ref().iter_mut() {
702+
let qd = qd_map.get_mut(broker_name);
703+
if qd.is_none() {
704+
continue;
705+
}
706+
let qd = qd.unwrap();
694707
let mut perm = qd.perm;
695708
match request_code {
696709
RequestCode::WipeWritePermOfBroker => {

0 commit comments

Comments
 (0)