Add per-node ping monitoring with unreachable error tracking

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Ian Gulliver
2026-01-25 18:56:12 -08:00
parent a94f816f3d
commit c8be46b739
4 changed files with 172 additions and 17 deletions

View File

@@ -252,8 +252,10 @@ func (n *Nodes) startNodePoller(nodeID int, node *Node) {
n.nodeCancel[nodeID] = cancel
go func() {
ticker := time.NewTicker(10 * time.Second)
defer ticker.Stop()
pollTicker := time.NewTicker(10 * time.Second)
pingTicker := time.NewTicker(1 * time.Second)
defer pollTicker.Stop()
defer pingTicker.Stop()
for {
select {
@@ -261,8 +263,10 @@ func (n *Nodes) startNodePoller(nodeID int, node *Node) {
return
case <-node.pollTrigger:
n.t.pollNode(node)
case <-ticker.C:
case <-pollTicker.C:
n.t.pollNode(node)
case <-pingTicker.C:
n.t.pingNode(node)
}
}
}()