mirror of
https://github.com/tailscale/tailscale.git
synced 2025-12-29 14:38:00 +00:00
net/dns: don't timeout if inotify sends multiple events
This fixes a flaky test which has been occasionally timing out in CI. In particular, this test times out if `watchFile` receives multiple notifications from inotify before we cancel the test context. We block processing the second notification, because we've stopped listening to the `callbackDone` channel. This patch changes the test so we only send on the first notification. Testing this locally with `stress` confirms that the test is no longer flaky. Fixes #17172 Updates #14699 Signed-off-by: Alex Chan <alexc@tailscale.com>
This commit is contained in:
@@ -25,8 +25,13 @@ func TestWatchFile(t *testing.T) {
|
||||
var callbackCalled atomic.Bool
|
||||
callbackDone := make(chan bool)
|
||||
callback := func() {
|
||||
callbackDone <- true
|
||||
callbackCalled.Store(true)
|
||||
// We only send to the channel once to avoid blocking if the
|
||||
// callback is called multiple times -- this happens occasionally
|
||||
// if inotify sends multiple events before we cancel the context.
|
||||
if !callbackCalled.Load() {
|
||||
callbackDone <- true
|
||||
callbackCalled.Store(true)
|
||||
}
|
||||
}
|
||||
|
||||
var eg errgroup.Group
|
||||
|
||||
Reference in New Issue
Block a user