[ 
https://issues.apache.org/jira/browse/QPID-8510?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Rudyy updated QPID-8510:
-----------------------------
    Affects Version/s: qpid-java-broker-7.0.0
                       qpid-java-broker-7.0.1
                       qpid-java-broker-7.1.0
                       qpid-java-broker-7.0.4
                       qpid-java-broker-7.0.5
                       qpid-java-broker-7.0.6
                       qpid-java-broker-7.0.7
                       qpid-java-broker-8.0.0
                       qpid-java-broker-7.1.1
                       qpid-java-broker-7.1.2
                       qpid-java-broker-7.0.8
                       qpid-java-broker-7.1.3
                       qpid-java-broker-7.1.4
                       qpid-java-broker-7.0.9
                       qpid-java-broker-7.1.5
                       qpid-java-broker-7.1.6
                       qpid-java-broker-7.1.7
                       qpid-java-broker-7.1.8
                       qpid-java-broker-8.0.1
                       qpid-java-broker-7.1.9
                       qpid-java-broker-8.0.2
                       qpid-java-broker-7.1.10
                       qpid-java-broker-8.0.3
                       qpid-java-broker-7.1.11
                       qpid-java-broker-8.0.4
                       qpid-java-broker-7.1.12

> [Broker-J] Incorect use of volatile modifier for array
> ------------------------------------------------------
>
>                 Key: QPID-8510
>                 URL: https://issues.apache.org/jira/browse/QPID-8510
>             Project: Qpid
>          Issue Type: Bug
>          Components: Broker-J
>    Affects Versions: qpid-java-broker-7.0.0, qpid-java-broker-7.0.1, 
> qpid-java-broker-7.1.0, qpid-java-broker-7.0.4, qpid-java-broker-7.0.5, 
> qpid-java-broker-7.0.6, qpid-java-broker-7.0.7, qpid-java-broker-8.0.0, 
> qpid-java-broker-7.1.1, qpid-java-broker-7.1.2, qpid-java-broker-7.0.8, 
> qpid-java-broker-7.1.3, qpid-java-broker-7.1.4, qpid-java-broker-7.0.9, 
> qpid-java-broker-7.1.5, qpid-java-broker-7.1.6, qpid-java-broker-7.1.7, 
> qpid-java-broker-7.1.8, qpid-java-broker-8.0.1, qpid-java-broker-7.1.9, 
> qpid-java-broker-8.0.2, qpid-java-broker-7.1.10, qpid-java-broker-8.0.3, 
> qpid-java-broker-7.1.11, qpid-java-broker-8.0.4, qpid-java-broker-7.1.12
>            Reporter: Marek Laca
>            Priority: Minor
>              Labels: Broker, Java
>             Fix For: qpid-java-broker-8.0.5
>
>
> Based on Java documentation a change of volatile variable is always visible 
> to other threads. Hence, assignment a new array to the volatile variable 
> guarantees the visibility of the new array to another threads, but there is 
> not any guarantee of the visibility of a new element of the array. Because 
> the insertion of a new element into the volatile array is a change of the 
> internal state of the array.
>  For example there is the method AMQPConnection_1_0Impl::removeTransaction:
> {code:java}
>     private volatile ServerTransaction[] _openTransactions = new 
> ServerTransaction[16];
>     @Override
>     public void removeTransaction(final int txnId)
>     {
>         try
>         {
>             _openTransactions[txnId] = null; // There is not any  guarantee 
> of the visibility, when the change is propagated to another threads.
>         }
>         catch (ArrayIndexOutOfBoundsException e)
>         {
>             throw new UnknownTransactionException(txnId);
>         }
>     }
> {code}
> The same issue is in other methods of AMQPConnection_1_0Impl class.
> A concurrent collection can be used instead of the volatile array.



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