Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.0.0-RC1
-
None
-
None
Description
(Extracted from the ML)
I recently switched from 2.0.0-M6 to 2.0.0-RC1 and now discovered a
problem with the IoConnector (I'm using the nio stuff)...
I'll try to explain:
In case of network connection shutdown I try to clean up as good as
possible. I terminate tread pools, I close the session, and finally I try
to dispose the IoConnector.
Here's a small code-snippet from my shutdown-code:
CloseFuture closeFuture = ctsc.getSession().close(false);
closeFuture.addListener(new
IoFutureListener<IoFuture>() {
public void operationComplete(IoFuture future)
{ ctsc.getFilterchainWorkerPool().shutdown(); System.out.println("managed session count= "+ctsc.getConnector().getManagedSessionCount()); ctsc.getConnector().dispose(); }});
"ctsc" is a simple container which contains the session (getSession) and
the used connection (getConnector). First I try to close the session. Then,
if this operation is completed, I try to shutdown a thread pool and finally
dispose the connector. I read in the api doc, that this dispose call may
block in case of still open session related to this connector.
I tried to print out the number of still open sessions. On the console I
get: "managed session count= 0"
But the next call, the dispose() call, blocks and prevents the remaining
threads from shutdown to get a clean application termination.
If I switch from RC1 backt o M6, this works quite well.
Am I doing something wrong? Has the behavior changed? *little bit
confused*