mirror of
https://github.com/tailscale/tailscale.git
synced 2025-08-10 08:07:17 +02:00
This test verifies, among other things, that init functions cannot be deferred after (*DeferredFuncs).Do has already been called and that all subsequent calls to (*DeferredFuncs).Defer return false. However, the initial implementation of this check was racy: by the time (*DeferredFuncs).Do returned, not all goroutines that successfully deferred an init function may have incremented the atomic variable tracking the number of deferred functions. As a result, the variable's value could differ immediately after (*DeferredFuncs).Do returned and after all goroutines had completed execution (i.e., after wg.Wait()). In this PR, we replace the original racy check with a different one. Although this new check is also racy, it can only produce false negatives. This means that if the test fails, it indicates an actual bug rather than a flaky test. Fixes #14039 Signed-off-by: Nick Khyl <nickk@tailscale.com> |
||
---|---|---|
.. | ||
appctype | ||
bools | ||
dnstype | ||
empty | ||
flagtype | ||
iox | ||
ipproto | ||
key | ||
lazy | ||
logger | ||
logid | ||
netlogtype | ||
netmap | ||
nettype | ||
opt | ||
persist | ||
prefs | ||
preftype | ||
ptr | ||
result | ||
structs | ||
tkatype | ||
views |