Hello! Hit a data race on `partitionConsumer.lastD...
# dev
a
Hello! Hit a data race on
partitionConsumer.lastDequeuedMsg
in pulsar-client-go (reproduced on v0.18.0). Writer:
consumer.setLastDequeuedMsg
(consumer_impl.go:828) — runs on the app goroutine calling Reader.Next() Readers: partitionConsumer.clearReceiverQueue(consumer_partition.go:2162, 2165), plus consumer_partition.go:2326 and :2355 — run on the library's internal reconnect goroutine Resets at :1038 and :1112 are also unguarded. No synchronization between them. Race fires when the broker connection drops and the library reconnects while a Reader.Next() is in flight. Anyone seen this already / is a fix in flight? Otherwise happy to open an issue with the full report.
Copy code
WARNING: DATA RACE
Read at 0x00c02620d8a8 by goroutine 1922:
  <http://github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).clearReceiverQueue()|github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).clearReceiverQueue()>
      <http://github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:2162|github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:2162> +0x7b4
  <http://github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).grabConn()|github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).grabConn()>
      <http://github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:2032|github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:2032> +0x18a5
  <http://github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).reconnectToBroker.func1()|github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).reconnectToBroker.func1()>
      <http://github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:1924|github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:1924> +0x15d
  <http://github.com/apache/pulsar-client-go/pulsar/internal.Retry[go.shape.struct|github.com/apache/pulsar-client-go/pulsar/internal.Retry[go.shape.struct> {}]()
      <http://github.com/apache/pulsar-client-go@v0.18.0/pulsar/internal/retry.go:44|github.com/apache/pulsar-client-go@v0.18.0/pulsar/internal/retry.go:44> +0x13a
  <http://github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).reconnectToBroker()|github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).reconnectToBroker()>
      <http://github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:1956|github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:1956> +0x393
  <http://github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).runEventsLoop()|github.com/apache/pulsar-client-go/pulsar.(*partitionConsumer).runEventsLoop()>
      <http://github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:1814|github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:1814> +0x496
  <http://github.com/apache/pulsar-client-go/pulsar.newPartitionConsumer.gowrap2()|github.com/apache/pulsar-client-go/pulsar.newPartitionConsumer.gowrap2()>
      <http://github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:466|github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_partition.go:466> +0x2e

Previous write at 0x00c02620d8a8 by goroutine 1928:
  <http://github.com/apache/pulsar-client-go/pulsar.(*consumer).setLastDequeuedMsg()|github.com/apache/pulsar-client-go/pulsar.(*consumer).setLastDequeuedMsg()>
      <http://github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_impl.go:828|github.com/apache/pulsar-client-go@v0.18.0/pulsar/consumer_impl.go:828> +0x184
  <http://github.com/apache/pulsar-client-go/pulsar.(*reader).Next()|github.com/apache/pulsar-client-go/pulsar.(*reader).Next()>
      <http://github.com/apache/pulsar-client-go@v0.18.0/pulsar/reader_impl.go:172|github.com/apache/pulsar-client-go@v0.18.0/pulsar/reader_impl.go:172> +0x204
l
thanks for investigating the issue and sharing this. please search issues at https://github.com/apache/pulsar-client-go/issues and file a new issue if nothing matches.