[ 
https://issues.apache.org/jira/browse/QPID-8491?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17262469#comment-17262469
 ] 

ASF GitHub Bot commented on QPID-8491:
--------------------------------------

dakirily closed pull request #75:
URL: https://github.com/apache/qpid-broker-j/pull/75


   


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


> Connection leak when using CPP qpid-proton client
> -------------------------------------------------
>
>                 Key: QPID-8491
>                 URL: https://issues.apache.org/jira/browse/QPID-8491
>             Project: Qpid
>          Issue Type: Bug
>          Components: Broker-J
>    Affects Versions: qpid-java-broker-8.0.2
>            Reporter: Daniil Kirilyuk
>            Priority: Minor
>         Attachments: broker.log, simple_recv.cpp
>
>
> Issue is similar to QPID-8477: when broker is configured to accept limited 
> number of connections from certain client and client is not well behaved, 
> there is a possibility to exceed configured connection limit.
> *Steps to reproduce*
> 1. Configure broker to allow only 1 connection
>  
> 3. Prepare certificates
>  
> 4. Install Qpid::Proton 0.28.0
> wget 
> [http://archive.apache.org/dist/qpid/proton/0.28.0/qpid-proton-0.28.0.tar.gz]
> gunzip qpid-proton-0.28.0.tar.gz
> mkdir -p qpid-proton-0.28.0/build && pushd qpid-proton-0.28.0/build && cmake 
> .. && make all && popd
> 5. Replace and edit example *qpid-proton-0.28.0/cpp/examples/simple_recv.cpp* 
> with the one attached
> 6. Build again
> cd qpid-proton-0.28.0/build
> make
> 7. Start clients
> ./cpp/examples/simple_recv & ./cpp/examples/simple_recv
>  8. Check connection count
> curl 
> [http://admin_user:password@your_broker_host:http_administration_port/api/latest/querybroker/VirtualHost?select=connectionCount]
> *Analysis:*
> Client outputs following error message:
> {{Connection error}}
> {{[0x1c4fac0]:unable to find an open available channel within limit of 0}}
> {{[0x1c4fac0]:process error -2}}
> In broker log following stacktrace is seen:
> {noformat}
> 2020-12-09 11:03:32,252 WARN  [IO-/10.112.45.3:45094] 
> (o.a.q.s.p.v.f.FrameHandler) - Unexpected exception handling frame
> org.apache.qpid.server.util.ConnectionScopedRuntimeException: Unexpected 
> state, client has sent frame in an illegal order.  Required state: OPENED, 
> actual state: CLOSED
>       at 
> org.apache.qpid.server.protocol.v1_0.AMQPConnection_1_0Impl.assertState(AMQPConnection_1_0Impl.java:1768)
>       at 
> org.apache.qpid.server.protocol.v1_0.AMQPConnection_1_0Impl.receiveBegin(AMQPConnection_1_0Impl.java:701)
>       at 
> org.apache.qpid.server.protocol.v1_0.type.transport.Begin.invoke(Begin.java:230)
>       at 
> org.apache.qpid.server.protocol.v1_0.AMQPConnection_1_0Impl.received(AMQPConnection_1_0Impl.java:515)
>       at 
> org.apache.qpid.server.protocol.v1_0.AMQPConnection_1_0Impl.receive(AMQPConnection_1_0Impl.java:480)
>       at 
> org.apache.qpid.server.protocol.v1_0.framing.FrameHandler.parse(FrameHandler.java:224)
>       at 
> org.apache.qpid.server.protocol.v1_0.AMQPConnection_1_0Impl.onReceive(AMQPConnection_1_0Impl.java:1312)
>       at 
> org.apache.qpid.server.transport.AbstractAMQPConnection.lambda$received$2(AbstractAMQPConnection.java:576)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at 
> org.apache.qpid.server.transport.AbstractAMQPConnection.received(AbstractAMQPConnection.java:571)
>       at 
> org.apache.qpid.server.transport.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:135)
>       at 
> org.apache.qpid.server.transport.NonBlockingConnection.processAmqpData(NonBlockingConnection.java:611)
>       at 
> org.apache.qpid.server.transport.NonBlockingConnectionTLSDelegate.processData(NonBlockingConnectionTLSDelegate.java:141)
>       at 
> org.apache.qpid.server.transport.NonBlockingConnection.doRead(NonBlockingConnection.java:496)
>       at 
> org.apache.qpid.server.transport.NonBlockingConnection.doWork(NonBlockingConnection.java:270)
>       at 
> org.apache.qpid.server.transport.NetworkConnectionScheduler.processConnection(NetworkConnectionScheduler.java:134)
>       at 
> org.apache.qpid.server.transport.SelectorThread$ConnectionProcessor.processConnection(SelectorThread.java:575)
>       at 
> org.apache.qpid.server.transport.SelectorThread$SelectionTask.performSelect(SelectorThread.java:366)
>       at 
> org.apache.qpid.server.transport.SelectorThread$SelectionTask.run(SelectorThread.java:97)
>       at 
> org.apache.qpid.server.transport.SelectorThread.run(SelectorThread.java:533)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       at 
> org.apache.qpid.server.bytebuffer.QpidByteBufferFactory.lambda$null$0(QpidByteBufferFactory.java:464)
>       at java.lang.Thread.run(Thread.java:748)
> {noformat}
>  Error is triggered by following callback in qpid-proton cpp client:
> {noformat}
> void on_connection_open (proton::connection &c) {
>  c.open_session();
>  }
> {noformat}
> Broker receives session opening call AMQPConnection_1_0Impl.receiveBegin(). 
> During the check whether connection is opened or not ( 
> AMQPConnection_1_0Impl.assertState() ) an exception is thrown, which isn't 
> handled and connection remains not closed.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to