release dashmap memory (#1485)

This commit is contained in:
Sijie.Sun
2025-10-18 12:48:04 +08:00
committed by GitHub
parent 8f1786fa23
commit cc8f35787e
29 changed files with 339 additions and 187 deletions
+5 -2
View File
@@ -23,7 +23,7 @@ use tracing::{instrument, Instrument};
use super::{packet_def::V6HolePunchPacket, TunnelInfo};
use crate::{
common::{join_joinset_background, scoped_task::ScopedTask},
common::{join_joinset_background, scoped_task::ScopedTask, shrink_dashmap},
tunnel::{
build_url_from_socket_addr,
common::{reserve_buf, TunnelWrapper},
@@ -569,7 +569,10 @@ impl TunnelListener for UdpTunnelListener {
if let Some(err) = err {
tracing::error!(?err, "udp close event error");
}
sock_map.upgrade().map(|v| v.remove(&dst_addr));
if let Some(sock_map) = sock_map.upgrade() {
sock_map.remove(&dst_addr);
shrink_dashmap(&sock_map, None);
}
}
});
+9 -5
View File
@@ -21,10 +21,13 @@ use rand::RngCore;
use tokio::{net::UdpSocket, sync::Mutex, task::JoinSet};
use super::TunnelInfo;
use crate::tunnel::{
build_url_from_socket_addr,
common::TunnelWrapper,
packet_def::{ZCPacket, WG_TUNNEL_HEADER_SIZE},
use crate::{
common::shrink_dashmap,
tunnel::{
build_url_from_socket_addr,
common::TunnelWrapper,
packet_def::{ZCPacket, WG_TUNNEL_HEADER_SIZE},
},
};
use super::{
@@ -491,12 +494,13 @@ impl WgTunnelListener {
) {
let mut tasks = JoinSet::new();
let peer_map_clone = peer_map.clone();
let peer_map_clone: Arc<DashMap<SocketAddr, Arc<WgPeer>>> = peer_map.clone();
tasks.spawn(async move {
loop {
peer_map_clone.retain(|_, peer| {
peer.access_time.load().elapsed().as_secs() < 61 && !peer.stopped()
});
shrink_dashmap(&peer_map_clone, None);
tokio::time::sleep(Duration::from_secs(1)).await;
}
});