[
https://issues.apache.org/jira/browse/PROTON-685?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Robbie Gemmell updated PROTON-685:
----------------------------------
Attachment: 0003-PROTON-685-python-test-which-doesnt-run-against-prot.patch
The above commit contains a new Java test to highlight the issue and hopefully
ensure it doesn't reoccurr.
Also attaching a python test I originally wrote whilst looking at the problem.
It doesnt actually run against proton-j, because the python test shim is
missing some bits:
{noformat}
proton.py", line 2470, in next
return Session._wrap_session(pn_session_next(self._ssn, mask))
NameError: global name 'pn_session_next' is not defined
{noformat}
However, if modified to do what I believed should still show the problem I was
unable to make it do so, and it passed against proton-j without the commit made
above to resolve the issue. Some hacky system.out logging shows this is because
the free process simply doesnt work the same when running the tests via the
python shim:
{noformat}
doFree'ing connection:
org.apache.qpid.proton.engine.impl.ConnectionImpl@41786b48
doFree'ing session: org.apache.qpid.proton.engine.impl.SessionImpl@5a9db582
doFree'ing sender: org.apache.qpid.proton.engine.impl.SenderImpl@c91673
doFree'ing above link: org.apache.qpid.proton.engine.impl.SenderImpl@c91673
2014-09-15 11:39:26,004 [ider$1@5ee74be7] - WARN AmqpProvider
- Caught Exception during update processing: null
java.util.ConcurrentModificationException
at
java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:711)
at
java.util.LinkedHashMap$LinkedValueIterator.next(LinkedHashMap.java:739)
at
org.apache.qpid.proton.engine.impl.SessionImpl.doFree(SessionImpl.java:107)
at
org.apache.qpid.proton.engine.impl.EndpointImpl.free(EndpointImpl.java:192)
at
org.apache.qpid.proton.engine.impl.ConnectionImpl.doFree(ConnectionImpl.java:196)
at
org.apache.qpid.proton.engine.impl.EndpointImpl.free(EndpointImpl.java:192)
<snip>
{noformat}
{noformat}
proton_tests.engine.FreeTest. \
testFreeConnectionWithMultipleSessionsAndSendersAndReceivers ........
doFree'ing sender: org.apache.qpid.proton.engine.impl.SenderImpl@550661b8
doFree'ing above link: org.apache.qpid.proton.engine.impl.SenderImpl@550661b8
doFree'ing sender: org.apache.qpid.proton.engine.impl.SenderImpl@ce20c1e
doFree'ing above link: org.apache.qpid.proton.engine.impl.SenderImpl@ce20c1e
doFree'ing session: org.apache.qpid.proton.engine.impl.SessionImpl@38c07b1d
doFree'ing connection:
org.apache.qpid.proton.engine.impl.ConnectionImpl@1eabbba2
{noformat}
> calling free() on session with multiple Sender or Receiver links leads to
> ConcurrentModificationException
> ---------------------------------------------------------------------------------------------------------
>
> Key: PROTON-685
> URL: https://issues.apache.org/jira/browse/PROTON-685
> Project: Qpid Proton
> Issue Type: Bug
> Components: proton-j
> Reporter: Robbie Gemmell
> Assignee: Robbie Gemmell
> Fix For: 0.8
>
> Attachments:
> 0003-PROTON-685-python-test-which-doesnt-run-against-prot.patch
>
>
> If a session (/parent connection) has free() called on it with multiple
> Sender or Receiver links then a ConcurrentModificationException is thrown
> during the process due to modifying a map whilst iterating its values.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)