substratusai / lingo

Lightweight ML model proxy and autoscaler for kubernetes
https://www.substratus.ai
Apache License 2.0
102 stars 6 forks source link

Race: make-race failing on local machine #53

Closed nstogner closed 6 months ago

nstogner commented 6 months ago
> make test-race

go test -mod=readonly -race ./pkg/...
?       github.com/substratusai/lingo/pkg/autoscaler    [no test files]
?       github.com/substratusai/lingo/pkg/movingaverage [no test files]
?       github.com/substratusai/lingo/pkg/leader        [no test files]
?       github.com/substratusai/lingo/pkg/stats [no test files]
ok      github.com/substratusai/lingo/pkg/deployments   2.143s
==================
WARNING: DATA RACE
Read at 0x00c0002e4348 by goroutine 40:
  runtime.raceread()
      <autogenerated>:1 +0x1e
  github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4.1()
      /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:43 +0x46
  github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4()
      /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:56 +0x487
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:1595 +0x238
  testing.(*T).Run.func1()
      /usr/local/go/src/testing/testing.go:1648 +0x44

Previous write at 0x00c0002e4348 by goroutine 42:
  runtime.racewrite()
      <autogenerated>:1 +0x1e
  github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4.1.1()
      /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:48 +0x46

Goroutine 40 (running) created at:
  testing.(*T).Run()
      /usr/local/go/src/testing/testing.go:1648 +0x82a
  github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess()
      /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:33 +0x1cb
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:1595 +0x238
  testing.(*T).Run.func1()
      /usr/local/go/src/testing/testing.go:1648 +0x44

Goroutine 42 (running) created at:
  github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4.1()
      /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:46 +0x64
  github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4()
      /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:55 +0x3e6
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:1595 +0x238
  testing.(*T).Run.func1()
      /usr/local/go/src/testing/testing.go:1648 +0x44
==================
panic: sync: WaitGroup is reused before previous Wait has returned

goroutine 954 [running]:
sync.(*WaitGroup).Wait(0xc0002e4340)
        /usr/local/go/src/sync/waitgroup.go:118 +0x105
github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4.1.1()
        /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:48 +0x47
created by github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4.1 in goroutine 71
        /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:46 +0x65
panic: sync: WaitGroup is reused before previous Wait has returned

goroutine 1024 [running]:
sync.(*WaitGroup).Wait(0xc0002e4340)
        /usr/local/go/src/sync/waitgroup.go:118 +0x105
github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4.1.1()
        /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:48 +0x47
created by github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4.1 in goroutine 71
        /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:46 +0x65
panic: sync: WaitGroup is reused before previous Wait has returned

goroutine 82 [running]:
sync.(*WaitGroup).Wait(0xc0002e4340)
        /usr/local/go/src/sync/waitgroup.go:118 +0x105
github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4.1.1()
        /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:48 +0x47
created by github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4.1 in goroutine 71
        /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:46 +0x65
panic: sync: WaitGroup is reused before previous Wait has returned

goroutine 88 [running]:
sync.(*WaitGroup).Wait(0xc0002e4340)
        /usr/local/go/src/sync/waitgroup.go:118 +0x105
github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4.1.1()
        /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:48 +0x47
created by github.com/substratusai/lingo/pkg/endpoints.TestConcurrentAccess.func4.1 in goroutine 71
        /Users/nick/work/substratusai/lingo/pkg/endpoints/endpoints_test.go:46 +0x65
FAIL    github.com/substratusai/lingo/pkg/endpoints     1.851s
ok      github.com/substratusai/lingo/pkg/proxy 3.738s
ok      github.com/substratusai/lingo/pkg/queue 2.793s
FAIL
make: *** [test-race] Error 1