stats: defaultWorker can not be stopped
cornelk opened this issue · 1 comments
cornelk commented
Currently there is no way to stop the defaultWorker
goroutine in the go.opencensus.io/stats/view/
package.
This breaks adding a Goroutine leak detector to unit tests in packages that import the view package as it will always fail:
goleak: Errors on successful test run: found unexpected goroutines:
[Goroutine 21 in state select, with go.opencensus.io/stats/view.(*worker).start on top of the stack:
goroutine 21 [select]:
go.opencensus.io/stats/view.(*worker).start(0xc000272000)
/home/user/go/pkg/mod/go.opencensus.io@v0.23.0/stats/view/worker.go:276 +0x157
created by go.opencensus.io/stats/view.init.0
/home/user/go/pkg/mod/go.opencensus.io@v0.23.0/stats/view/worker.go:34 +0x87
markuspeloquin commented
This issue has been closed even though the fix isn't tagged for any release.
And just FYI, this fix cannot work with VerifyTestMain since you cannot trigger a cleanup before checking for leaks. You must basically reimplement it:
func TestMain(m *testing.M) {
exitcode := 0
defer func() { os.Exit(exitcode) }
exitcode = m.Run()
view.Stop()
if err := goleak.Find(); err != nil {
fmt.Fprintf(os.Stderr, "goleak: Errors on successful test run: %v\n", err)
exitcode = 1
}
}
IMO a package init()
shouldn't be starting threads.