qri-io / qri

you're invited to a data party!
https://qri.io
GNU General Public License v3.0
1.1k stars 66 forks source link

test(flake): sometimes there's a concurent map read on the orchestrator #1931

Open Arqu opened 2 years ago

Arqu commented 2 years ago

Got the log bellow a couple times while running tests, would like to sort out these concurrent map read/writes for stability reasons on cloud.

?       github.com/qri-io/qri   [no test files]
ok      github.com/qri-io/qri/api       3.172s
?       github.com/qri-io/qri/api/spec  [no test files]
ok      github.com/qri-io/qri/api/util  0.705s
ok      github.com/qri-io/qri/auth      1.941s
ok      github.com/qri-io/qri/auth/key  0.416s
ok      github.com/qri-io/qri/auth/key/test     0.677s
ok      github.com/qri-io/qri/auth/token        1.235s
?       github.com/qri-io/qri/auth/token/spec   [no test files]
fatal error: concurrent map read and map write

goroutine 53 [running]:
runtime.throw(0x56384ee, 0x21)
        /Users/arqu/sdk/go1.16.7/src/runtime/panic.go:1117 +0x72 fp=0xc00033a5a8 sp=0xc00033a578 pc=0x40390b2
runtime.mapaccess2_faststr(0x52bb5e0, 0xc00185dfb0, 0xc00004a3c0, 0x24, 0xc000b0c3c8, 0xc0002e0001)
        /Users/arqu/sdk/go1.16.7/src/runtime/map_faststr.go:116 +0x4a5 fp=0xc00033a618 sp=0xc00033a5a8 pc=0x4015305
github.com/qri-io/qri/automation/trigger.(*RuntimeListener).shouldTrigger(0xc0001ffdd0, 0x597b658, 0xc00018a008, 0xc00004a3c0, 0x24, 0x5545101, 0xa, 0xc000b1a020, 0x3, 0x0, ...)
        /Users/arqu/dev/qri/qri/automation/trigger/runtime.go:204 +0x99 fp=0xc00033a670 sp=0xc00033a618 pc=0x4699299
github.com/qri-io/qri/automation/trigger.(*RuntimeListener).start.func1(0xc0001ffdd0, 0x597b658, 0xc00018a008)
        /Users/arqu/dev/qri/qri/automation/trigger/runtime.go:180 +0x189 fp=0xc00033a7c8 sp=0xc00033a670 pc=0x469a409
runtime.goexit()
        /Users/arqu/sdk/go1.16.7/src/runtime/asm_amd64.s:1371 +0x1 fp=0xc00033a7d0 sp=0xc00033a7c8 pc=0x4074381
created by github.com/qri-io/qri/automation/trigger.(*RuntimeListener).start
        /Users/arqu/dev/qri/qri/automation/trigger/runtime.go:172 +0x53

goroutine 1 [chan receive]:
testing.(*T).Run(0xc000199380, 0x558cd09, 0xf, 0x57b1ce8, 0x4098c86)
        /Users/arqu/sdk/go1.16.7/src/testing/testing.go:1239 +0x2da
testing.runTests.func1(0xc000199200)
        /Users/arqu/sdk/go1.16.7/src/testing/testing.go:1511 +0x78
testing.tRunner(0xc000199200, 0xc00093fde0)
        /Users/arqu/sdk/go1.16.7/src/testing/testing.go:1193 +0xef
testing.runTests(0xc000126990, 0x66108e0, 0x2, 0x2, 0xc04cda14f74f2630, 0x8bb57c6369, 0x6652f80, 0x55529d6)
        /Users/arqu/sdk/go1.16.7/src/testing/testing.go:1509 +0x2fe
testing.(*M).Run(0xc000290400, 0x0)
        /Users/arqu/sdk/go1.16.7/src/testing/testing.go:1417 +0x1eb
main.main()
        _testmain.go:45 +0x138

goroutine 19 [select]:
github.com/ipfs/go-log/writer.(*MirrorWriter).logRoutine(0xc000184ed0)
        /Users/arqu/go/pkg/mod/github.com/ipfs/go-log@v1.0.5/writer/writer.go:71 +0x106
created by github.com/ipfs/go-log/writer.NewMirrorWriter
        /Users/arqu/go/pkg/mod/github.com/ipfs/go-log@v1.0.5/writer/writer.go:36 +0xb9

goroutine 37 [select]:
go.opencensus.io/stats/view.(*worker).start(0xc00012a500)
        /Users/arqu/go/pkg/mod/go.opencensus.io@v0.23.0/stats/view/worker.go:276 +0xcd
created by go.opencensus.io/stats/view.init.0
        /Users/arqu/go/pkg/mod/go.opencensus.io@v0.23.0/stats/view/worker.go:34 +0x68

goroutine 48 [chan receive (nil chan)]:
github.com/qri-io/qri/automation/trigger.(*RuntimeListener).Start.func1(0x597b658, 0xc00018a008, 0xc0001ffdd0)
        /Users/arqu/dev/qri/qri/automation/trigger/runtime.go:220 +0x48
created by github.com/qri-io/qri/automation/trigger.(*RuntimeListener).Start
        /Users/arqu/dev/qri/qri/automation/trigger/runtime.go:219 +0x57

goroutine 32 [chan receive (nil chan)]:
github.com/qri-io/qri/event.NewBus.func1(0x597b658, 0xc00018a008, 0xc000432910)
        /Users/arqu/dev/qri/qri/event/event.go:133 +0x4c
created by github.com/qri-io/qri/event.NewBus
        /Users/arqu/dev/qri/qri/event/event.go:132 +0xcb

goroutine 31 [chan receive]:
github.com/qri-io/qri/automation.TestIntegration(0xc000199380)
        /Users/arqu/dev/qri/qri/automation/orchestrator_test.go:264 +0x1fa5
testing.tRunner(0xc000199380, 0x57b1ce8)
        /Users/arqu/sdk/go1.16.7/src/testing/testing.go:1193 +0xef
created by testing.(*T).Run
        /Users/arqu/sdk/go1.16.7/src/testing/testing.go:1238 +0x2b3

goroutine 66 [chan receive]:
github.com/qri-io/qri/automation.(*Orchestrator).handleContextClose(0xc0002a77a0, 0x597b620, 0xc0006f52c0)
        /Users/arqu/dev/qri/qri/automation/orchestrator.go:201 +0x65
created by github.com/qri-io/qri/automation.NewOrchestrator
        /Users/arqu/dev/qri/qri/automation/orchestrator.go:142 +0x4b6

goroutine 75 [runnable]:
github.com/qri-io/qri/automation.errOnTimeout.func1(0xc0001466c0, 0xc000199380, 0x566e0af, 0x64, 0xc0001aa0c0)
        /Users/arqu/dev/qri/qri/automation/orchestrator_test.go:279 +0xa5
created by github.com/qri-io/qri/automation.errOnTimeout
        /Users/arqu/dev/qri/qri/automation/orchestrator_test.go:278 +0x89
FAIL    github.com/qri-io/qri/automation        2.129s