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;

i.e., 
        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.


Mime
View raw message