You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by Emmanuel Lecharny <el...@gmail.com> on 2010/01/16 04:36:31 UTC

Some nformation regarding DIRMINA-755

Hi guys,

just to keep you informed about what has been found during my 
investigation on this issue.

The JIRA is talking about a regression from M6 to RC1, but in fact M6 
code has been fixed and theses fixes impact the way the dispose() method 
behaves when it's called inside a Listener : we now have a hang instead 
of a quick exit due to a deadlock detection.

Of course, we can add some deadlock detection in the dispose() method, 
and the hang will disapear, but it's just a bad workaround.

I would like to raise a question here :
  when closing a session, which is associated with a listener, should we 
allow the dispose() method to be called in the listener ?

If so, we have to find a way to get the dispose() being run in a 
separated thread than the IoProcessor, otherwise it will wait forever.

Otherwise, should we simply throw an exception, telling the user that 
it's a nonsense to call dispose in a listener ? The rational would be 
that if you dispose() in a session close listener, then *all* the other 
sessions will also be closed at the same time, something the user might 
not be aware of.

wdyt ?

-- 
Regards,
Cordialement,
Emmanuel Lécharny
www.nextury.com



Re: Some nformation regarding DIRMINA-755

Posted by Julien Vermillard <jv...@archean.fr>.
Le Sat, 16 Jan 2010 04:36:31 +0100,
Emmanuel Lecharny <el...@gmail.com> a écrit :

> Hi guys,
> 
> just to keep you informed about what has been found during my 
> investigation on this issue.
> 
> The JIRA is talking about a regression from M6 to RC1, but in fact M6 
> code has been fixed and theses fixes impact the way the dispose()
> method behaves when it's called inside a Listener : we now have a
> hang instead of a quick exit due to a deadlock detection.
> 
> Of course, we can add some deadlock detection in the dispose()
> method, and the hang will disapear, but it's just a bad workaround.
> 
> I would like to raise a question here :
>   when closing a session, which is associated with a listener, should
> we allow the dispose() method to be called in the listener ?
> 
> If so, we have to find a way to get the dispose() being run in a 
> separated thread than the IoProcessor, otherwise it will wait forever.
> 
> Otherwise, should we simply throw an exception, telling the user that 
> it's a nonsense to call dispose in a listener ? The rational would be 
> that if you dispose() in a session close listener, then *all* the
> other sessions will also be closed at the same time, something the
> user might not be aware of.
> 
> wdyt ?
> 

Well if it's convenient for the users, why not let call dispose in the
listeners and detect the deadlock as it was detected ?
Julien

-- 
Julien Vermillard

Archean Technologies
http://www.archean.fr