apache / apache/pulsar-client-go
Access to partitionConsumer pc.conn not thread-safe
- Dominant language
- Go
- Stars
- 745
- Forks
- 389
- Avg merge
- 3d 20h
- Merged PRs (30d)
- 3
Description
While testing the #467, the test randomly result in data race on `pc.conn`:
```
time="2021-02-17T03:32:51Z" level=info msg="[Connected consumer]" consumerID=2 name= subscription=reader-qbtae topic=my-topic-470837143
time="2021-02-17T03:32:51Z" level=info msg="[Reconnected consumer to broker]" consumerID=2 name= subscription=reader-qbtae topic=my-topic-470837143
==================
WARNING: DATA RACE
Read at 0x00c00f0c0628 by goroutine 163:
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).requestGetLastMessageID()
/pulsar-client-go/pulsar/consumer_partition.go:279 +0x281
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).internalGetLastMessageID()
/pulsar-client-go/pulsar/consumer_partition.go:270 +0xed
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).runEventsLoop()
/pulsar-client-go/pulsar/consumer_partition.go:802 +0x36d
Previous write at 0x00c00f0c0628 by goroutine 306:
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).grabConn()
/pulsar-client-go/pulsar/consumer_partition.go:970 +0x1875
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).reconnectToBroker()
/pulsar-client-go/pulsar/consumer_partition.go:883 +0x2db
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).runEventsLoop.func2()
/pulsar-client-go/pulsar/consumer_partition.go:787 +0xbe
Goroutine 163 (running) created at:
github.com/apache/pulsar-client-go/pulsar.newPartitionConsumer()
/pulsar-client-go/pulsar/consumer_partition.go:208 +0xf46
github.com/apache/pulsar-client-go/pulsar.newReader()
/pulsar-client-go/pulsar/reader_impl.go:105 +0x92a
github.com/apache/pulsar-client-go/pulsar.(*client).CreateReader()
/pulsar-client-go/pulsar/client_impl.go:152 +0xcb
github.com/apache/pulsar-client-go/pulsar.TestReaderLatestInclusiveHasNext()
/pulsar-client-go/pulsar/reader_test.go:571 +0x90d
testing.tRunner()
/usr/local/go/src/testing/testing.go:1050 +0x1eb
Goroutine 306 (running) created at:
github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).runEventsLoop()
/pulsar-client-go/pulsar/consumer_partition.go:780 +0x174
==================
time="2021-02-17T03:32:51Z" level=info msg="Closing consumer=2" consumerID=2 name= subscription=reader-qbtae topic=my-topic-470837143
time="2021-02-17T03:32:51Z" level=info msg="[Closed consumer]" consumerID=2 name= subscription=reader-qbtae topic=my-topic-470837143
time="2021-02-17T03:32:51Z" level=info msg="[Closing producer]" producerID=1 producer_name=standalone-0-169 topic="persistent://public/default/my-topic-470837143"
time="2021-02-17T03:32:51Z" level=info msg="[Closed producer]" producerID=1 producer_name=standalone-0-169 topic="persistent://public/default/my-topic-470837143"
time="2021-02-17T03:32:51Z" level=info msg="Closing consumer=1" consumerID=1 name= subscription=reader-feqpl topic=my-topic-470837143
time="2021-02-17T03:32:51Z" level=info msg="[Closed consumer]" consumerID=1 name= subscription=reader-feqpl topic=my-topic-470837143
--- FAIL: TestReaderLatestInclusiveHasNext (0.23s)
Error: testing.go:965: race detected during execution of test
```
Contributor guide
Assessment
This issue has not been assessed yet.