Fix producer unable register when cnx closed #761
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Signed-off-by: xiaolongran xiaolongran@tencent.com
Motivation
At present, it is assumed that there are multiple topics multiplexing the same TCP connection, then any topic may trigger the reconnection operation of this TCP connection. In the actual production environment, we see that a small number of producers will report the following errors:
The specific code logic is as follows:
https://github.com/apache/pulsar-client-go/blob/master/pulsar/internal/connection.go#L851-L855
We can see that when we try to register the producer, we will first check the status of the current connection. If the connection is closed, then we will not continue to register the producer object with the connection, but at the same time we will not do any processing and cause some topics to continue to hold the old connection before, causing the sending to time out.
Modifications