mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 01:10:23 +08:00
fix(proxy-node): tunnel 模式节点状态由连接管理,心跳不再覆盖
- resolver 中增加 tunnel 未连接节点的过滤,避免请求路由到不可达节点 - 心跳处理中 tunnel 模式节点仅更新指标,不改变在线状态
This commit is contained in:
@@ -63,6 +63,11 @@ def _get_proxy_node_info(node_id: str) -> dict[str, Any] | None:
|
||||
_proxy_node_cache[node_id] = (None, now + _PROXY_NODE_CACHE_TTL_SECONDS)
|
||||
return None
|
||||
|
||||
# tunnel 模式节点必须 tunnel 已连接才可用
|
||||
if node.tunnel_mode and not node.tunnel_connected:
|
||||
_proxy_node_cache[node_id] = (None, now + _PROXY_NODE_CACHE_TTL_SECONDS)
|
||||
return None
|
||||
|
||||
if node.is_manual:
|
||||
value: dict[str, Any] = {
|
||||
"is_manual": True,
|
||||
|
||||
@@ -273,7 +273,10 @@ class ProxyNodeService:
|
||||
raise NotFoundException(f"ProxyNode {node_id} 不存在", "proxy_node")
|
||||
|
||||
now = datetime.now(timezone.utc)
|
||||
node.status = ProxyNodeStatus.ONLINE
|
||||
# tunnel 模式节点:心跳仅更新指标,不改变状态;
|
||||
# 状态由 tunnel WebSocket 连接建立/断开时决定
|
||||
if not node.tunnel_mode:
|
||||
node.status = ProxyNodeStatus.ONLINE
|
||||
node.last_heartbeat_at = now
|
||||
if heartbeat_interval is not None:
|
||||
node.heartbeat_interval = heartbeat_interval
|
||||
|
||||
Reference in New Issue
Block a user