apache / apache/pulsar-client-go

[BUG] Panics in SendRequestNoWait are triggered  when reconnecting consumer to broker

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

![截屏2022-10-11 15 36 42](https://user-images.githubusercontent.com/42677195/195037159-e7049c41-1a30-49ab-8768-36039fe5956a.png)
![截屏2022-10-11 15 36 59](https://user-images.githubusercontent.com/42677195/195037167-982b8d0b-fb6f-4cf7-a155-6f9ce0ac692e.png)
![截屏2022-10-11 15 37 08](https://user-images.githubusercontent.com/42677195/195037173-cade1594-d6b0-4b18-92d3-dc634569a00f.png)

#### 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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.