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

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

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


   


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


> [Broker-J] Incorrect check of maximum open connections
> ------------------------------------------------------
>
>                 Key: QPID-8536
>                 URL: https://issues.apache.org/jira/browse/QPID-8536
>             Project: Qpid
>          Issue Type: Bug
>          Components: Broker-J
>            Reporter: Marek Laca
>            Priority: Minor
>              Labels: Broker, Connections, Java, limit, port
>
> The AMQP port has the limit of maximum open connections. But this limit is 
> not checked correctly. The AMQP port has two methods 
> AmqpPort::canAcceptNewConnection and AmqpPort::incrementConnectionCount.
> Suppose that the port has the limit 5 connection and clients open 7 
> connections at the same time:
>  # 7 parallel connections is open by IO-threads.
>  # All threads call the AmqpPort::canAcceptNewConnection method and every 
> thread receive the positive answer because any connection has not been 
> registered yet.
>  # All threads call the AmqpPort::incrementConnectionCount methods. Hence the 
> connection count is increased to 7 what breaks the limits.
>  # All 7 connections are accepted in spite of breaking limit.
> The every thread can see the intermediate state of the counter when the limit 
> is checked by another thread but the counter has not been incremented yet.
>  The solution is the combination of the steps 'check' and 'increment' into 
> single atomic operation when every thread has the exclusive access to the 
> counter. The counter can be observed only in two states: 'before check' or 
> 'after incrementation'.



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