nats-io / nats-server

High-Performance server for NATS.io, the cloud and edge native messaging system.
https://nats.io
Apache License 2.0
15.49k stars 1.38k forks source link

Race condition during tests #2588

Closed ripienaar closed 2 years ago

ripienaar commented 2 years ago

Defect

Some of the CLI tests very infrequently triggers this race condition:

==================
WARNING: DATA RACE
Write at 0x00c004ecc668 by goroutine 577:
  github.com/nats-io/nats-server/v2/server.(*Server).shutdownEventing()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/events.go:1187 +0x1c4
  github.com/nats-io/nats-server/v2/server.(*Server).Shutdown()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/server.go:1772 +0x84
  github.com/nats-io/jsm%2ego_test.TestStream_IsSourced()
      /home/runner/work/jsm.go/src/github.com/nats-io/jsm.go/streams_test.go:792 +0x87f
  testing.tRunner()
      /opt/hostedtoolcache/go/1.16.8/x64/src/testing/testing.go:1193 +0x202

Previous read at 0x00c004ecc668 by goroutine 428:
  github.com/nats-io/nats-server/v2/server.(*Server).eventsEnabled()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/events.go:545 +0xb3
  github.com/nats-io/nats-server/v2/server.(*consumer).subscribeInternal()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/consumer.go:866 +0x79
  github.com/nats-io/nats-server/v2/server.(*consumer).setLeader()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/consumer.go:766 +0x2ab
  github.com/nats-io/nats-server/v2/server.(*stream).addConsumerWithAssignment()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/consumer.go:673 +0x1d44
  github.com/nats-io/nats-server/v2/server.(*Server).jsStreamCreateRequest()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/jetstream_api.go:1272 +0xa66
  github.com/nats-io/nats-server/v2/server.(*Server).jsStreamCreateRequest-fm()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/jetstream_api.go:1094 +0xd2
  github.com/nats-io/nats-server/v2/server.(*jetStream).apiDispatch()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/jetstream_api.go:626 +0xc6e
  github.com/nats-io/nats-server/v2/server.(*jetStream).apiDispatch-fm()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/jetstream_api.go:602 +0xd2
  github.com/nats-io/nats-server/v2/server.(*client).deliverMsg()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/client.go:3147 +0x526
  github.com/nats-io/nats-server/v2/server.(*client).processMsgResults()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/client.go:4122 +0x870
  github.com/nats-io/nats-server/v2/server.(*client).processServiceImport()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/client.go:3945 +0x1004
  github.com/nats-io/nats-server/v2/server.(*Account).addServiceImportSub.func1()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/accounts.go:1873 +0x84
  github.com/nats-io/nats-server/v2/server.(*client).deliverMsg()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/client.go:3145 +0x658
  github.com/nats-io/nats-server/v2/server.(*client).processMsgResults()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/client.go:4122 +0x870
  github.com/nats-io/nats-server/v2/server.(*client).processInboundClientMsg()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/client.go:3611 +0xe84
  github.com/nats-io/nats-server/v2/server.(*client).processInboundMsg()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/client.go:3458 +0xbe
  github.com/nats-io/nats-server/v2/server.(*client).parse()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/parser.go:477 +0x3f44
  github.com/nats-io/nats-server/v2/server.(*client).readLoop()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/client.go:1174 +0x824
  github.com/nats-io/nats-server/v2/server.(*Server).createClient.func1()
      /home/runner/work/jsm.go/pkg/mod/github.com/nats-io/nats-server/v2@v2.6.2-0.20210930110517-c9eeab1d0df2/server/server.go:2448 +0x5c
derekcollison commented 2 years ago

@kozlovic could you take a look when you have some time?