jonyhy96 opened a new issue #491:
URL: https://github.com/apache/pulsar-client-go/issues/491


   #### Expected behavior
   
   If producer.Close are called,it will close within configured OperationTimeout
   
   #### Actual behavior
   
   producer.Close may block forever and won't time out after configured 
OperationTimeout
   
   #### Steps to reproduce
   
   Just run the perf program for a while and send SIGINT or ctrl+c to it. This 
situation may be triggered.
   
   This is because the callback of 
[producer.SendAsyc](https://github.com/apache/pulsar-client-go/blob/master/perf/perf-producer.go#L132)
 contains a send behavior on a channel which under the same scope with 
[stopCh](https://github.com/apache/pulsar-client-go/blob/master/perf/perf-producer.go#L145-L162).
 When we trigger producer.Close, if `case <-stop:` happens before `case latency 
:= <-ch:`, it will block forever because it may be block at 
[here](https://github.com/apache/pulsar-client-go/blob/master/pulsar/producer_partition.go#L700)
 and 
[RequestOnCnx](https://github.com/apache/pulsar-client-go/blob/master/pulsar/internal/rpc_client.go#L146-L165)
 has no time out guarantee.
   
   #### System configuration
   **Pulsar version**: any
   


-- 
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:
[email protected]


Reply via email to