Skip to content

Commit 5725862

Browse files
committed
chore
1 parent fd1c3e5 commit 5725862

2 files changed

Lines changed: 46 additions & 6 deletions

File tree

Cyaim.WebSocketServer/Cluster/Cyaim.WebSocketServer.Cluster.Hybrid/HybridClusterTransport.cs

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ public async Task SendAsync(string nodeId, ClusterMessage message)
278278

279279
await _messageQueueService.PublishAsync(ExchangeName, routingKey, messageBytes, properties);
280280

281-
_logger.LogTrace($"[HybridClusterTransport] 消息发送成功 - TargetNodeId: {nodeId}, MessageId: {message.MessageId}, MessageType: {message.Type}, CurrentNodeId: {_nodeId}, MessageSize: {messageBytes.Length} bytes");
281+
_logger.LogWarning($"[HybridClusterTransport] 消息发送成功 - TargetNodeId: {nodeId}, MessageId: {message.MessageId}, MessageType: {message.Type}, RoutingKey: {routingKey}, ExchangeName: {ExchangeName}, CurrentNodeId: {_nodeId}, MessageSize: {messageBytes.Length} bytes");
282282
}
283283
catch (Exception ex)
284284
{
@@ -427,6 +427,7 @@ public bool IsNodeConnected(string nodeId)
427427
{
428428
if (string.IsNullOrEmpty(nodeId))
429429
{
430+
_logger.LogWarning($"[HybridClusterTransport] IsNodeConnected: 节点ID为空 - CurrentNodeId: {_nodeId}");
430431
return false;
431432
}
432433

@@ -435,9 +436,22 @@ public bool IsNodeConnected(string nodeId)
435436
return true; // Current node is always "connected" / 当前节点始终"已连接"
436437
}
437438

438-
return _knownNodes.TryGetValue(nodeId, out var nodeInfo) &&
439-
nodeInfo.Status == NodeStatus.Active &&
440-
DateTime.UtcNow - nodeInfo.LastHeartbeat < TimeSpan.FromSeconds(60);
439+
var exists = _knownNodes.TryGetValue(nodeId, out var nodeInfo);
440+
if (!exists)
441+
{
442+
_logger.LogWarning($"[HybridClusterTransport] IsNodeConnected: 节点不在已知节点列表中 - TargetNodeId: {nodeId}, CurrentNodeId: {_nodeId}, KnownNodeCount: {_knownNodes.Count}, KnownNodes: {string.Join(", ", _knownNodes.Keys)}");
443+
return false;
444+
}
445+
446+
var isActive = nodeInfo.Status == NodeStatus.Active;
447+
var timeSinceHeartbeat = DateTime.UtcNow - nodeInfo.LastHeartbeat;
448+
var isHeartbeatRecent = timeSinceHeartbeat < TimeSpan.FromSeconds(60);
449+
450+
var isConnected = isActive && isHeartbeatRecent;
451+
452+
_logger.LogWarning($"[HybridClusterTransport] IsNodeConnected: 节点连接状态检查 - TargetNodeId: {nodeId}, CurrentNodeId: {_nodeId}, Exists: {exists}, Status: {nodeInfo.Status}, IsActive: {isActive}, TimeSinceHeartbeat: {timeSinceHeartbeat.TotalSeconds}秒, IsHeartbeatRecent: {isHeartbeatRecent}, IsConnected: {isConnected}");
453+
454+
return isConnected;
441455
}
442456

443457
/// <summary>
@@ -757,19 +771,36 @@ private void OnNodeDiscovered(object sender, NodeInfo nodeInfo)
757771
{
758772
if (nodeInfo == null || nodeInfo.NodeId == _nodeId)
759773
{
774+
_logger.LogWarning($"[HybridClusterTransport] OnNodeDiscovered: 跳过无效节点或自己的节点 - NodeId: {nodeInfo?.NodeId ?? "null"}, CurrentNodeId: {_nodeId}");
760775
return;
761776
}
762777

778+
// 确保 LastHeartbeat 已设置
779+
if (nodeInfo.LastHeartbeat == default)
780+
{
781+
nodeInfo.LastHeartbeat = DateTime.UtcNow;
782+
_logger.LogWarning($"[HybridClusterTransport] OnNodeDiscovered: 节点心跳时间未设置,使用当前时间 - NodeId: {nodeInfo.NodeId}, CurrentNodeId: {_nodeId}");
783+
}
784+
785+
// 确保 Status 已设置
786+
if (nodeInfo.Status == NodeStatus.Unknown)
787+
{
788+
nodeInfo.Status = NodeStatus.Active;
789+
_logger.LogWarning($"[HybridClusterTransport] OnNodeDiscovered: 节点状态未设置,设置为 Active - NodeId: {nodeInfo.NodeId}, CurrentNodeId: {_nodeId}");
790+
}
791+
763792
var wasNew = _knownNodes.TryAdd(nodeInfo.NodeId, nodeInfo);
764793
if (wasNew)
765794
{
766-
_logger.LogWarning($"[HybridClusterTransport] 发现新节点 - NodeId: {nodeInfo.NodeId}, Address: {nodeInfo.Address}, Port: {nodeInfo.Port}, CurrentNodeId: {_nodeId}, 已知节点数: {_knownNodes.Count}");
795+
_logger.LogWarning($"[HybridClusterTransport] 发现新节点 - NodeId: {nodeInfo.NodeId}, Address: {nodeInfo.Address}, Port: {nodeInfo.Port}, Status: {nodeInfo.Status}, LastHeartbeat: {nodeInfo.LastHeartbeat}, CurrentNodeId: {_nodeId}, 已知节点数: {_knownNodes.Count}");
767796
NodeConnected?.Invoke(this, new ClusterNodeEventArgs { NodeId = nodeInfo.NodeId });
768797
}
769798
else
770799
{
771800
// Update existing node info / 更新现有节点信息
801+
var oldNodeInfo = _knownNodes[nodeInfo.NodeId];
772802
_knownNodes[nodeInfo.NodeId] = nodeInfo;
803+
_logger.LogWarning($"[HybridClusterTransport] 更新现有节点信息 - NodeId: {nodeInfo.NodeId}, OldStatus: {oldNodeInfo.Status}, NewStatus: {nodeInfo.Status}, OldLastHeartbeat: {oldNodeInfo.LastHeartbeat}, NewLastHeartbeat: {nodeInfo.LastHeartbeat}, CurrentNodeId: {_nodeId}, 已知节点数: {_knownNodes.Count}");
773804
}
774805
}
775806

Cyaim.WebSocketServer/Cyaim.WebSocketServer/Infrastructure/Cluster/ClusterRouter.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,16 @@ private async Task<bool> ForwardToNodeAsync(string targetNodeId, string connecti
457457

458458
_logger.LogWarning($"[ClusterRouter] 准备通过传输层发送消息 - ConnectionId: {connectionId}, TargetNodeId: {targetNodeId}, MessageId: {uniqueMessageId}, CurrentNodeId: {_nodeId}, MessageType: {message.Type}");
459459

460-
await _transport.SendAsync(targetNodeId, message);
460+
try
461+
{
462+
await _transport.SendAsync(targetNodeId, message);
463+
_logger.LogWarning($"[ClusterRouter] 消息已通过传输层发送 - ConnectionId: {connectionId}, TargetNodeId: {targetNodeId}, MessageId: {uniqueMessageId}, CurrentNodeId: {_nodeId}");
464+
}
465+
catch (Exception sendEx)
466+
{
467+
_logger.LogError(sendEx, $"[ClusterRouter] 通过传输层发送消息失败 - ConnectionId: {connectionId}, TargetNodeId: {targetNodeId}, MessageId: {uniqueMessageId}, CurrentNodeId: {_nodeId}, Error: {sendEx.Message}, StackTrace: {sendEx.StackTrace}");
468+
throw;
469+
}
461470

462471
// 记录集群消息转发指标
463472
_metricsCollector?.RecordClusterMessageForwarded(_nodeId, targetNodeId);

0 commit comments

Comments
 (0)