mirror of
https://gitcode.com/JianFeeeee/webui4frpc.git
synced 2026-09-20 08:57:55 +00:00
fix: 心跳复活节点、inflight 超时重发
1. handleClusterToken:心跳到达时把发送方(前驱)标记为 alive。 之前 forwardToNext 超时把节点 MarkOffline 后就再无途径恢复, 即使下一个心跳证明它活着。心跳是 leader 侧纠正误判的唯一入口。 2. forwardToNext:遍历完所有后继才返回,不要提前 inflight.clear()。 保留 inflight 状态,让 WatchTokenLoss 超时后 StartRing 重发, 重发时 AliveSuccessor 会重新计算,心跳刚复活的节点就能被选中。 这两处补丁一起提交,形成完整的存活复活闭环。
This commit is contained in:
@ -155,7 +155,9 @@ func (e *Engine) forwardToNext(ctx context.Context, tk *Token) error {
|
||||
}
|
||||
// Non-leader neighbor death: continue to the next recipient.
|
||||
}
|
||||
e.inflight.clear()
|
||||
// 全环遍历完毕,所有后继都不可达(或已全部尝试过)。
|
||||
// 保持 inflight(不清空),让 WatchTokenLoss 超时后重发。
|
||||
// 重发时 AliveSuccessor 重新计算,可能已被心跳复活。
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user