apache / apache/pulsar-client-go
[BUG] Panics in SendRequestNoWait are triggered when reconnecting consumer to broker
- Dominant language
- Go
- Stars
- 745
- Forks
- 389
- Avg merge
- 3d 20h
- Merged PRs (30d)
- 3
Description
#### Expected behavior
Panics should not occur when the client reconnects
#### Actual behavior
Panic is triggered in pulsar and cannot be captured by the client code.
The backtrace of core dump:
0 0x0000000000479261 in runtime.raise
at /data/goroot/go/src/runtime/sys_linux_amd64.s:168
1 0x000000000045adc5 in runtime.dieFromSignal
at /data/goroot/go/src/runtime/signal_unix.go:852
2 0x000000000045b796 in runtime.sigfwdgo
at /data/goroot/go/src/runtime/signal_unix.go:1066
3 0x0000000000459b27 in runtime.sigtrampgo
at /data/goroot/go/src/runtime/signal_unix.go:430
4 0x000000000047a0ae in runtime.sigtrampgo
at :1
5 0x000000000047955d in runtime.sigtramp
at /data/goroot/go/src/runtime/sys_linux_amd64.s:361
6 0x00007f9041b19390 in ???
at ?:-1
7 0x0000000000444e49 in runtime.crash
at /data/goroot/go/src/runtime/signal_unix.go:944
8 0x0000000000444e49 in runtime.fatalpanic
at /data/goroot/go/src/runtime/panic.go:1092
9 0x0000000000444617 in runtime.gopanic
at /data/goroot/go/src/runtime/panic.go:941
10 0x0000000000490994 in sync.(*WaitGroup).Add
at /data/goroot/go/src/sync/waitgroup.go:94
11 0x0000000000490a05 in sync.(*WaitGroup).Done
at /data/goroot/go/src/sync/waitgroup.go:105
12 0x0000000000fec866 in github.com/apache/pulsar-client-go/pulsar/internal.(*connection).SendRequestNoWait
at /data/goroot/gopath/pkg/mod/[github.com/apache/pulsar-client-go@v0.6.0/pulsar/internal/connection.go:606](http://github.com/apache/pulsar-client-go@v0.6.0/pulsar/internal/connection.go:606)



#### Steps to reproduce
This issue may not reproduce every time, but it must be related to sync.WaitGroup.
#### System configuration
**Pulsar version**: 2.9
**pulsar-client-go version**: v0.6.0
Contributor guide
Research direction
Start by reading pulsar/internal/connection.go around SendRequestNoWait, especially line 606 and its sync.WaitGroup usage. Reproduce the consumer-to-broker reconnect scenario described in the issue with pulsar-client-go v0.6.0, then verify that the operation no longer panics during reconnects.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100