mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephen Crane (JIRA)" <j...@apache.org>
Subject [jira] Created: (DIRMINA-717) DefaultIoFuture.awaitUninterrruptibly() doesn't wait!
Date Thu, 04 Jun 2009 10:27:07 GMT
DefaultIoFuture.awaitUninterrruptibly() doesn't wait!

                 Key: DIRMINA-717
                 URL: https://issues.apache.org/jira/browse/DIRMINA-717
             Project: MINA
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.0.0-M6
            Reporter: Stephen Crane

DefaultIoFuture.awaitUninterrruptibly() calls await0(Log.MAX_VALUE,
false) which does:

        long endTime = System.currentTimeMillis() + timeoutMillis;

        long endTime = System.currentTimeMillis() + Long.MAX_VALUE;

This comes out <0 which leads to:

            if (ready) {
                return ready;
            } else if (timeoutMillis <= 0) {
                return ready;

Doesn't really matter what is returned here because the return value is
ignored by the caller:

        try {
            await0(Long.MAX_VALUE, false);
        } catch ( InterruptedException ie) {
            // Do nothing : this catch is just mandatory by contract

The right solution IMHO would be to use a timeout of -1 to wait forever
and 0 for a poll. However you might prefer:

        long endTime = timeoutMillis;
        if (endTime != Long.MAX_VALUE)
                endTime += System.currentTimeMillis();

BTW I think this is also related to the Shutdown Thread. It looks like this pattern is used
around the disposalFuture. See AbstractIoService.dispose().

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message