apache / apache/pulsar-client-go
[Flaky-test] producetest.TestSendContextExpired
- Dominant language
- Go
- Stars
- 745
- Forks
- 389
- Avg merge
- 3d 20h
- Merged PRs (30d)
- 3
Description
#### Actual behavior
`TestSendContextExpired()` is failed by race detected during execution of test.
#### Example failure
https://github.com/apache/pulsar-client-go/actions/runs/3258029989/jobs/5349767461
#### Exception stacktrace
```
==================
WARNING: DATA RACE
Write at 0x00c000405100 by goroutine 320:
encoding/binary.bigEndian.PutUint32()
/usr/local/go/src/encoding/binary/binary.go:118 +0xe4
github.com/apache/pulsar-client-go/pulsar/internal.(*buffer).WriteUint32()
/pulsar-client-go/pulsar/internal/buffer.go:192 +0x93
github.com/apache/pulsar-client-go/pulsar/internal.serializeMessage()
/pulsar-client-go/pulsar/internal/commands.go:279 +0x4e1
github.com/apache/pulsar-client-go/pulsar/internal.(*batchContainer).Flush()
/pulsar-client-go/pulsar/internal/batch_builder.go:268 +0x5fb
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).internalFlushCurrentBatch()
/pulsar-client-go/pulsar/producer_partition.go:814 +0xe8
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).runEventsLoop()
/pulsar-client-go/pulsar/producer_partition.go:460 +0x215
Previous read at 0x00c000405100 by goroutine 281:
internal/race.ReadRange()
/usr/local/go/src/internal/race/race.go:45 +0xb0
syscall.Write()
/usr/local/go/src/syscall/syscall_unix.go:215 +0x94
internal/poll.(*FD).Write.func1()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0xf9
internal/poll.ignoringEINTR()
/usr/local/go/src/internal/poll/fd_unix.go:567 +0x38
internal/poll.(*FD).Write()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0x20b
net.(*netFD).Write()
/usr/local/go/src/net/fd_posix.go:73 +0x65
net.(*conn).Write()
/usr/local/go/src/net/net.go:194 +0xeb
net.(*TCPConn).Write()
:1 +0x69
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).internalWriteData()
/pulsar-client-go/pulsar/internal/connection.go:479 +0x1fc
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).run()
/pulsar-client-go/pulsar/internal/connection.go:421 +0x5c8
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start.func1()
/pulsar-client-go/pulsar/internal/connection.go:227 +0xc4
Goroutine 320 (running) created at:
github.com/apache/pulsar-client-go/pulsar.newPartitionProducer()
/pulsar-client-go/pulsar/producer_partition.go:201 +0x1393
github.com/apache/pulsar-client-go/pulsar.(*producer).internalCreatePartitionsProducers.func1()
/pulsar-client-go/pulsar/producer_impl.go:245 +0x105
Goroutine 281 (finished) created at:
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start()
/pulsar-client-go/pulsar/internal/connection.go:223 +0x7a
github.com/apache/pulsar-client-go/pulsar/internal.(*connectionPool).GetConnection()
/pulsar-client-go/pulsar/internal/connection_pool.go:109 +0x3a5
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).Request()
/pulsar-client-go/pulsar/internal/rpc_client.go:120 +0xed
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).RequestToAnyBroker()
/pulsar-client-go/pulsar/internal/rpc_client.go:103 +0x210
github.com/apache/pulsar-client-go/pulsar/internal.(*lookupService).GetPartitionedTopicMetadata()
/pulsar-client-go/pulsar/internal/lookup_service.go:215 +0x2a1
github.com/apache/pulsar-client-go/pulsar.(*client).TopicPartitions()
/pulsar-client-go/pulsar/client_impl.go:209 +0xfa
github.com/apache/pulsar-client-go/pulsar.(*consumer).internalTopicSubscribeToPartitions()
/pulsar-client-go/pulsar/consumer_impl.go:283 +0xcf
github.com/apache/pulsar-client-go/pulsar.newInternalConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:235 +0x555
github.com/apache/pulsar-client-go/pulsar.newConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:175 +0x6af
github.com/apache/pulsar-client-go/pulsar.(*client).Subscribe()
/pulsar-client-go/pulsar/client_impl.go:177 +0xd7
github.com/apache/pulsar-client-go/pulsar.TestSendTimeout()
/pulsar-client-go/pulsar/producer_test.go:1039 +0x338
testing.tRunner()
/usr/local/go/src/testing/testing.go:1123 +0x202
==================
==================
WARNING: DATA RACE
Write at 0x00c000405111 by goroutine 320:
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.encodeVarintPulsarApi()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:13021 +0x111
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.(*CommandSend).MarshalToSizedBuffer()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:9629 +0x686
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.(*BaseCommand).MarshalToSizedBuffer()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:12945 +0x4cdd
github.com/apache/pulsar-client-go/pulsar/internal.serializeMessage()
/pulsar-client-go/pulsar/internal/commands.go:285 +0x5a4
github.com/apache/pulsar-client-go/pulsar/internal.(*batchContainer).Flush()
/pulsar-client-go/pulsar/internal/batch_builder.go:268 +0x5fb
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).internalFlushCurrentBatch()
/pulsar-client-go/pulsar/producer_partition.go:814 +0xe8
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).runEventsLoop()
/pulsar-client-go/pulsar/producer_partition.go:460 +0x215
Previous read at 0x00c000405110 by goroutine 281:
internal/race.ReadRange()
/usr/local/go/src/internal/race/race.go:45 +0xb0
syscall.Write()
/usr/local/go/src/syscall/syscall_unix.go:215 +0x94
internal/poll.(*FD).Write.func1()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0xf9
internal/poll.ignoringEINTR()
/usr/local/go/src/internal/poll/fd_unix.go:567 +0x38
internal/poll.(*FD).Write()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0x20b
net.(*netFD).Write()
/usr/local/go/src/net/fd_posix.go:73 +0x65
net.(*conn).Write()
/usr/local/go/src/net/net.go:194 +0xeb
net.(*TCPConn).Write()
:1 +0x69
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).internalWriteData()
/pulsar-client-go/pulsar/internal/connection.go:479 +0x1fc
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).run()
/pulsar-client-go/pulsar/internal/connection.go:421 +0x5c8
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start.func1()
/pulsar-client-go/pulsar/internal/connection.go:227 +0xc4
Goroutine 320 (running) created at:
github.com/apache/pulsar-client-go/pulsar.newPartitionProducer()
/pulsar-client-go/pulsar/producer_partition.go:201 +0x1393
github.com/apache/pulsar-client-go/pulsar.(*producer).internalCreatePartitionsProducers.func1()
/pulsar-client-go/pulsar/producer_impl.go:245 +0x105
Goroutine 281 (finished) created at:
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start()
/pulsar-client-go/pulsar/internal/connection.go:223 +0x7a
github.com/apache/pulsar-client-go/pulsar/internal.(*connectionPool).GetConnection()
/pulsar-client-go/pulsar/internal/connection_pool.go:109 +0x3a5
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).Request()
/pulsar-client-go/pulsar/internal/rpc_client.go:120 +0xed
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).RequestToAnyBroker()
/pulsar-client-go/pulsar/internal/rpc_client.go:103 +0x210
github.com/apache/pulsar-client-go/pulsar/internal.(*lookupService).GetPartitionedTopicMetadata()
/pulsar-client-go/pulsar/internal/lookup_service.go:215 +0x2a1
github.com/apache/pulsar-client-go/pulsar.(*client).TopicPartitions()
/pulsar-client-go/pulsar/client_impl.go:209 +0xfa
github.com/apache/pulsar-client-go/pulsar.(*consumer).internalTopicSubscribeToPartitions()
/pulsar-client-go/pulsar/consumer_impl.go:283 +0xcf
github.com/apache/pulsar-client-go/pulsar.newInternalConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:235 +0x555
github.com/apache/pulsar-client-go/pulsar.newConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:175 +0x6af
github.com/apache/pulsar-client-go/pulsar.(*client).Subscribe()
/pulsar-client-go/pulsar/client_impl.go:177 +0xd7
github.com/apache/pulsar-client-go/pulsar.TestSendTimeout()
/pulsar-client-go/pulsar/producer_test.go:1039 +0x338
testing.tRunner()
/usr/local/go/src/testing/testing.go:1123 +0x202
==================
==================
WARNING: DATA RACE
Write at 0x00c00040510f by goroutine 320:
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.encodeVarintPulsarApi()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:13021 +0x111
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.(*CommandSend).MarshalToSizedBuffer()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:9636 +0x394
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.(*BaseCommand).MarshalToSizedBuffer()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:12945 +0x4cdd
github.com/apache/pulsar-client-go/pulsar/internal.serializeMessage()
/pulsar-client-go/pulsar/internal/commands.go:285 +0x5a4
github.com/apache/pulsar-client-go/pulsar/internal.(*batchContainer).Flush()
/pulsar-client-go/pulsar/internal/batch_builder.go:268 +0x5fb
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).internalFlushCurrentBatch()
/pulsar-client-go/pulsar/producer_partition.go:814 +0xe8
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).runEventsLoop()
/pulsar-client-go/pulsar/producer_partition.go:460 +0x215
Previous read at 0x00c000405108 by goroutine 281:
internal/race.ReadRange()
/usr/local/go/src/internal/race/race.go:45 +0xb0
syscall.Write()
/usr/local/go/src/syscall/syscall_unix.go:215 +0x94
internal/poll.(*FD).Write.func1()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0xf9
internal/poll.ignoringEINTR()
/usr/local/go/src/internal/poll/fd_unix.go:567 +0x38
internal/poll.(*FD).Write()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0x20b
net.(*netFD).Write()
/usr/local/go/src/net/fd_posix.go:73 +0x65
net.(*conn).Write()
/usr/local/go/src/net/net.go:194 +0xeb
net.(*TCPConn).Write()
:1 +0x69
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).internalWriteData()
/pulsar-client-go/pulsar/internal/connection.go:479 +0x1fc
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).run()
/pulsar-client-go/pulsar/internal/connection.go:421 +0x5c8
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start.func1()
/pulsar-client-go/pulsar/internal/connection.go:227 +0xc4
Goroutine 320 (running) created at:
github.com/apache/pulsar-client-go/pulsar.newPartitionProducer()
/pulsar-client-go/pulsar/producer_partition.go:201 +0x1393
github.com/apache/pulsar-client-go/pulsar.(*producer).internalCreatePartitionsProducers.func1()
/pulsar-client-go/pulsar/producer_impl.go:245 +0x105
Goroutine 281 (finished) created at:
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start()
/pulsar-client-go/pulsar/internal/connection.go:223 +0x7a
github.com/apache/pulsar-client-go/pulsar/internal.(*connectionPool).GetConnection()
/pulsar-client-go/pulsar/internal/connection_pool.go:109 +0x3a5
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).Request()
/pulsar-client-go/pulsar/internal/rpc_client.go:120 +0xed
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).RequestToAnyBroker()
/pulsar-client-go/pulsar/internal/rpc_client.go:103 +0x210
github.com/apache/pulsar-client-go/pulsar/internal.(*lookupService).GetPartitionedTopicMetadata()
/pulsar-client-go/pulsar/internal/lookup_service.go:215 +0x2a1
github.com/apache/pulsar-client-go/pulsar.(*client).TopicPartitions()
/pulsar-client-go/pulsar/client_impl.go:209 +0xfa
github.com/apache/pulsar-client-go/pulsar.(*consumer).internalTopicSubscribeToPartitions()
/pulsar-client-go/pulsar/consumer_impl.go:283 +0xcf
github.com/apache/pulsar-client-go/pulsar.newInternalConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:235 +0x555
github.com/apache/pulsar-client-go/pulsar.newConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:175 +0x6af
github.com/apache/pulsar-client-go/pulsar.(*client).Subscribe()
/pulsar-client-go/pulsar/client_impl.go:177 +0xd7
github.com/apache/pulsar-client-go/pulsar.TestSendTimeout()
/pulsar-client-go/pulsar/producer_test.go:1039 +0x338
testing.tRunner()
/usr/local/go/src/testing/testing.go:1123 +0x202
==================
==================
WARNING: DATA RACE
Write at 0x00c00040513b by goroutine 320:
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.encodeVarintPulsarApi()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:13021 +0x111
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.(*MessageMetadata).MarshalToSizedBuffer()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:8279 +0x15e9
github.com/apache/pulsar-client-go/pulsar/internal.serializeMessage()
/pulsar-client-go/pulsar/internal/commands.go:300 +0x72a
github.com/apache/pulsar-client-go/pulsar/internal.(*batchContainer).Flush()
/pulsar-client-go/pulsar/internal/batch_builder.go:268 +0x5fb
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).internalFlushCurrentBatch()
/pulsar-client-go/pulsar/producer_partition.go:814 +0xe8
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).runEventsLoop()
/pulsar-client-go/pulsar/producer_partition.go:460 +0x215
Previous read at 0x00c000405138 by goroutine 281:
internal/race.ReadRange()
/usr/local/go/src/internal/race/race.go:45 +0xb0
syscall.Write()
/usr/local/go/src/syscall/syscall_unix.go:215 +0x94
internal/poll.(*FD).Write.func1()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0xf9
internal/poll.ignoringEINTR()
/usr/local/go/src/internal/poll/fd_unix.go:567 +0x38
internal/poll.(*FD).Write()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0x20b
net.(*netFD).Write()
/usr/local/go/src/net/fd_posix.go:73 +0x65
net.(*conn).Write()
/usr/local/go/src/net/net.go:194 +0xeb
net.(*TCPConn).Write()
:1 +0x69
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).internalWriteData()
/pulsar-client-go/pulsar/internal/connection.go:479 +0x1fc
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).run()
/pulsar-client-go/pulsar/internal/connection.go:421 +0x5c8
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start.func1()
/pulsar-client-go/pulsar/internal/connection.go:227 +0xc4
Goroutine 320 (running) created at:
github.com/apache/pulsar-client-go/pulsar.newPartitionProducer()
/pulsar-client-go/pulsar/producer_partition.go:201 +0x1393
github.com/apache/pulsar-client-go/pulsar.(*producer).internalCreatePartitionsProducers.func1()
/pulsar-client-go/pulsar/producer_impl.go:245 +0x105
Goroutine 281 (finished) created at:
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start()
/pulsar-client-go/pulsar/internal/connection.go:223 +0x7a
github.com/apache/pulsar-client-go/pulsar/internal.(*connectionPool).GetConnection()
/pulsar-client-go/pulsar/internal/connection_pool.go:109 +0x3a5
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).Request()
/pulsar-client-go/pulsar/internal/rpc_client.go:120 +0xed
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).RequestToAnyBroker()
/pulsar-client-go/pulsar/internal/rpc_client.go:103 +0x210
github.com/apache/pulsar-client-go/pulsar/internal.(*lookupService).GetPartitionedTopicMetadata()
/pulsar-client-go/pulsar/internal/lookup_service.go:215 +0x2a1
github.com/apache/pulsar-client-go/pulsar.(*client).TopicPartitions()
/pulsar-client-go/pulsar/client_impl.go:209 +0xfa
github.com/apache/pulsar-client-go/pulsar.(*consumer).internalTopicSubscribeToPartitions()
/pulsar-client-go/pulsar/consumer_impl.go:283 +0xcf
github.com/apache/pulsar-client-go/pulsar.newInternalConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:235 +0x555
github.com/apache/pulsar-client-go/pulsar.newConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:175 +0x6af
github.com/apache/pulsar-client-go/pulsar.(*client).Subscribe()
/pulsar-client-go/pulsar/client_impl.go:177 +0xd7
github.com/apache/pulsar-client-go/pulsar.TestSendTimeout()
/pulsar-client-go/pulsar/producer_test.go:1039 +0x338
testing.tRunner()
/usr/local/go/src/testing/testing.go:1123 +0x202
==================
==================
WARNING: DATA RACE
Write at 0x00c000405137 by goroutine 320:
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.(*MessageMetadata).MarshalToSizedBuffer()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:8286 +0x154b
github.com/apache/pulsar-client-go/pulsar/internal.serializeMessage()
/pulsar-client-go/pulsar/internal/commands.go:300 +0x72a
github.com/apache/pulsar-client-go/pulsar/internal.(*batchContainer).Flush()
/pulsar-client-go/pulsar/internal/batch_builder.go:268 +0x5fb
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).internalFlushCurrentBatch()
/pulsar-client-go/pulsar/producer_partition.go:814 +0xe8
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).runEventsLoop()
/pulsar-client-go/pulsar/producer_partition.go:460 +0x215
Previous read at 0x00c000405130 by goroutine 281:
internal/race.ReadRange()
/usr/local/go/src/internal/race/race.go:45 +0xb0
syscall.Write()
/usr/local/go/src/syscall/syscall_unix.go:215 +0x94
internal/poll.(*FD).Write.func1()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0xf9
internal/poll.ignoringEINTR()
/usr/local/go/src/internal/poll/fd_unix.go:567 +0x38
internal/poll.(*FD).Write()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0x20b
net.(*netFD).Write()
/usr/local/go/src/net/fd_posix.go:73 +0x65
net.(*conn).Write()
/usr/local/go/src/net/net.go:194 +0xeb
net.(*TCPConn).Write()
:1 +0x69
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).internalWriteData()
/pulsar-client-go/pulsar/internal/connection.go:479 +0x1fc
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).run()
/pulsar-client-go/pulsar/internal/connection.go:421 +0x5c8
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start.func1()
/pulsar-client-go/pulsar/internal/connection.go:227 +0xc4
Goroutine 320 (running) created at:
github.com/apache/pulsar-client-go/pulsar.newPartitionProducer()
/pulsar-client-go/pulsar/producer_partition.go:201 +0x1393
github.com/apache/pulsar-client-go/pulsar.(*producer).internalCreatePartitionsProducers.func1()
/pulsar-client-go/pulsar/producer_impl.go:245 +0x105
Goroutine 281 (finished) created at:
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start()
/pulsar-client-go/pulsar/internal/connection.go:223 +0x7a
github.com/apache/pulsar-client-go/pulsar/internal.(*connectionPool).GetConnection()
/pulsar-client-go/pulsar/internal/connection_pool.go:109 +0x3a5
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).Request()
/pulsar-client-go/pulsar/internal/rpc_client.go:120 +0xed
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).RequestToAnyBroker()
/pulsar-client-go/pulsar/internal/rpc_client.go:103 +0x210
github.com/apache/pulsar-client-go/pulsar/internal.(*lookupService).GetPartitionedTopicMetadata()
/pulsar-client-go/pulsar/internal/lookup_service.go:215 +0x2a1
github.com/apache/pulsar-client-go/pulsar.(*client).TopicPartitions()
/pulsar-client-go/pulsar/client_impl.go:209 +0xfa
github.com/apache/pulsar-client-go/pulsar.(*consumer).internalTopicSubscribeToPartitions()
/pulsar-client-go/pulsar/consumer_impl.go:283 +0xcf
github.com/apache/pulsar-client-go/pulsar.newInternalConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:235 +0x555
github.com/apache/pulsar-client-go/pulsar.newConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:175 +0x6af
github.com/apache/pulsar-client-go/pulsar.(*client).Subscribe()
/pulsar-client-go/pulsar/client_impl.go:177 +0xd7
github.com/apache/pulsar-client-go/pulsar.TestSendTimeout()
/pulsar-client-go/pulsar/producer_test.go:1039 +0x338
testing.tRunner()
/usr/local/go/src/testing/testing.go:1123 +0x202
==================
==================
WARNING: DATA RACE
Write at 0x00c00040512f by goroutine 320:
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.encodeVarintPulsarApi()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:13021 +0x111
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.(*MessageMetadata).MarshalToSizedBuffer()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:8340 +0xa0f
github.com/apache/pulsar-client-go/pulsar/internal.serializeMessage()
/pulsar-client-go/pulsar/internal/commands.go:300 +0x72a
github.com/apache/pulsar-client-go/pulsar/internal.(*batchContainer).Flush()
/pulsar-client-go/pulsar/internal/batch_builder.go:268 +0x5fb
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).internalFlushCurrentBatch()
/pulsar-client-go/pulsar/producer_partition.go:814 +0xe8
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).runEventsLoop()
/pulsar-client-go/pulsar/producer_partition.go:460 +0x215
Previous read at 0x00c000405128 by goroutine 281:
internal/race.ReadRange()
/usr/local/go/src/internal/race/race.go:45 +0xb0
syscall.Write()
/usr/local/go/src/syscall/syscall_unix.go:215 +0x94
internal/poll.(*FD).Write.func1()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0xf9
internal/poll.ignoringEINTR()
/usr/local/go/src/internal/poll/fd_unix.go:567 +0x38
internal/poll.(*FD).Write()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0x20b
net.(*netFD).Write()
/usr/local/go/src/net/fd_posix.go:73 +0x65
net.(*conn).Write()
/usr/local/go/src/net/net.go:194 +0xeb
net.(*TCPConn).Write()
:1 +0x69
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).internalWriteData()
/pulsar-client-go/pulsar/internal/connection.go:479 +0x1fc
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).run()
/pulsar-client-go/pulsar/internal/connection.go:421 +0x5c8
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start.func1()
/pulsar-client-go/pulsar/internal/connection.go:227 +0xc4
Goroutine 320 (running) created at:
github.com/apache/pulsar-client-go/pulsar.newPartitionProducer()
/pulsar-client-go/pulsar/producer_partition.go:201 +0x1393
github.com/apache/pulsar-client-go/pulsar.(*producer).internalCreatePartitionsProducers.func1()
/pulsar-client-go/pulsar/producer_impl.go:245 +0x105
Goroutine 281 (finished) created at:
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start()
/pulsar-client-go/pulsar/internal/connection.go:223 +0x7a
github.com/apache/pulsar-client-go/pulsar/internal.(*connectionPool).GetConnection()
/pulsar-client-go/pulsar/internal/connection_pool.go:109 +0x3a5
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).Request()
/pulsar-client-go/pulsar/internal/rpc_client.go:120 +0xed
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).RequestToAnyBroker()
/pulsar-client-go/pulsar/internal/rpc_client.go:103 +0x210
github.com/apache/pulsar-client-go/pulsar/internal.(*lookupService).GetPartitionedTopicMetadata()
/pulsar-client-go/pulsar/internal/lookup_service.go:215 +0x2a1
github.com/apache/pulsar-client-go/pulsar.(*client).TopicPartitions()
/pulsar-client-go/pulsar/client_impl.go:209 +0xfa
github.com/apache/pulsar-client-go/pulsar.(*consumer).internalTopicSubscribeToPartitions()
/pulsar-client-go/pulsar/consumer_impl.go:283 +0xcf
github.com/apache/pulsar-client-go/pulsar.newInternalConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:235 +0x555
github.com/apache/pulsar-client-go/pulsar.newConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:175 +0x6af
github.com/apache/pulsar-client-go/pulsar.(*client).Subscribe()
/pulsar-client-go/pulsar/client_impl.go:177 +0xd7
github.com/apache/pulsar-client-go/pulsar.TestSendTimeout()
/pulsar-client-go/pulsar/producer_test.go:1039 +0x338
testing.tRunner()
/usr/local/go/src/testing/testing.go:1123 +0x202
==================
==================
WARNING: DATA RACE
Write at 0x00c000405120 by goroutine 320:
runtime.slicestringcopy()
/usr/local/go/src/runtime/slice.go:281 +0x0
github.com/apache/pulsar-client-go/pulsar/internal/pulsar_proto.(*MessageMetadata).MarshalToSizedBuffer()
/pulsar-client-go/pulsar/internal/pulsar_proto/PulsarApi.pb.go:8348 +0xb64
github.com/apache/pulsar-client-go/pulsar/internal.serializeMessage()
/pulsar-client-go/pulsar/internal/commands.go:300 +0x72a
github.com/apache/pulsar-client-go/pulsar/internal.(*batchContainer).Flush()
/pulsar-client-go/pulsar/internal/batch_builder.go:268 +0x5fb
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).internalFlushCurrentBatch()
/pulsar-client-go/pulsar/producer_partition.go:814 +0xe8
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).runEventsLoop()
/pulsar-client-go/pulsar/producer_partition.go:460 +0x215
Previous read at 0x00c000405120 by goroutine 281:
internal/race.ReadRange()
/usr/local/go/src/internal/race/race.go:45 +0xb0
syscall.Write()
/usr/local/go/src/syscall/syscall_unix.go:215 +0x94
internal/poll.(*FD).Write.func1()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0xf9
internal/poll.ignoringEINTR()
/usr/local/go/src/internal/poll/fd_unix.go:567 +0x38
internal/poll.(*FD).Write()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0x20b
net.(*netFD).Write()
/usr/local/go/src/net/fd_posix.go:73 +0x65
net.(*conn).Write()
/usr/local/go/src/net/net.go:194 +0xeb
net.(*TCPConn).Write()
:1 +0x69
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).internalWriteData()
/pulsar-client-go/pulsar/internal/connection.go:479 +0x1fc
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).run()
/pulsar-client-go/pulsar/internal/connection.go:421 +0x5c8
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start.func1()
/pulsar-client-go/pulsar/internal/connection.go:227 +0xc4
Goroutine 320 (running) created at:
github.com/apache/pulsar-client-go/pulsar.newPartitionProducer()
/pulsar-client-go/pulsar/producer_partition.go:201 +0x1393
github.com/apache/pulsar-client-go/pulsar.(*producer).internalCreatePartitionsProducers.func1()
/pulsar-client-go/pulsar/producer_impl.go:245 +0x105
Goroutine 281 (finished) created at:
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start()
/pulsar-client-go/pulsar/internal/connection.go:223 +0x7a
github.com/apache/pulsar-client-go/pulsar/internal.(*connectionPool).GetConnection()
/pulsar-client-go/pulsar/internal/connection_pool.go:109 +0x3a5
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).Request()
/pulsar-client-go/pulsar/internal/rpc_client.go:120 +0xed
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).RequestToAnyBroker()
/pulsar-client-go/pulsar/internal/rpc_client.go:103 +0x210
github.com/apache/pulsar-client-go/pulsar/internal.(*lookupService).GetPartitionedTopicMetadata()
/pulsar-client-go/pulsar/internal/lookup_service.go:215 +0x2a1
github.com/apache/pulsar-client-go/pulsar.(*client).TopicPartitions()
/pulsar-client-go/pulsar/client_impl.go:209 +0xfa
github.com/apache/pulsar-client-go/pulsar.(*consumer).internalTopicSubscribeToPartitions()
/pulsar-client-go/pulsar/consumer_impl.go:283 +0xcf
github.com/apache/pulsar-client-go/pulsar.newInternalConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:235 +0x555
github.com/apache/pulsar-client-go/pulsar.newConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:175 +0x6af
github.com/apache/pulsar-client-go/pulsar.(*client).Subscribe()
/pulsar-client-go/pulsar/client_impl.go:177 +0xd7
github.com/apache/pulsar-client-go/pulsar.TestSendTimeout()
/pulsar-client-go/pulsar/producer_test.go:1039 +0x338
testing.tRunner()
/usr/local/go/src/testing/testing.go:1123 +0x202
==================
==================
WARNING: DATA RACE
Write at 0x00c000405140 by goroutine 320:
runtime.slicecopy()
/usr/local/go/src/runtime/slice.go:246 +0x0
github.com/apache/pulsar-client-go/pulsar/internal.(*buffer).Write()
/pulsar-client-go/pulsar/internal/buffer.go:208 +0xd0
github.com/apache/pulsar-client-go/pulsar/internal.serializeMessage()
/pulsar-client-go/pulsar/internal/commands.go:307 +0x7a7
github.com/apache/pulsar-client-go/pulsar/internal.(*batchContainer).Flush()
/pulsar-client-go/pulsar/internal/batch_builder.go:268 +0x5fb
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).internalFlushCurrentBatch()
/pulsar-client-go/pulsar/producer_partition.go:814 +0xe8
github.com/apache/pulsar-client-go/pulsar.(*partitionProducer).runEventsLoop()
/pulsar-client-go/pulsar/producer_partition.go:460 +0x215
Previous read at 0x00c000405140 by goroutine 281:
internal/race.ReadRange()
/usr/local/go/src/internal/race/race.go:45 +0xb0
syscall.Write()
/usr/local/go/src/syscall/syscall_unix.go:215 +0x94
internal/poll.(*FD).Write.func1()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0xf9
internal/poll.ignoringEINTR()
/usr/local/go/src/internal/poll/fd_unix.go:567 +0x38
internal/poll.(*FD).Write()
/usr/local/go/src/internal/poll/fd_unix.go:267 +0x20b
net.(*netFD).Write()
/usr/local/go/src/net/fd_posix.go:73 +0x65
net.(*conn).Write()
/usr/local/go/src/net/net.go:194 +0xeb
net.(*TCPConn).Write()
:1 +0x69
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).internalWriteData()
/pulsar-client-go/pulsar/internal/connection.go:479 +0x1fc
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).run()
/pulsar-client-go/pulsar/internal/connection.go:421 +0x5c8
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start.func1()
/pulsar-client-go/pulsar/internal/connection.go:227 +0xc4
Goroutine 320 (running) created at:
github.com/apache/pulsar-client-go/pulsar.newPartitionProducer()
/pulsar-client-go/pulsar/producer_partition.go:201 +0x1393
github.com/apache/pulsar-client-go/pulsar.(*producer).internalCreatePartitionsProducers.func1()
/pulsar-client-go/pulsar/producer_impl.go:245 +0x105
Goroutine 281 (finished) created at:
github.com/apache/pulsar-client-go/pulsar/internal.(*connection).start()
/pulsar-client-go/pulsar/internal/connection.go:223 +0x7a
github.com/apache/pulsar-client-go/pulsar/internal.(*connectionPool).GetConnection()
/pulsar-client-go/pulsar/internal/connection_pool.go:109 +0x3a5
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).Request()
/pulsar-client-go/pulsar/internal/rpc_client.go:120 +0xed
github.com/apache/pulsar-client-go/pulsar/internal.(*rpcClient).RequestToAnyBroker()
/pulsar-client-go/pulsar/internal/rpc_client.go:103 +0x210
github.com/apache/pulsar-client-go/pulsar/internal.(*lookupService).GetPartitionedTopicMetadata()
/pulsar-client-go/pulsar/internal/lookup_service.go:215 +0x2a1
github.com/apache/pulsar-client-go/pulsar.(*client).TopicPartitions()
/pulsar-client-go/pulsar/client_impl.go:209 +0xfa
github.com/apache/pulsar-client-go/pulsar.(*consumer).internalTopicSubscribeToPartitions()
/pulsar-client-go/pulsar/consumer_impl.go:283 +0xcf
github.com/apache/pulsar-client-go/pulsar.newInternalConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:235 +0x555
github.com/apache/pulsar-client-go/pulsar.newConsumer()
/pulsar-client-go/pulsar/consumer_impl.go:175 +0x6af
github.com/apache/pulsar-client-go/pulsar.(*client).Subscribe()
/pulsar-client-go/pulsar/client_impl.go:177 +0xd7
github.com/apache/pulsar-client-go/pulsar.TestSendTimeout()
/pulsar-client-go/pulsar/producer_test.go:1039 +0x338
testing.tRunner()
/usr/local/go/src/testing/testing.go:1123 +0x202
==================
```
Contributor guide
Research direction
Start by reproducing producetest.TestSendContextExpired with Go's race detector. Trace the reported accesses through internal/buffer.go, internal/commands.go, internal/batch_builder.go, producer_partition.go, and internal/connection.go; producer_test.go also contains the related TestSendTimeout path. Done means the race report no longer occurs and the test passes reliably.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100