feat: 增加重连过程的详细日志输出
- handleReconnect 中的日志从 debug 改为 info/warning - 添加重连尝试次数和 reconnectAttempts 计数器的显示 - 添加等待时间日志 - 便于诊断重连失败的原因
This commit is contained in:
@@ -1011,21 +1011,28 @@ class ConnectionHandler: ChannelInboundHandler {
|
|||||||
oldTask.cancel()
|
oldTask.cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.info("🔄 Starting reconnection process...")
|
||||||
|
|
||||||
reconnectTask = Task {
|
reconnectTask = Task {
|
||||||
var connected = false
|
var connected = false
|
||||||
|
var attempt = 0
|
||||||
while !Task.isCancelled
|
while !Task.isCancelled
|
||||||
&& (maxReconnects == nil || self.reconnectAttempts < maxReconnects!)
|
&& (maxReconnects == nil || self.reconnectAttempts < maxReconnects!)
|
||||||
{
|
{
|
||||||
|
attempt += 1
|
||||||
|
logger.info("🔄 Reconnect attempt \(attempt), total reconnectAttempts: \(self.reconnectAttempts)")
|
||||||
do {
|
do {
|
||||||
try await self.connect()
|
try await self.connect()
|
||||||
connected = true
|
connected = true
|
||||||
|
logger.info("✅ Reconnection successful after \(attempt) attempts")
|
||||||
break // Successfully connected
|
break // Successfully connected
|
||||||
} catch is CancellationError {
|
} catch is CancellationError {
|
||||||
logger.debug("Reconnect task cancelled")
|
logger.info("⚠️ Reconnect task cancelled")
|
||||||
return
|
return
|
||||||
} catch {
|
} catch {
|
||||||
logger.debug("Could not reconnect: \(error)")
|
logger.warning("⚠️ Reconnect attempt \(attempt) failed: \(error)")
|
||||||
if !Task.isCancelled {
|
if !Task.isCancelled {
|
||||||
|
logger.info("⏳ Waiting \(Double(self.reconnectWait) / 1_000_000_000)s before next attempt...")
|
||||||
try? await Task.sleep(nanoseconds: self.reconnectWait)
|
try? await Task.sleep(nanoseconds: self.reconnectWait)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1033,13 +1040,13 @@ class ConnectionHandler: ChannelInboundHandler {
|
|||||||
|
|
||||||
// Early return if cancelled
|
// Early return if cancelled
|
||||||
if Task.isCancelled {
|
if Task.isCancelled {
|
||||||
logger.debug("Reconnect task cancelled after connection attempts")
|
logger.info("⚠️ Reconnect task cancelled after \(attempt) connection attempts")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we got here without connecting and weren't cancelled, we hit max reconnects
|
// If we got here without connecting and weren't cancelled, we hit max reconnects
|
||||||
if !connected {
|
if !connected {
|
||||||
logger.error("Could not reconnect; maxReconnects exceeded")
|
logger.error("❌ Could not reconnect; maxReconnects exceeded (\(self.maxReconnects ?? -1))")
|
||||||
try? await self.close()
|
try? await self.close()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user