AleksL
05/13/2026, 9:55 AMpartitionConsumer.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.AleksL
05/13/2026, 9:56 AMWARNING: 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> +0x204Lari Hotari
05/13/2026, 10:02 AM