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.