You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Colin MacNaughton (JIRA)" <ji...@apache.org> on 2009/02/12 22:36:59 UTC

[jira] Created: (AMQ-2107) activemq-flow's Fixes and Refactoring in org.apache.activemq.dispatchPackage

activemq-flow's Fixes and Refactoring in org.apache.activemq.dispatchPackage
----------------------------------------------------------------------------

                 Key: AMQ-2107
                 URL: https://issues.apache.org/activemq/browse/AMQ-2107
             Project: ActiveMQ
          Issue Type: Bug
    Affects Versions: incubation
         Environment: N/A
            Reporter: Colin MacNaughton
             Fix For: incubation


There is deadlock in PriorityDispatcher.run when processing updates from foreign threads, it holds on to foreignQueue. If there are multiple dispatch threads this can lead to the following deadlock:

Thread [BrokerDispatcher-1] (Suspended)  
  owns: LinkedNodeList<T>  (id=102)  
  waiting for: LinkedNodeList<T>  (id=125)  
  PriorityDispatcher$PriorityDispatchContext.onForeignThreadUpdate() line: 132  
  ExecutionGraphLoadBalancer$ExecutionGraphNode.processForeignUpdates() line: 428  
  PriorityDispatcher$UpdateEvent.execute() line: 79  
  PriorityDispatcher.run() line: 279  
  Thread.run() line: 613  
Thread [BrokerDispatcher-2] (Suspended)  
  owns: LinkedNodeList<T>  (id=125)  
  waiting for: LinkedNodeList<T>  (id=102)  
  PriorityDispatcher$PriorityDispatchContext.onForeignThreadUpdate() line: 132  
  ExecutionGraphLoadBalancer$ExecutionGraphNode.processForeignUpdates() line: 428  
  PriorityDispatcher$UpdateEvent.execute() line: 79  
  PriorityDispatcher.run() line: 279  
  Thread.run() line: 613

The attached patch also includes refactoring of the PriorityPooledDispatcher to use a simplifed ExecutionLoadBalancer interface.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (AMQ-2107) activemq-flow's Fixes and Refactoring in org.apache.activemq.dispatchPackage

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

Hiram Chirino resolved AMQ-2107.
--------------------------------

    Resolution: Fixed

applied..  Thx!

> activemq-flow's Fixes and Refactoring in org.apache.activemq.dispatchPackage
> ----------------------------------------------------------------------------
>
>                 Key: AMQ-2107
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2107
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: incubation
>         Environment: N/A
>            Reporter: Colin MacNaughton
>             Fix For: incubation
>
>         Attachments: patch.txt
>
>
> There is deadlock in PriorityDispatcher.run when processing updates from foreign threads, it holds on to foreignQueue. If there are multiple dispatch threads this can lead to the following deadlock:
> Thread [BrokerDispatcher-1] (Suspended)  
>   owns: LinkedNodeList<T>  (id=102)  
>   waiting for: LinkedNodeList<T>  (id=125)  
>   PriorityDispatcher$PriorityDispatchContext.onForeignThreadUpdate() line: 132  
>   ExecutionGraphLoadBalancer$ExecutionGraphNode.processForeignUpdates() line: 428  
>   PriorityDispatcher$UpdateEvent.execute() line: 79  
>   PriorityDispatcher.run() line: 279  
>   Thread.run() line: 613  
> Thread [BrokerDispatcher-2] (Suspended)  
>   owns: LinkedNodeList<T>  (id=125)  
>   waiting for: LinkedNodeList<T>  (id=102)  
>   PriorityDispatcher$PriorityDispatchContext.onForeignThreadUpdate() line: 132  
>   ExecutionGraphLoadBalancer$ExecutionGraphNode.processForeignUpdates() line: 428  
>   PriorityDispatcher$UpdateEvent.execute() line: 79  
>   PriorityDispatcher.run() line: 279  
>   Thread.run() line: 613
> The attached patch also includes refactoring of the PriorityPooledDispatcher to use a simplifed ExecutionLoadBalancer interface.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (AMQ-2107) activemq-flow's Fixes and Refactoring in org.apache.activemq.dispatchPackage

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

Colin MacNaughton updated AMQ-2107:
-----------------------------------

    Attachment: patch.txt

Patch file for fix. 

> activemq-flow's Fixes and Refactoring in org.apache.activemq.dispatchPackage
> ----------------------------------------------------------------------------
>
>                 Key: AMQ-2107
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2107
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: incubation
>         Environment: N/A
>            Reporter: Colin MacNaughton
>             Fix For: incubation
>
>         Attachments: patch.txt
>
>
> There is deadlock in PriorityDispatcher.run when processing updates from foreign threads, it holds on to foreignQueue. If there are multiple dispatch threads this can lead to the following deadlock:
> Thread [BrokerDispatcher-1] (Suspended)  
>   owns: LinkedNodeList<T>  (id=102)  
>   waiting for: LinkedNodeList<T>  (id=125)  
>   PriorityDispatcher$PriorityDispatchContext.onForeignThreadUpdate() line: 132  
>   ExecutionGraphLoadBalancer$ExecutionGraphNode.processForeignUpdates() line: 428  
>   PriorityDispatcher$UpdateEvent.execute() line: 79  
>   PriorityDispatcher.run() line: 279  
>   Thread.run() line: 613  
> Thread [BrokerDispatcher-2] (Suspended)  
>   owns: LinkedNodeList<T>  (id=125)  
>   waiting for: LinkedNodeList<T>  (id=102)  
>   PriorityDispatcher$PriorityDispatchContext.onForeignThreadUpdate() line: 132  
>   ExecutionGraphLoadBalancer$ExecutionGraphNode.processForeignUpdates() line: 428  
>   PriorityDispatcher$UpdateEvent.execute() line: 79  
>   PriorityDispatcher.run() line: 279  
>   Thread.run() line: 613
> The attached patch also includes refactoring of the PriorityPooledDispatcher to use a simplifed ExecutionLoadBalancer interface.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.