Unstable TestGetKeaDaemonsForUpdate test
The TestGetKeaDaemonsForUpdate
test rarely fails due to a race condition.
Logs:
=== RUN TestGetKeaDaemonsForUpdate
time="2022-08-01T10:03:26Z" level=info msg="Checking connection to database"
time="2022-08-01T10:03:27Z" level=info msg="Checking connection to database"
coverage: 19.9% of statements
panic: test timed out after 10m0s
goroutine 352 [running]:
testing.(*M).startAlarm.func1()
/builds/isc-projects/stork/tools/golang/go/src/testing/testing.go:2029 +0xbb
created by time.goFunc
/builds/isc-projects/stork/tools/golang/go/src/time/sleep.go:176 +0x48
goroutine 1 [chan receive, 9 minutes]:
testing.(*T).Run(0xc0002bc1a0, {0xc21c22, 0x1a}, 0xc6c190)
/builds/isc-projects/stork/tools/golang/go/src/testing/testing.go:1487 +0x750
testing.runTests.func1(0x0?)
/builds/isc-projects/stork/tools/golang/go/src/testing/testing.go:1839 +0x9a
testing.tRunner(0xc0002bc1a0, 0xc0001b7b68)
/builds/isc-projects/stork/tools/golang/go/src/testing/testing.go:1439 +0x214
testing.runTests(0xc0002486e0?, {0x1064120, 0xd8, 0xd8}, {0x40?, 0x7fb9f10c3eb8?, 0x10683a0?})
/builds/isc-projects/stork/tools/golang/go/src/testing/testing.go:1837 +0x7e5
testing.(*M).Run(0xc0002486e0)
/builds/isc-projects/stork/tools/golang/go/src/testing/testing.go:1719 +0xa72
main.main()
_testmain.go:589 +0x3aa
goroutine 317 [sync.Cond.Wait, 9 minutes]:
sync.runtime_notifyListWait(0xc00057a790, 0x0)
/builds/isc-projects/stork/tools/golang/go/src/runtime/sema.go:513 +0x13d
sync.(*Cond).Wait(0xc00057a780)
/builds/isc-projects/stork/tools/golang/go/src/sync/cond.go:56 +0xa5
isc.org/stork/server/database/model.TestGetKeaDaemonsForUpdate(0x0?)
/builds/isc-projects/stork/backend/server/database/model/daemon_test.go:597 +0x15f2
testing.tRunner(0xc0000fcb60, 0xc6c190)
/builds/isc-projects/stork/tools/golang/go/src/testing/testing.go:1439 +0x214
created by testing.(*T).Run
/builds/isc-projects/stork/tools/golang/go/src/testing/testing.go:1486 +0x725
goroutine 128 [IO wait, 9 minutes]:
internal/poll.runtime_pollWait(0x7fb9f10dcc18, 0x72)
/builds/isc-projects/stork/tools/golang/go/src/runtime/netpoll.go:302 +0x89
internal/poll.(*pollDesc).wait(0xc00020c918, 0xc0005ea000?, 0x0)
/builds/isc-projects/stork/tools/golang/go/src/internal/poll/fd_poll_runtime.go:83 +0xbd
internal/poll.(*pollDesc).waitRead(...)
/builds/isc-projects/stork/tools/golang/go/src/internal/poll/fd_poll_runtime.go:88
internal/poll.(*FD).Read(0xc00020c900, {0xc0005ea000, 0x100000, 0x100000})
/builds/isc-projects/stork/tools/golang/go/src/internal/poll/fd_unix.go:167 +0x415
net.(*netFD).Read(0xc00020c900, {0xc0005ea000, 0x100000, 0x100000})
/builds/isc-projects/stork/tools/golang/go/src/net/fd_posix.go:55 +0x51
net.(*conn).Read(0xc0000ae0a8, {0xc0005ea000, 0x100000, 0x100000})
/builds/isc-projects/stork/tools/golang/go/src/net/net.go:183 +0xb1
github.com/go-pg/pg/v10/internal/pool.(*BufReader).read(...)
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/internal/pool/reader_buf.go:428
github.com/go-pg/pg/v10/internal/pool.(*BufReader).fill(0xc0000ea000)
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/internal/pool/reader_buf.go:120 +0x38d
github.com/go-pg/pg/v10/internal/pool.(*BufReader).ReadByte(0xc0000ea000)
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/internal/pool/reader_buf.go:297 +0x8c
github.com/go-pg/pg/v10.readMessageType(0xc0000f2010)
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/messages.go:1386 +0x45
github.com/go-pg/pg/v10.readSimpleQueryData({0xd24a40, 0xc000146008}, 0xc0000f2010, {0xbf6ca0, 0xc00056a2d0})
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/messages.go:909 +0x114
github.com/go-pg/pg/v10.(*baseDB).simpleQueryData.func1(0x1059da0?)
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/base.go:566 +0x72
github.com/go-pg/pg/v10/internal/pool.(*Conn).WithReader(0xc000114a50, {0xd24a40, 0xc000146008}, 0x1?, 0xc000133798)
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/internal/pool/conn.go:90 +0x2d5
github.com/go-pg/pg/v10.(*baseDB).simpleQueryData(0xc000114730, {0xd24a40, 0xc000146008}, 0x94a2aa?, {0xbf6ca0, 0xc00056a2d0}, 0xc000146008?)
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/base.go:564 +0x19e
github.com/go-pg/pg/v10.(*baseDB).query.func1({0xd24a40, 0xc000146008}, 0xc000146008?)
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/base.go:316 +0xb3
github.com/go-pg/pg/v10.(*baseDB).withConn(0xc000114730, {0xd24a40?, 0xc000146008}, 0xc000133b00)
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/base.go:173 +0x2fd
github.com/go-pg/pg/v10.(*baseDB).query(0xc000114730, {0xd24a40, 0xc000146008}, {0xbf6ca0, 0xc00056a2d0}, {0xbbd040, 0xc0001f2470}, {0xc0001f24d0, 0x1, 0x1})
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/base.go:315 +0x5e9
github.com/go-pg/pg/v10.(*baseDB).QueryContext(...)
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/base.go:290
github.com/go-pg/pg/v10/orm.(*Query).returningQuery(0xc0000001e0, {0xd24a40, 0xc000146008}, {0xd25ec8?, 0xc00056a2d0}, {0xbbd040, 0xc0001f2470})
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/orm/query.go:1163 +0x2b3
github.com/go-pg/pg/v10/orm.(*Query).ForceDelete(0xc0000001e0, {0x0, 0x0, 0x0})
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/orm/query.go:1223 +0x29e
github.com/go-pg/pg/v10/orm.(*Query).Delete(0xc0000001e0, {0x0, 0x0, 0x0})
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/orm/query.go:1180 +0xbc5
isc.org/stork/server/database/model.TestGetKeaDaemonsForUpdate.func1()
/builds/isc-projects/stork/backend/server/database/model/daemon_test.go:593 +0x171
created by isc.org/stork/server/database/model.TestGetKeaDaemonsForUpdate
/builds/isc-projects/stork/backend/server/database/model/daemon_test.go:585 +0x15e5
goroutine 348 [chan receive, 2 minutes]:
github.com/go-pg/pg/v10/internal/pool.(*ConnPool).reaper(0xc000195680, 0x0?)
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/internal/pool/pool.go:441 +0xfe
created by github.com/go-pg/pg/v10/internal/pool.NewConnPool
/builds/isc-projects/stork/tools/golang/gopath/pkg/mod/github.com/go-pg/pg/v10@v10.10.6/internal/pool/pool.go:103 +0x386
FAIL isc.org/stork/server/database/model 600.033s
The execution is stuck on the cond.Wait()
call (backend/server/database/model/daemon_test.go:584-597):
// Actually run the goroutine.
go func() {
defer wg.Done()
// The main thread is waiting for this conditional to ensure that the
// goroutine is started before the test continues.
cond.Signal()
// Attempt to delete the app while the main transaction is in progress
// and the daemons are locked for update. This should block until the
// main transaction is committed or rolled back.
result, _ = db.Model(app).WherePK().Delete()
}()
// Wait for the goroutine to begin.
cond.Wait()