You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Timothy Bish (Created) (JIRA)" <ji...@apache.org> on 2012/02/06 17:49:59 UTC

[jira] [Created] (AMQ-3700) java.util.ConcurrentModificationException in org.apache.activemq.broker.region.Queue.iterate()

java.util.ConcurrentModificationException in org.apache.activemq.broker.region.Queue.iterate()
----------------------------------------------------------------------------------------------

                 Key: AMQ-3700
                 URL: https://issues.apache.org/jira/browse/AMQ-3700
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 5.5.1
            Reporter: Timothy Bish
            Assignee: Timothy Bish
            Priority: Minor
             Fix For: 5.6.0


The following stack was reproduced in AMQ 5.5.1 but not the Fuse Message Broker version.

{noformat}

Exception in thread "BrokerService[3561F026-E8F62746-2A202922-F17EADF0-7BCA8E67] Task-5053" java.util.ConcurrentModificationException
jvm 1    | 	at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:373)
jvm 1    | 	at java.util.LinkedHashMap$ValueIterator.next(LinkedHashMap.java:388)
jvm 1    | 	at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1376)
jvm 1    | 	at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:127)
jvm 1    | 	at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)
jvm 1    | 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
jvm 1    | 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
jvm 1    | 	at java.lang.Thread.run(Thread.java:662)

{noformat}

This can happened only in the case where the optimizedDispatch mode is enabled and multiple producers are waiting for space.  When the memory usage decreases and the notifications are run from the iterate() method the method can be called recursively leading to the error as items are removed from the messagesWaitingForSpace map.  



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] [Resolved] (AMQ-3700) java.util.ConcurrentModificationException in org.apache.activemq.broker.region.Queue.iterate()

Posted by "Timothy Bish (Resolved) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/AMQ-3700?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Timothy Bish resolved AMQ-3700.
-------------------------------

    Resolution: Fixed

Fix applied in trunk
                
> java.util.ConcurrentModificationException in org.apache.activemq.broker.region.Queue.iterate()
> ----------------------------------------------------------------------------------------------
>
>                 Key: AMQ-3700
>                 URL: https://issues.apache.org/jira/browse/AMQ-3700
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.5.1
>            Reporter: Timothy Bish
>            Assignee: Timothy Bish
>            Priority: Minor
>             Fix For: 5.6.0
>
>
> The following stack was reproduced in AMQ 5.5.1 but not the Fuse Message Broker version.
> {noformat}
> Exception in thread "BrokerService[3561F026-E8F62746-2A202922-F17EADF0-7BCA8E67] Task-5053" java.util.ConcurrentModificationException
> jvm 1    | 	at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:373)
> jvm 1    | 	at java.util.LinkedHashMap$ValueIterator.next(LinkedHashMap.java:388)
> jvm 1    | 	at org.apache.activemq.broker.region.Queue.iterate(Queue.java:1376)
> jvm 1    | 	at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:127)
> jvm 1    | 	at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)
> jvm 1    | 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> jvm 1    | 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> jvm 1    | 	at java.lang.Thread.run(Thread.java:662)
> {noformat}
> This can happened only in the case where the optimizedDispatch mode is enabled and multiple producers are waiting for space.  When the memory usage decreases and the notifications are run from the iterate() method the method can be called recursively leading to the error as items are removed from the messagesWaitingForSpace map.  

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira