[ 
https://issues.apache.org/jira/browse/IMAP-372?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13632690#comment-13632690
 ] 

Andrzej Rusin commented on IMAP-372:
------------------------------------

So: if the above mentioned thread A releases the lock on listeners HashMap (not 
needed anymore as no modification is being done to it) before proceeding to 
call process the events on the listeners of the mailbox (which in turn need a 
lock on SelectedMailboxImpl instance), this particula deadlock scenario is no 
longer possible.
                
> Deadlock in AbstractDelegatingMailboxListener under load
> --------------------------------------------------------
>
>                 Key: IMAP-372
>                 URL: https://issues.apache.org/jira/browse/IMAP-372
>             Project: James Imap
>          Issue Type: Bug
>          Components: Mailbox
>            Reporter: Andrzej Rusin
>            Assignee: Eric Charles
>         Attachments: James Listener Deadlock.txt
>
>
> In AbstractDelegatingMailboxListener::event, firing the events inside the 
> synchronized blocks causes a deadlock involving:
> lock on HashMapDelegatingMailboxListener::listeners
> (synchronized methods) lock on SelectedMailboxImpl
> In my example, these 3 methods got interlocked:
> AbstractDelegatingMailboxListener.addListener
> SelectedMailboxImpl.msn
> AbstractDelegatingMailboxListener.removeListener
> My idea to fix it is basically to take the for loop on mListeners outside the 
> synchronized block in 
> org.apache.james.mailbox.store.AbstractDelegatingMailboxListener.event(Event).
>  That will not make the propagated event processing in SelectedMailboxImpl 
> hit the synchronized lock on listeners.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to