cckellogg commented on a change in pull request #248: URL: https://github.com/apache/pulsar-client-go/pull/248#discussion_r426104452
########## File path: pulsar/internal/connection.go ########## @@ -656,18 +662,20 @@ func (c *connection) Close() { c.log.Info("Connection closed") c.state = connectionClosed - if c.cnx != nil { - c.cnx.Close() - } + c.TriggerClose() c.pingTicker.Stop() c.pingCheckTicker.Stop() for _, listener := range c.listeners { listener.ConnectionClosed() } - for _, req := range c.pendingReqs { + if c.runLoopStoppedCh != nil { Review comment: So the issue is connection.Close() is called multiple times? After Close() is the connection struct ever used again? If we want to ensure Close() is only called once can we use a sync.Once and do something similar to what the consumers do? https://github.com/apache/pulsar-client-go/blob/master/pulsar/consumer_impl.go#L362 ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org