Preserve unreachable state and ping failures across node merges

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Ian Gulliver
2026-02-04 12:45:09 -08:00
parent c328e737d0
commit 41f3602696
2 changed files with 23 additions and 22 deletions

12
ping.go
View File

@@ -138,6 +138,18 @@ func (pm *PingManager) Ping(ipStr string, timeout time.Duration) bool {
}
}
func (pm *PingManager) TransferFailures(fromID, toID string) {
pm.mu.Lock()
defer pm.mu.Unlock()
fromFailures := pm.failures[fromID]
toFailures := pm.failures[toID]
if fromFailures > toFailures {
pm.failures[toID] = fromFailures
}
delete(pm.failures, fromID)
}
func (t *Tendrils) pingNode(node *Node) {
t.nodes.mu.RLock()
if node.Avoid {