Hi,
I don't know how to do that, and I don't know what to add except for the
information which I already have posted.
This worked as a workaround:
public void exceptionCaught(final IoSession session, Throwable
e) throws Exception {
String logString = "Caught exception on session: " +
session + " ";
if (session instanceof BaseSession) {
logString += " remote: " +
((BaseSession)session).getRemoteAddress() + " ";
}
LOGGER.warn("exceptionCaught", logString +
e.getMessage());
//XXX: Workaround for bug(?) in MINA 0.8.2.
//session closed can't be invoked by calling thread.
Could be
//changed so that it uses a thread pool
new Thread() {
public void run() {
//This call will block calling thread so
no one can do
//notify if we don't spawn a new thread
session.close(true);
}
}.start();
}
> -----Original Message-----
> From: Trustin Lee [mailto:[EMAIL PROTECTED]
> Sent: 22 August 2006 06:56
> To: [email protected]
> Subject: Re: Problem during upgrade from 0.7.3 to 0.8.2
>
> Could you please open a JIRA issue which attaches your full
> thread dump?
>
> Thanks in advance,
> Trustin
>
> On 8/4/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> >
> > Hi,
> >
> > I have some problems during upgrade from 0.7.3 to 0.8.2. I
> think I can
> > write a work around for the problem, but I'm not sure how things are
> > supposed to be.
> >
> > The scenario is that a client connection which implements
> IoHandler has
> > a connection towards the server. The session on the
> connection should be
> > removed if the connection is terminated, and I should also inform my
> > upper layers about the disconnect.
> >
> > This is how the flow was in 0.7.3 when a disconnect was
> detected (Remote
> > end is abruptly disconnecting):
> >
> > exceptionCaught -> session.close(true) -> sessionClosed
> >
> > That is I call session.close(true) from the method
> exceptionCaught, and
> > that leads to a callback to sessionClosed. I do some cleanup in
> > sessionClosed and informs my upper layers about the disconnect.
> >
> > This happens in 0.8.2:
> >
> > exceptionCaught -> session.close(true) -> blocked in wait.
> >
> > That is, the thread hangs / is blocked in wait, and never
> gets out of
> > it.
> >
> > The problem does not occur if session.close(true) is called
> on client
> > side during normal program flow.
> >
> > Is this how it's supposed to work?
> >
> > Thanks for your help
> > Kaj
> >
> >
> >
> >
>
>
> --
> what we call human nature is actually human habit
> --
> http://gleamynode.net/
> --
> PGP key fingerprints:
> * E167 E6AF E73A CBCE EE41 4A29 544D DE48 FE95 4E7E
> * B693 628E 6047 4F8F CFA4 455E 1C62 A7DC 0255 ECA6
>