You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/types
Nick Khyl f023c8603a types/lazy: fix flaky TestDeferAfterDo
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>
11 months ago
..
appctype appc,ipn/ipnlocal,types/appctype: implement control provided routes 2 years ago
bools types/bools: add IfElse (#14272) 12 months ago
dnstype cmd/viewer,all: consistently use "read-only" instead of "readonly" 11 months ago
empty all: update copyright and license headers 3 years ago
flagtype all: update copyright and license headers 3 years ago
iox types/iox: add function types for Reader and Writer (#14366) 12 months ago
ipproto all: use Go 1.22 range-over-int 2 years ago
key types/key: use tlpub: in error message (#13707) 1 year ago
lazy types/lazy: fix flaky TestDeferAfterDo 11 months ago
logger all: use Go 1.22 range-over-int 2 years ago
logid types/logid: add Add method (#12478) 1 year ago
netlogtype all: update copyright and license headers 3 years ago
netmap all: add Node.HomeDERP int, phase out "127.3.3.40:$region" hack [capver 111] 11 months ago
nettype wgengine/magicsock, types/nettype, etc: finish ReadFromUDPAddrPort netip migration 3 years ago
opt types/opt: fix test to be agnostic to omitzero support (#14401) 12 months ago
persist cmd/viewer,all: consistently use "read-only" instead of "readonly" 11 months ago
prefs cmd/viewer,all: consistently use "read-only" instead of "readonly" 11 months ago
preftype cmd/tailscaled,*: add start of configuration file support 2 years ago
ptr all: update copyright and license headers 3 years ago
result types/result, util/lineiter: add package for a result type, use it 1 year ago
structs all: update copyright and license headers 3 years ago
tkatype types/tkatype: add test for MarshaledSignature's JSON format 2 years ago
views cmd/viewer,types/views,various: avoid allocations in pointer field getters whenever possible 11 months ago