Details
-
Bug
-
Resolution: Fixed
-
Major
-
5.0.0
-
Untriaged
-
Unknown
Description
go test -race ./... unveils 3 race conditions:
1-
WARNING: DATA RACE
|
Write at 0x00c420300198 by goroutine 122:
|
github.com/couchbase/query/execution.(*Fetch).RunOnce()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/fetch.go:50 +0xc8
|
|
Previous write at 0x00c420300198 by goroutine 109:
|
github.com/couchbase/query/execution.(*Fetch).RunOnce()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/fetch.go:50 +0xc8
|
|
Goroutine 122 (running) created at:
|
github.com/couchbase/query/execution.(*base).runConsumer.func1()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/base.go:213 +0x53a
|
sync.(*Once).Do()
|
/usr/local/Cellar/go/1.7.4/libexec/src/sync/once.go:44 +0xf2
|
github.com/couchbase/query/execution.(*base).runConsumer()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/base.go:248 +0xdd
|
github.com/couchbase/query/execution.(*InitialProject).RunOnce()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/project_initial.go:45 +0x69
|
|
Goroutine 109 (running) created at:
|
github.com/couchbase/query/execution.(*base).runConsumer.func1()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/base.go:213 +0x53a
|
sync.(*Once).Do()
|
/usr/local/Cellar/go/1.7.4/libexec/src/sync/once.go:44 +0xf2
|
github.com/couchbase/query/execution.(*base).runConsumer()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/base.go:248 +0xdd
|
github.com/couchbase/query/execution.(*InitialProject).RunOnce()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/project_initial.go:45 +0x69
|
2-
Read at 0x00c4200dc618 by goroutine 132:
|
github.com/couchbase/query/execution.(*base).switchPhase()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/base.go:422 +0x5f
|
github.com/couchbase/query/execution.(*PrimaryScan).scanEntries()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/scan_primary.go:199 +0x278
|
|
Previous write at 0x00c4200dc618 by goroutine 112:
|
github.com/couchbase/query/execution.(*base).switchPhase()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/base.go:423 +0x81
|
github.com/couchbase/query/execution.(*PrimaryScan).scanPrimary()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/scan_primary.go:80 +0x1a0
|
github.com/couchbase/query/execution.(*PrimaryScan).RunOnce.func1()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/scan_primary.go:55 +0x1c3
|
sync.(*Once).Do()
|
/usr/local/Cellar/go/1.7.4/libexec/src/sync/once.go:44 +0xf2
|
github.com/couchbase/query/execution.(*PrimaryScan).RunOnce()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/scan_primary.go:56 +0xb8
|
|
Goroutine 132 (running) created at:
|
github.com/couchbase/query/execution.(*PrimaryScan).scanPrimary()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/scan_primary.go:65 +0x12b
|
github.com/couchbase/query/execution.(*PrimaryScan).RunOnce.func1()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/scan_primary.go:55 +0x1c3
|
sync.(*Once).Do()
|
/usr/local/Cellar/go/1.7.4/libexec/src/sync/once.go:44 +0xf2
|
github.com/couchbase/query/execution.(*PrimaryScan).RunOnce()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/scan_primary.go:56 +0xb8
|
|
Goroutine 112 (running) created at:
|
github.com/couchbase/query/execution.(*base).runConsumer.func1()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/base.go:213 +0x53a
|
sync.(*Once).Do()
|
/usr/local/Cellar/go/1.7.4/libexec/src/sync/once.go:44 +0xf2
|
github.com/couchbase/query/execution.(*base).runConsumer()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/base.go:248 +0xdd
|
github.com/couchbase/query/execution.(*Fetch).RunOnce()
|
/Users/marcogreco/query/src/github.com/couchbase/query/execution/fetch.go:51 +0x11d
|
3-
Read at 0x00c4200316f8 by goroutine 106:
|
github.com/couchbase/query/server.(*BaseRequest).SetState()
|
/Users/marcogreco/query/src/github.com/couchbase/query/server/request.go:345 +0x4b
|
github.com/couchbase/query/server.(*BaseRequest).Stop()
|
/Users/marcogreco/query/src/github.com/couchbase/query/server/request.go:560 +0xd8
|
github.com/couchbase/query/server/http.(*httpRequest).Expire()
|
/Users/marcogreco/query/src/github.com/couchbase/query/server/http/service_response.go:138 +0xbe
|
github.com/couchbase/query/server.(*Server).serviceRequest.func2()
|
/Users/marcogreco/query/src/github.com/couchbase/query/server/server.go:519 +0x64
|
|
Previous write at 0x00c4200316f8 by goroutine 63:
|
github.com/couchbase/query/server.(*BaseRequest).SetState()
|
/Users/marcogreco/query/src/github.com/couchbase/query/server/request.go:352 +0xe2
|
github.com/couchbase/query/server.(*BaseRequest).Stop()
|
/Users/marcogreco/query/src/github.com/couchbase/query/server/request.go:560 +0xd8
|
github.com/couchbase/query/server/http.(*httpRequest).stopAndClose()
|
/Users/marcogreco/query/src/github.com/couchbase/query/server/http/service_response.go:142 +0x4e
|
github.com/couchbase/query/server/http.(*httpRequest).Execute()
|
/Users/marcogreco/query/src/github.com/couchbase/query/server/http/service_response.go:132 +0x21b
|
2- and 3- are easy fixes. 3- you could even say it's the race detector being overzealous.
1- is rather more serious and requires a bit of jiggery-pokery in the planner as well.