massakam opened a new issue #4658: C++ consumer's connection is often closed
URL: https://github.com/apache/pulsar/issues/4658
 
 
   **Describe the bug**
   
   If C++ consumer subscribes to a topic that a lot of messages are published 
to, the connection with the broker is often closed and reconnection occurs. 
This phenomenon seems to occur only when connecting to the broker using TLS.
   
   The following is the client side log at that time:
   
   ```
   2019-07-02 20:07:13.455 INFO  ClientConnection:1274 | [xxx.xxx.xxx.xxx:46586 
-> xxx.xxx.xxx.xxx:6651] Connection closed
   2019-07-02 20:07:13.456 INFO  HandlerBase:129 | 
[persistent://massakam/global/test/t1, sub1, 0] Schedule reconnection in 0.1 s
   2019-07-02 20:07:13.456 WARN  ClientConnection:1153 | [xxx.xxx.xxx.xxx:46586 
-> xxx.xxx.xxx.xxx:6651] Could not send message on connection: system:9 Bad 
file descriptor
   2019-07-02 20:07:13.456 INFO  ClientConnection:1274 | [xxx.xxx.xxx.xxx:46586 
-> xxx.xxx.xxx.xxx:6651] Connection closed
   2019-07-02 20:07:13.456 INFO  ClientConnection:211 | [xxx.xxx.xxx.xxx:46586 
-> xxx.xxx.xxx.xxx:6651] Destroyed connection
   2019-07-02 20:07:13.556 INFO  HandlerBase:52 | 
[persistent://massakam/global/test/t1, sub1, 0] Getting connection from pool
   2019-07-02 20:07:13.567 INFO  ConnectionPool:62 | Deleting stale connection 
from pool for pulsar+ssl://dev-broker11.xxx.xxx.xxx.yahoo.co.jp:6651 use_count: 
-1 @ 0
   2019-07-02 20:07:13.567 INFO  ConnectionPool:72 | Created connection for 
pulsar+ssl://dev-broker11.xxx.xxx.xxx.yahoo.co.jp:6651
   2019-07-02 20:07:13.578 INFO  ClientConnection:300 | [xxx.xxx.xxx.xxx:46596 
-> xxx.xxx.xxx.xxx:6651] Connected to broker
   2019-07-02 20:07:13.624 INFO  ConsumerImpl:169 | 
[persistent://massakam/global/test/t1, sub1, 0] Created consumer on broker 
[xxx.xxx.xxx.xxx:46596 -> xxx.xxx.xxx.xxx:6651]
   ```
   
   There are no errors or warnings in the broker side log.
   
   **To Reproduce**
   Steps to reproduce the behavior:
   1. Compile and execute the following code:
   ```cpp
   #include <iostream>
   #include <pulsar/Client.h>
   
   using namespace std;
   using namespace pulsar;
   
   void messageListener(Consumer consumer, const Message& msg) {
       //cout << "Receive: " << msg.getDataAsString() << endl;
       consumer.acknowledge(msg);
   }
   
   int main() {
       ClientConfiguration config = ClientConfiguration();
       config.setTlsTrustCertsFilePath("<TRUST_CERT_FILE>");
       Client client("pulsar+ssl://<BROKER>:6651", config);
   
       ConsumerConfiguration consumerConfig;
       consumerConfig.setMessageListener(messageListener);
       Consumer consumer;
       Result result = client.subscribe("<TOPIC>", "<SUBSCRIPTION>", 
consumerConfig, consumer);
   
       if (result != ResultOk) {
           cerr << "Failed to create consumer: " << result << endl;
           return -1;
       }
   
       int n;
       cin >> n;
   
       consumer.close();
       client.close();
   }
   ```
   2. Publish 1KB messages at a rate of about 5000 msg/sec to the topic that 
the consumer is connecting to.
   ```sh
   $ ./bin/pulsar-perf produce -n 1 -f payload.txt -r 5000 -s 1024 -time 60 
<TOPIC>
   ```
   
   **Desktop (please complete the following information):**
    - OS: CentOS 7
   
   **Pulsar version**
   - broker: 2.3.2
   - client: 2.3.2

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


With regards,
Apache Git Services

Reply via email to