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