apache / apache/pulsar-client-go
Access to partitionConsumer state not thread-safe.
- Dominant language
- Go
- Stars
- 745
- Forks
- 389
- Avg merge
- 3d 20h
- Merged PRs (30d)
- 3
Description
As part of my testing of the fix for #432, I have discovered a race condition in consumer_partition.go where access to the struct's `state` member is modified concurrently without synchronization:
```
WARNING: DATA RACE
Read at 0x00c00039a918 by goroutine 9:
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).clearQueueAndGetNextMessage()
/Users/me/pulsar-client-go/pulsar/consumer_partition.go:911 +0x68
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).clearReceiverQueue()
/Users/me/pulsar-client-go/pulsar/consumer_partition.go:932 +0x84
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).grabConn()
/Users/me/pulsar-client-go/pulsar/consumer_partition.go:861 +0x1312
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).reconnectToBroker()
/Users/me/pulsar-client-go/pulsar/consumer_partition.go:802 +0x238
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).runEventsLoop.func2()
/Users/me/pulsar-client-go/pulsar/consumer_partition.go:711 +0xab
Previous write at 0x00c00039a918 by goroutine 70:
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).internalClose()
/Users/me/pulsar-client-go/pulsar/consumer_partition.go:772 +0x68f
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).runEventsLoop()
/Users/me/pulsar-client-go/pulsar/consumer_partition.go:732 +0x29b
Goroutine 9 (running) created at:
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).runEventsLoop()
/Users/me/pulsar-client-go/pulsar/consumer_partition.go:704 +0x146
Goroutine 70 (finished) created at:
github.com/apache/pulsar-client-go/pulsar.newPartitionConsumer()
/Users/me/pulsar-client-go/pulsar/consumer_partition.go:184 +0xead
github.com/apache/pulsar-client-go/pulsar.(*consumer).internalTopicSubscribeToPartitions.func1()
/Users/me/pulsar-client-go/pulsar/consumer_impl.go:314 +0x7d3
```
Contributor guide
Assessment
This issue has not been assessed yet.