-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Open
Labels
defectSuspected defect such as a bug or regressionSuspected defect such as a bug or regression
Description
Observed behavior
Running our tests with the go 'race' flag at times produces this:
==================
WARNING: DATA RACE
Read at 0x00c000b72020 by goroutine 378:
github.com/nats-io/nats-server/v2/server.(*jetStream).checkBytesLimits()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/jetstream.go:2329 +0x1c7
github.com/nats-io/nats-server/v2/server.(*jetStream).checkLimits()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/jetstream.go:2302 +0x151
github.com/nats-io/nats-server/v2/server.(*jetStream).checkAllLimits()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/jetstream.go:2290 +0x272
github.com/nats-io/nats-server/v2/server.(*Account).jsNonClusteredStreamLimitsCheck()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/jetstream_api.go:3738 +0x233
github.com/nats-io/nats-server/v2/server.(*Server).jsStreamCreateRequest()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/jetstream_api.go:1629 +0xba4
github.com/nats-io/nats-server/v2/server.(*Server).jsStreamCreateRequest-fm()
<autogenerated>:1 +0xcb
github.com/nats-io/nats-server/v2/server.(*jetStream).apiDispatch()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/jetstream_api.go:876 +0xb0a
github.com/nats-io/nats-server/v2/server.(*jetStream).apiDispatch-fm()
<autogenerated>:1 +0xcb
github.com/nats-io/nats-server/v2/server.(*client).deliverMsg()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:3628 +0xfd0
github.com/nats-io/nats-server/v2/server.(*client).processMsgResults()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:4840 +0x1314
github.com/nats-io/nats-server/v2/server.(*client).processServiceImport()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:4576 +0x2099
github.com/nats-io/nats-server/v2/server.(*Account).addServiceImportSub.func1()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/accounts.go:2149 +0x4d
github.com/nats-io/nats-server/v2/server.(*client).deliverMsg()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:3622 +0x10a2
github.com/nats-io/nats-server/v2/server.(*client).processMsgResults()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:4840 +0x1314
github.com/nats-io/nats-server/v2/server.(*client).processInboundClientMsg()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:4141 +0x172c
github.com/nats-io/nats-server/v2/server.(*client).processInboundMsg()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:3967 +0x88
github.com/nats-io/nats-server/v2/server.(*client).parse()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/parser.go:511 +0x3597
github.com/nats-io/nats-server/v2/server.(*client).readLoop()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:1404 +0x1ae4
github.com/nats-io/nats-server/v2/server.(*Server).createClientEx.func1()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3380 +0x54
github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine.func1()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3880 +0x59
Previous write at 0x00c000b72020 by goroutine 396:
github.com/nats-io/nats-server/v2/server.(*jetStream).reserveStreamResources()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/jetstream.go:2487 +0x144
github.com/nats-io/nats-server/v2/server.(*Account).addStreamWithAssignment()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/stream.go:778 +0x3729
github.com/nats-io/nats-server/v2/server.(*Account).addStreamPedantic()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/stream.go:475 +0xbe4
github.com/nats-io/nats-server/v2/server.(*Server).jsStreamCreateRequest()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/jetstream_api.go:1635 +0xbae
github.com/nats-io/nats-server/v2/server.(*Server).jsStreamCreateRequest-fm()
<autogenerated>:1 +0xcb
github.com/nats-io/nats-server/v2/server.(*jetStream).apiDispatch()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/jetstream_api.go:876 +0xb0a
github.com/nats-io/nats-server/v2/server.(*jetStream).apiDispatch-fm()
<autogenerated>:1 +0xcb
github.com/nats-io/nats-server/v2/server.(*client).deliverMsg()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:3628 +0xfd0
github.com/nats-io/nats-server/v2/server.(*client).processMsgResults()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:4840 +0x1314
github.com/nats-io/nats-server/v2/server.(*client).processServiceImport()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:4576 +0x2099
github.com/nats-io/nats-server/v2/server.(*Account).addServiceImportSub.func1()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/accounts.go:2149 +0x4d
github.com/nats-io/nats-server/v2/server.(*client).deliverMsg()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:3622 +0x10a2
github.com/nats-io/nats-server/v2/server.(*client).processMsgResults()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:4840 +0x1314
github.com/nats-io/nats-server/v2/server.(*client).processInboundClientMsg()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:4141 +0x172c
github.com/nats-io/nats-server/v2/server.(*client).processInboundMsg()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:3967 +0x88
github.com/nats-io/nats-server/v2/server.(*client).parse()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/parser.go:511 +0x3597
github.com/nats-io/nats-server/v2/server.(*client).readLoop()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/client.go:1404 +0x1ae4
github.com/nats-io/nats-server/v2/server.(*Server).createClientEx.func1()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3380 +0x54
github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine.func1()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3880 +0x59
Goroutine 378 (running) created at:
github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3878 +0x1af
github.com/nats-io/nats-server/v2/server.(*Server).createClientEx()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3380 +0x1b3b
github.com/nats-io/nats-server/v2/server.(*Server).createClient()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3135 +0x44
github.com/nats-io/nats-server/v2/server.(*Server).AcceptLoop.func2()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:2746 +0xe
github.com/nats-io/nats-server/v2/server.(*Server).acceptConnections.func1()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:2798 +0x6d
github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine.func1()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3880 +0x59
Goroutine 396 (running) created at:
github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3878 +0x1af
github.com/nats-io/nats-server/v2/server.(*Server).createClientEx()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3380 +0x1b3b
github.com/nats-io/nats-server/v2/server.(*Server).createClient()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3135 +0x44
github.com/nats-io/nats-server/v2/server.(*Server).AcceptLoop.func2()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:2746 +0xe
github.com/nats-io/nats-server/v2/server.(*Server).acceptConnections.func1()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:2798 +0x6d
github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine.func1()
/builds/.go/pkg/mod/github.com/nats-io/nats-server/[email protected]/server/server.go:3880 +0x59
==================
context:
Several Jetstream consumers (each on a goroutine) that interact with a Jetstream KV store (read and write) and possibly publish a message back to a consumer each time they receive a message and Ack/Nack it.
Main goroutine publishing message to one of these consumers and performing Put on the Jetstream KV store.
Expected behavior
No race condition reports.
Server and client version
server: v2.11.9, client v1.45.0
&
server v2.11.3, client v1.42.0
Host environment
Dockerized local Linux environment, x86 CPU arch.
Steps to reproduce
No response
Metadata
Metadata
Assignees
Labels
defectSuspected defect such as a bug or regressionSuspected defect such as a bug or regression