refactor: 优化 unsubscribe_points_from_source 中 status 锁粒度,使用 get_session 函数

This commit is contained in:
caoqianming 2026-03-06 09:13:30 +08:00
parent 4d88bcbce3
commit 487d3cdf26
1 changed files with 7 additions and 5 deletions

View File

@ -1207,12 +1207,14 @@ impl ConnectionManager {
} }
let target_ids: std::collections::HashSet<Uuid> = point_ids.into_iter().collect(); let target_ids: std::collections::HashSet<Uuid> = point_ids.into_iter().collect();
let (session, subscription_id, point_item_pairs) = { let session = self.get_session(source_id).await;
let status = self.status.read().await; let Some(session) = session else {
let Some(conn_status) = status.get(&source_id) else {
return Ok(0); return Ok(0);
}; };
let Some(session) = conn_status.session.clone() else {
let (subscription_id, point_item_pairs) = {
let status = self.status.read().await;
let Some(conn_status) = status.get(&source_id) else {
return Ok(0); return Ok(0);
}; };
let Some(subscription_id) = conn_status.subscription_id else { let Some(subscription_id) = conn_status.subscription_id else {
@ -1226,7 +1228,7 @@ impl ConnectionManager {
.map(|(point_id, monitored_item_id)| (*point_id, *monitored_item_id)) .map(|(point_id, monitored_item_id)| (*point_id, *monitored_item_id))
.collect(); .collect();
(session, subscription_id, items) (subscription_id, items)
}; };
if point_item_pairs.is_empty() { if point_item_pairs.is_empty() {