[
https://issues.apache.org/jira/browse/QPID-8536?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tomas Vavricka closed QPID-8536.
--------------------------------
> [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
> Fix For: qpid-java-broker-9.0.0
>
>
> 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.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]