You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Rajith Attapattu (JIRA)" <ji...@apache.org> on 2011/06/20 19:42:47 UTC
[jira] [Commented] (QPID-3311) ConcurrentModificationException in
java client during failover
[ https://issues.apache.org/jira/browse/QPID-3311?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13052096#comment-13052096 ]
Rajith Attapattu commented on QPID-3311:
----------------------------------------
The patch looks good to me.
I will commit this shortly.
> ConcurrentModificationException in java client during failover
> --------------------------------------------------------------
>
> Key: QPID-3311
> URL: https://issues.apache.org/jira/browse/QPID-3311
> Project: Qpid
> Issue Type: Bug
> Components: Java Client
> Reporter: Siddhesh Poyarekar
> Attachments: TxSender.java, qpid-java-safe-remove-sessions.patch
>
>
> Description of problem:
> The java client removes transacted sessions during failover. This removal is
> not safe however, since it happens when the Hashmap of sessions is being
> iterated through. This occasionally results in a
> ConcurrentModificationException.
> How reproducible:
> Always
> Steps to Reproduce:
> 1. Run attached program
> Actual results:
> ERROR [IoReceiver - localhost/127.0.0.1:5672]
> (AMQConnectionDelegate_0_10.java:281) - error during failover
> java.util.ConcurrentModificationException
> at java.util.HashMap$HashIterator.nextEntry(HashMap.java:810)
> at java.util.HashMap$ValueIterator.next(HashMap.java:839)
> at org.apache.qpid.transport.Connection.resume(Connection.java:469)
> at
> org.apache.qpid.client.AMQConnectionDelegate_0_10.resubscribeSessions(AMQConnectionDelegate_0_10.java:221)
> at
> org.apache.qpid.client.AMQConnection.resubscribeSessions(AMQConnection.java:1207)
> at
> org.apache.qpid.client.AMQConnectionDelegate_0_10.closed(AMQConnectionDelegate_0_10.java:274)
> at org.apache.qpid.transport.Connection.closed(Connection.java:561)
> at org.apache.qpid.transport.network.Assembler.closed(Assembler.java:110)
> at
> org.apache.qpid.transport.network.InputHandler.closed(InputHandler.java:202)
> at org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:150)
> at java.lang.Thread.run(Thread.java:636)
> ERROR [IoReceiver - localhost/127.0.0.1:5672]
> (AMQConnectionDelegate_0_10.java:293) - connection exception: conn:3749eb9f
> org.apache.qpid.transport.ConnectionException: connection aborted
> at org.apache.qpid.transport.Connection.closed(Connection.java:534)
> at org.apache.qpid.transport.network.Assembler.closed(Assembler.java:110)
> at
> org.apache.qpid.transport.network.InputHandler.closed(InputHandler.java:202)
> at org.apache.qpid.transport.network.io.IoReceiver.run(IoReceiver.java:150)
> at java.lang.Thread.run(Thread.java:636)
> Expected results:
> Successful failover
> Additional info:
> Logging options (log4j.properties):
> log4j.rootLogger=debug, stdout, R
> log4j.appender.stdout=org.apache.log4j.ConsoleAppender
> log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
> # Pattern to output the caller's file name and line number.
> log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
> log4j.appender.R=org.apache.log4j.FileAppender
> log4j.appender.R.File=example.log
> log4j.appender.R.MaxFileSize=100000000KB
> # Keep one backup file
> log4j.appender.R.MaxBackupIndex=1
> log4j.appender.R.layout=org.apache.log4j.PatternLayout
> log4j.logger.org.apache=TRACE
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org