Hello Steve, On 9/21/06, Steve Bate <[EMAIL PROTECTED]> wrote:
I have some code where I want to close my session and not return from the current method until the close is complete. I wrote something similar to... iosession.close().join(); This code is called during a session's exceptionCaught filter chain invocation. The problem is that the callback happens in the socket io processor thread and the thread blocks in the join() operation so the close future status never set.
Did you add the filter *before* the ThreadPoolFilter (or ExecutorFilter)? Then it can happen. Please try to add your filter after the ThreadPoolFilter. If you are using the latest release of MINA and don't need to add a ThreadPoolFilter by yourself; it's added by default. If you are adding your filter by calling addFirst, then please try to add it by calling addLast. Am I doing something incorrect here or is this a bug? The code fragment
described above is also called from application threads (without blocking indefinitely, as expected). Any advice?
I think it is not really a bug. We just need more documentation. As you figured out, it is impossible to wait for the future when the thread you called join() is also supposed to notify the future. The only way to avoid this deadlock is to wait in another thread. HTH, Trustin -- 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
