Closed justindotpub closed 1 year ago
Dumping race conditions I discover here.
================== WARNING: DATA RACE Write at 0x00c0002bc068 by goroutine 9: github.com/fission-codes/go-bitset.(*BitSet).Union() /Users/justin/.go/pkg/mod/github.com/fission-codes/go-bitset@v0.0.0-20221117212908-fdb519e34c69/bitset.go:61 +0xc8 github.com/fission-codes/go-bloom.(*Filter[...]).Union() /Users/justin/.go/pkg/mod/github.com/fission-codes/go-bloom@v0.0.0-20221130203706-f6093fcbce27/bloom.go:160 +0xb8 github.com/fission-codes/go-car-mirror/filter.(*BloomFilter[...]).TryAddAll() /Users/justin/Code/car-pool/go-car-mirror/filter/filter.go:409 +0x794 github.com/fission-codes/go-car-mirror/filter.(*BloomFilter[...]).AddAll() /Users/justin/Code/car-pool/go-car-mirror/filter/filter.go:431 +0xdc github.com/fission-codes/go-car-mirror/filter.(*BloomFilter[...]).AddAll() <autogenerated>:1 +0x48 github.com/fission-codes/go-car-mirror/core.(*SourceSession[...]).HandleStatus() /Users/justin/Code/car-pool/go-car-mirror/core/core.go:753 +0x38c github.com/fission-codes/go-car-mirror/core.(*SourceSession[...]).HandleStatus() <autogenerated>:1 +0x60 github.com/fission-codes/go-car-mirror/batch.(*SimpleBatchStatusReceiver[...]).HandleStatus() /Users/justin/Code/car-pool/go-car-mirror/batch/batch.go:426 +0xe8 github.com/fission-codes/go-car-mirror/core_test_test.(*StatusChannel).listen() /Users/justin/Code/car-pool/go-car-mirror/core_test/carmirror_test.go:178 +0x234 github.com/fission-codes/go-car-mirror/core_test_test.MockBatchTransferReceive.func4() /Users/justin/Code/car-pool/go-car-mirror/core_test/carmirror_test.go:406 +0x78 Previous read at 0x00c0002bc068 by goroutine 12: github.com/fission-codes/go-bitset.(*BitSet).Test() /Users/justin/.go/pkg/mod/github.com/fission-codes/go-bitset@v0.0.0-20221117212908-fdb519e34c69/bitset.go:45 +0x200 github.com/fission-codes/go-bloom.(*Filter[...]).Test() /Users/justin/.go/pkg/mod/github.com/fission-codes/go-bloom@v0.0.0-20221130203706-f6093fcbce27/bloom.go:135 +0x1b4 github.com/fission-codes/go-car-mirror/filter.(*BloomFilter[...]).DoesNotContain() /Users/justin/Code/car-pool/go-car-mirror/filter/filter.go:385 +0xa4 github.com/fission-codes/go-car-mirror/filter.(*BloomFilter[...]).DoesNotContain() <autogenerated>:1 +0x54 github.com/fission-codes/go-car-mirror/core.(*SourceSession[...]).Run() /Users/justin/Code/car-pool/go-car-mirror/core/core.go:702 +0xbe8 github.com/fission-codes/go-car-mirror/batch.(*SourceResponder[...]).startSourceSession.func1() /Users/justin/Code/car-pool/go-car-mirror/batch/responder.go:195 +0xa8 Goroutine 9 (running) created at: github.com/fission-codes/go-car-mirror/core_test_test.MockBatchTransferReceive() /Users/justin/Code/car-pool/go-car-mirror/core_test/carmirror_test.go:404 +0x5bc github.com/fission-codes/go-car-mirror/core_test_test.TestMockTransferToEmptyStoreSingleBatchNoDelayReceive() /Users/justin/Code/car-pool/go-car-mirror/core_test/carmirror_test.go:479 +0x214 testing.tRunner() /nix/store/6q1x08acxmpcwx9f9zvn0xkijlf5d3h1-go-1.19.4/share/go/src/testing/testing.go:1446 +0x188 testing.(*T).Run.func1() /nix/store/6q1x08acxmpcwx9f9zvn0xkijlf5d3h1-go-1.19.4/share/go/src/testing/testing.go:1493 +0x40 Goroutine 12 (running) created at: github.com/fission-codes/go-car-mirror/batch.(*SourceResponder[...]).startSourceSession() /Users/justin/Code/car-pool/go-car-mirror/batch/responder.go:194 +0x444 github.com/fission-codes/go-car-mirror/batch.(*SourceResponder[...]).SourceSessionData.func1() /Users/justin/Code/car-pool/go-car-mirror/batch/responder.go:161 +0x90 github.com/fission-codes/go-car-mirror/util.(*SynchronizedMap[...]).GetOrInsert() /Users/justin/Code/car-pool/go-car-mirror/util/util.go:181 +0xc8 github.com/fission-codes/go-car-mirror/batch.(*SourceResponder[...]).SourceSessionData() /Users/justin/Code/car-pool/go-car-mirror/batch/responder.go:158 +0xd8 github.com/fission-codes/go-car-mirror/batch.(*SourceResponder[...]).Receiver() /Users/justin/Code/car-pool/go-car-mirror/batch/responder.go:179 +0x80 github.com/fission-codes/go-car-mirror/core_test_test.MockBatchTransferReceive.func2() /Users/justin/Code/car-pool/go-car-mirror/core_test/carmirror_test.go:387 +0x40 github.com/fission-codes/go-car-mirror/core_test_test.(*StatusChannel).Receiver() /Users/justin/Code/car-pool/go-car-mirror/core_test/carmirror_test.go:162 +0x270 github.com/fission-codes/go-car-mirror/core_test_test.(*StatusChannel).listen() /Users/justin/Code/car-pool/go-car-mirror/core_test/carmirror_test.go:172 +0x254 github.com/fission-codes/go-car-mirror/core_test_test.MockBatchTransferReceive.func4() /Users/justin/Code/car-pool/go-car-mirror/core_test/carmirror_test.go:406 +0x78 ==================
I have addressed all known race conditions now, and updated tests to always run in race detection mode.
Dumping race conditions I discover here.