apache / apache/pulsar-client-go

[Flaky-test] producetest.TestSendContextExpired

Open
#864 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.