are you not getting the END event at all, even after the app is reloaded?
Filip
Peter Warren wrote:
I'm running tomcat 6.0.18 on Ubuntu 8.10. I have a comet application
that maintains an open connection with tomcat. If I re-start my
webapp and then close the client connection, tomcat goes into a loop
and chews up all cpu. This server is not live and only has my single
client.
The ClientPoller thread consumes most of the cpu running through the
following stack over and over.
Daemon Thread [http-80-ClientPoller] (Suspended (breakpoint at line
654 in ThreadPoolExecutor))
ThreadPoolExecutor.execute(Runnable) line: 654
NioEndpoint.processSocket(NioChannel, SocketStatus, boolean) line: 1161
NioEndpoint.processSocket(NioChannel, SocketStatus) line: 1148
NioEndpoint$Poller.processKey(SelectionKey,
NioEndpoint$KeyAttachment) line: 1555
NioEndpoint$Poller.run() line: 1508
Thread.run() line: 619
This is not a problem with my CometProcessor not handling the comet
events; the END event when the client connection is closed is never
delivered to my CometProcessor, understandably since I just re-started
the webapp and there is now a new CometProcessor instance.
I believe what is happening is that the NIO connector is trying to
deliver the END event to a CometProcessor that no longer exists and
just keeps trying. Should the NIO connector recognize that the event
is undeliverable and give up? Or is there something I need to do in
webapp shutdown code to tell the NIO processor to disregard any open
connections?
The workaround is to always re-start the tomcat instead of just the
webapp. This is possible for me since my server is only serving a
single webapp.
Peter
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]