Skip to content

Commit 86a9d6d

Browse files
authored
[ISSUE #1285]⚡️Optimize name server ClientRequestProcessor#get_route_info_by_topic (#1286)
1 parent 4445013 commit 86a9d6d

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

rocketmq-namesrv/src/processor/client_request_processor.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ impl ClientRequestProcessor {
6464
fn get_route_info_by_topic(&self, request: RemotingCommand) -> RemotingCommand {
6565
let request_header = request
6666
.decode_command_custom_header::<GetRouteInfoRequestHeader>()
67-
.unwrap();
67+
.expect("GetRouteInfoRequestHeader failed");
6868
let namesrv_ready = self.need_check_namesrv_ready.load(Ordering::Relaxed)
6969
&& TimeUtils::get_current_millis() - self.startup_time_millis
7070
>= Duration::from_secs(self.namesrv_config.wait_seconds_for_service as u64)
@@ -90,8 +90,9 @@ impl ClientRequestProcessor {
9090
FAQUrl::suggest_todo(FAQUrl::APPLY_TOPIC_URL)
9191
)),
9292
Some(mut topic_route_data) => {
93-
if self.need_check_namesrv_ready.load(Ordering::Relaxed) {
94-
self.need_check_namesrv_ready.store(false, Ordering::SeqCst);
93+
if self.need_check_namesrv_ready.load(Ordering::Acquire) {
94+
self.need_check_namesrv_ready
95+
.store(false, Ordering::Release);
9596
}
9697
if self.namesrv_config.order_message_enable {
9798
//get kv config

rocketmq-namesrv/src/route/route_info_manager.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ impl RouteInfoManager {
385385
let mut found_broker_data = false;
386386

387387
// Acquire read lock
388-
388+
let lock = self.lock.read();
389389
if let Some(queue_data_map) = self.topic_queue_table.get(topic) {
390390
topic_route_data.queue_datas = queue_data_map.values().cloned().collect();
391391
found_queue_data = true;
@@ -417,7 +417,7 @@ impl RouteInfoManager {
417417
}
418418
}
419419
}
420-
420+
drop(lock);
421421
debug!("pickup_topic_route_data {:?} {:?}", topic, topic_route_data);
422422

423423
if found_broker_data && found_queue_data {

0 commit comments

Comments
 (0)