Hi there,
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();
Cheers,
Steve