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

ASF subversion and git services commented on QPID-8510:
-------------------------------------------------------

Commit 263475c228225690929712bac178f069e874f259 in qpid-broker-j's branch 
refs/heads/main from Alex Rudyy
[ https://gitbox.apache.org/repos/asf?p=qpid-broker-j.git;h=263475c ]

QPID-8510: [Broker-J] Add unit tests


> [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
>            Reporter: Marek Laca
>            Priority: Minor
>              Labels: Broker, Java
>
> 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