public boolean waitForRepliesUninterruptibly(long p_msecs, StoppableCountDownLatch latch,
      boolean doCleanUp) throws ReplyException {
    if (keeperCleanedUp) {
      throw new IllegalStateException(
          "This reply processor has already been removed from the processor keeper");
    }
    long msecs = p_msecs; // don't overwrite parameter
    boolean result = true;
    MessageDependencyMonitor.waitingForReply(this);
    try {
      if (stillWaiting()) {
        preWait();
        try {
          while (true) {
            // cancellation check
            dmgr.getCancelCriterion().checkCancelInProgress(null);

            long startWaitTime = System.currentTimeMillis();
            boolean interrupted = Thread.interrupted();
            try {
              result = basicWait(msecs, latch);
              break;
            } catch (InterruptedException e) {
              interrupted = true; // keep looping
              dmgr.getCancelCriterion().checkCancelInProgress(e);
              if (msecs > 0) {
                final long interruptTime = System.currentTimeMillis();
                msecs -= interruptTime - startWaitTime;
                if (msecs <= 0) {
                  msecs = 1;
                  result = false;
                  break;
                }
              }
            } finally {
              if (interrupted) {
                Thread.currentThread().interrupt();
              }
            }
          } // while
        } finally {
          if (doCleanUp) {
            postWait();
          }
        }
      } // stillWaiting
      if (exception != null) {
        throw exception;
      }
    } finally {
      if (doCleanUp) {
        cleanup();
      }
      MessageDependencyMonitor.doneWaiting(this);
    }
    return result;
  }
Wait a given number of milliseconds for the expected acks to be received. If <code>msecs</code>
milliseconds pass before all acknowlegdements are received, <code>false</code> is returned.
<p>
Thread interruptions will be ignored while waiting. If interruption occurred while in this
method, the current thread's interrupt flag will be true, but InterruptedException will not be
thrown.

@param p_msecs the number of milliseconds to wait for replies, zero will be interpreted as
       Long.MAX_VALUE

@throws ReplyException an exception passed back in reply

@throws InternalGemFireException if ack-threshold was exceeded and system property
        "ack-threshold-exception" is set to true
@throws IllegalStateException if the processor is not registered to receive replies
geode-core/src/main/java/org/apache/geode/distributed/internal/ReplyProcessor21.java