hashicorp / memberlist

Golang package for gossip based membership and failure detection
Mozilla Public License 2.0
3.61k stars 435 forks source link

Data race in memberlist.go #272

Open lni opened 2 years ago

lni commented 2 years ago

Got the following error when using memberlist.

WARNING: DATA RACE
Read at 0x00c037267b58 by goroutine 31139:
  github.com/hashicorp/memberlist.(*Memberlist).Leave()
      /Users/lni/src/matrixone/vendor/github.com/hashicorp/memberlist/memberlist.go:662 +0x22d
  github.com/lni/dragonboat/v4/internal/registry.(*gossipManager).Close()
      /Users/lni/src/matrixone/vendor/github.com/lni/dragonboat/v4/internal/registry/gossip.go:376 +0x8d
  github.com/lni/dragonboat/v4/internal/registry.(*GossipRegistry).Close()
      /Users/lni/src/matrixone/vendor/github.com/lni/dragonboat/v4/internal/registry/gossip.go:124 +0x45
  github.com/lni/dragonboat/v4.(*NodeHost).Close()
      /Users/lni/src/matrixone/vendor/github.com/lni/dragonboat/v4/nodehost.go:416 +0x5b2
  github.com/matrixorigin/matrixone/pkg/logservice.(*store).close()
      /Users/lni/src/matrixone/pkg/logservice/store.go:161 +0xb8
  github.com/matrixorigin/matrixone/pkg/logservice.(*Service).Close()
      /Users/lni/src/matrixone/pkg/logservice/service.go:147 +0x148
  github.com/matrixorigin/matrixone/pkg/logservice.TestGossipConvergeDelay.func1.1()
      /Users/lni/src/matrixone/pkg/logservice/service_test.go:627 +0x46

Previous write at 0x00c037267b58 by goroutine 5392:
  github.com/hashicorp/memberlist.(*Memberlist).refute()
      /Users/lni/src/matrixone/vendor/github.com/hashicorp/memberlist/state.go:900 +0xa4
  github.com/hashicorp/memberlist.(*Memberlist).suspectNode()
      /Users/lni/src/matrixone/vendor/github.com/hashicorp/memberlist/state.go:1172 +0x9a5
  github.com/hashicorp/memberlist.(*Memberlist).handleSuspect()
      /Users/lni/src/matrixone/vendor/github.com/hashicorp/memberlist/net.go:687 +0x206
  github.com/hashicorp/memberlist.(*Memberlist).packetHandler()
      /Users/lni/src/matrixone/vendor/github.com/hashicorp/memberlist/net.go:511 +0x1e4
  github.com/hashicorp/memberlist.newMemberlist.func5()
      /Users/lni/src/matrixone/vendor/github.com/hashicorp/memberlist/memberlist.go:229 +0x39