mina-dev mailing list archives

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

     [ https://issues.apache.org/jira/browse/DIRMINA-717?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Emmanuel Lecharny reassigned DIRMINA-717:
-----------------------------------------

    Assignee: Emmanuel Lecharny

> 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
>            Assignee: Emmanuel Lecharny
>             Fix For: 2.0.0-M7
>
>
> 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