Skip to content

Commit e87414c

Browse files
committed
[ISSUE #1253]⚡️Optimize RouteInfoManager in NameServerBootstrap, remove RouteInfoManager parking_lot::RwLock
1 parent 2c86e0e commit e87414c

File tree

8 files changed

+183
-165
lines changed

8 files changed

+183
-165
lines changed

rocketmq-broker/src/out_api/broker_outer_api.rs

+3-7
Original file line numberDiff line numberDiff line change
@@ -276,13 +276,9 @@ impl BrokerOuterAPI {
276276
result.ha_server_addr = header
277277
.ha_server_addr
278278
.clone()
279-
.unwrap_or(CheetahString::empty())
280-
.to_string();
281-
result.master_addr = header
282-
.master_addr
283-
.clone()
284-
.unwrap_or(CheetahString::empty())
285-
.to_string();
279+
.unwrap_or(CheetahString::empty());
280+
result.master_addr =
281+
header.master_addr.clone().unwrap_or(CheetahString::empty());
286282
}
287283
if let Some(body) = response.body() {
288284
result.kv_table = SerdeJsonUtils::decode::<KVTable>(body.as_ref()).unwrap();

rocketmq-namesrv/src/bootstrap.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ struct NameServerRuntime {
5252
name_server_config: ArcMut<NamesrvConfig>,
5353
tokio_client_config: Arc<TokioClientConfig>,
5454
server_config: Arc<ServerConfig>,
55-
route_info_manager: Arc<parking_lot::RwLock<RouteInfoManager>>,
55+
route_info_manager: RouteInfoManager,
5656
kvconfig_manager: KVConfigManager,
5757
name_server_runtime: Option<RocketMQRuntime>,
5858
remoting_client: ArcMut<RocketmqDefaultClient>,
@@ -108,13 +108,13 @@ impl NameServerRuntime {
108108
self.kvconfig_manager.clone(),
109109
);
110110

111-
let route_info_manager_arc = self.route_info_manager.clone();
111+
let mut route_info_manager_arc = self.route_info_manager.clone();
112112
self.name_server_runtime
113113
.as_ref()
114114
.unwrap()
115-
.schedule_at_fixed_rate(
115+
.schedule_at_fixed_rate_mut(
116116
move || {
117-
route_info_manager_arc.write().scan_not_active_broker();
117+
route_info_manager_arc.scan_not_active_broker();
118118
},
119119
Some(Duration::from_secs(5)),
120120
Duration::from_secs(5),
@@ -172,10 +172,10 @@ impl Builder {
172172
name_server_config: name_server_config.clone(),
173173
tokio_client_config,
174174
server_config: Arc::new(self.server_config.unwrap()),
175-
route_info_manager: Arc::new(parking_lot::RwLock::new(RouteInfoManager::new(
175+
route_info_manager: RouteInfoManager::new(
176176
name_server_config.clone(),
177177
remoting_client.clone(),
178-
))),
178+
),
179179
kvconfig_manager: KVConfigManager::new(name_server_config),
180180
name_server_runtime: Some(runtime),
181181
remoting_client,

rocketmq-namesrv/src/processor/client_request_processor.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
use std::sync::atomic::AtomicBool;
1919
use std::sync::atomic::Ordering;
20-
use std::sync::Arc;
2120
use std::time::Duration;
2221

2322
use cheetah_string::CheetahString;
@@ -40,7 +39,7 @@ use crate::processor::NAMESPACE_ORDER_TOPIC_CONFIG;
4039
use crate::route::route_info_manager::RouteInfoManager;
4140

4241
pub struct ClientRequestProcessor {
43-
route_info_manager: Arc<parking_lot::RwLock<RouteInfoManager>>,
42+
route_info_manager: RouteInfoManager,
4443
namesrv_config: ArcMut<NamesrvConfig>,
4544
need_check_namesrv_ready: AtomicBool,
4645
startup_time_millis: u64,
@@ -49,7 +48,7 @@ pub struct ClientRequestProcessor {
4948

5049
impl ClientRequestProcessor {
5150
pub fn new(
52-
route_info_manager: Arc<parking_lot::RwLock<RouteInfoManager>>,
51+
route_info_manager: RouteInfoManager,
5352
namesrv_config: ArcMut<NamesrvConfig>,
5453
kvconfig_manager: KVConfigManager,
5554
) -> Self {
@@ -82,7 +81,6 @@ impl ClientRequestProcessor {
8281
}
8382
match self
8483
.route_info_manager
85-
.read()
8684
.pickup_topic_route_data(request_header.topic.as_ref())
8785
{
8886
None => RemotingCommand::create_response_command_with_code(ResponseCode::TopicNotExist)

0 commit comments

Comments
 (0)