Uploaded image for project: 'MINA'
  1. MINA
  2. DIRMINA-717

DefaultIoFuture.awaitUninterrruptibly() doesn't wait!

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.0.0-M6
    • 2.0.0-RC1
    • Core
    • None

    Description

      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().

      Attachments

        Activity

          People

            elecharny Emmanuel Lécharny
            jscrane Stephen Crane
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: