Hi again after some time. ;)

I was now able to reproduce the problem with a MINA test. Or let's say I did the brute-force approach by re-running one test in an endless loop.
I have attached a patch of the test
(against https://github.com/apache/mina/tree/2.0) and a stack trace. After a few loops the test is stuck. You can see a lot of threads hanging in dispose() and the test is stuck when it tries to dispose the acceptor.

What is a little strange is that the javadoc says that connector.dispose(TRUE) should not be called from an IoFutureListener, but in the test it is done anyway. However, changing the parameter to FALSE does not help either.

Is there anything that can be done to prevent this hang?

Many thanks in advance for your help and best regards,
Chris.


On 15/12/17 13:04, Christoph John wrote:
Hi again,

in the meantime I probably figured out where the problem is, but still have to do some more teststo be sure.
I now have added logic to iterate over the managed sessions of an IoConnector and close them before calling IoConnector.dispose().

I will let you know if this solved the problem.

Thanks,
Chris.

On 16/10/17 16:20, Jonathan Valliere wrote:
If you can figure out a reproducible test case then I'm sure that we can fix it.

On Mon, Oct 16, 2017 at 10:01 AM Christoph John <christoph.john@macd.com <mailto:christoph.john@macd.com>> wrote:

    Hi Emmanuel,

    yes, but unfortunately it did not help.

    Thanks,
    Chris.


    On 16/10/17 15:41, Emmanuel Lécharny wrote:
    > Hi Christoph,
    >
    >
    > have you tried with this patch ? :
    >
    >
    > diff --git
    > a/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
    > b/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
    > index 50ebd4e..575b2f4 100644
    > ---
    > a/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
    > +++
    > b/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoProcessor.java
    > @@ -695,8 +695,9 @@
    >                           for (Iterator<S> i = allSessions(); i.hasNext();) {
    >                               IoSession session = i.next();
    >
    > +                            scheduleRemove((S) session);
    > +
    >                               if (session.isActive()) {
    > -                                scheduleRemove((S) session);
    >                                   hasKeys = true;
    >                               }
    >                           }
    >
    >



-- 
Christoph John
Development & Support 
T +49 241 557080-28
christoph.john@macd.com

MACD GmbH
Oppenhoffallee 103
D-52066 Aachen
www.macd.com

Amtsgericht Aachen: HRB 8151 
Ust.-Id: DE 813021663
Geschäftsführer: George Macdonald