Fix issue with tests failing due to test-related race conditions.

This commit is contained in:
2025-11-25 17:10:44 +00:00
parent 32e88efd9a
commit 91f8e0ca2e
2 changed files with 18 additions and 4 deletions
+16 -3
View File
@@ -154,12 +154,21 @@ func (s *WatchdogTestSuite) TestMultipleWorkers() {
s.watchdog.RegisterWorker("worker-3", makeCallback("worker-3")) s.watchdog.RegisterWorker("worker-3", makeCallback("worker-3"))
// worker-1: Keep sending heartbeats (healthy) // worker-1: Keep sending heartbeats (healthy)
// Use a done channel to ensure goroutine exits before test ends
ticker1 := time.NewTicker(50 * time.Millisecond) ticker1 := time.NewTicker(50 * time.Millisecond)
defer ticker1.Stop() done := make(chan struct{})
var wg sync.WaitGroup
wg.Add(1)
go func() { go func() {
defer wg.Done()
defer ticker1.Stop()
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
<-ticker1.C select {
s.watchdog.Heartbeat("worker-1") case <-ticker1.C:
s.watchdog.Heartbeat("worker-1")
case <-done:
return
}
} }
}() }()
@@ -172,6 +181,10 @@ func (s *WatchdogTestSuite) TestMultipleWorkers() {
// Wait for hung workers to be detected // Wait for hung workers to be detected
time.Sleep(600 * time.Millisecond) time.Sleep(600 * time.Millisecond)
// Signal goroutine to stop and wait for it
close(done)
wg.Wait()
// Check results // Check results
mu.Lock() mu.Lock()
defer mu.Unlock() defer mu.Unlock()
+2 -1
View File
@@ -155,7 +155,8 @@ func (p *Publisher) Stop() {
// goroutines to exit cleanly. This works around a race condition in the // goroutines to exit cleanly. This works around a race condition in the
// grandcat/zeroconf library where recv4() can access ipv4conn after shutdown() // grandcat/zeroconf library where recv4() can access ipv4conn after shutdown()
// sets it to nil. See: https://github.com/grandcat/zeroconf/issues/95 // sets it to nil. See: https://github.com/grandcat/zeroconf/issues/95
const shutdownSettleTime = 50 * time.Millisecond // Note: 100ms is needed for CI environments where timing can be more variable.
const shutdownSettleTime = 100 * time.Millisecond
// shutdownWithTimeout attempts to shutdown a zeroconf server with a timeout. // shutdownWithTimeout attempts to shutdown a zeroconf server with a timeout.
// If shutdown hangs, it logs a warning and returns anyway. // If shutdown hangs, it logs a warning and returns anyway.