public void waitForAllToProcess() throws InterruptedException {
    if (Thread.interrupted()) {
      throw new InterruptedException(); // wisest to do this before the synchronize below
    }
    // Assume that a thread interrupt is only set in the
    // case of a shutdown, in that case we don't need to wait
    // around any longer, propagating the interrupt is reasonable behavior
    boolean messageWritten = false;
    synchronized (txInProgress) {
      while (!txInProgress.isEmpty()) {
        logger.info("Lock grantor recovery is waiting for transactions to complete: {}",
            txInProgress);
        messageWritten = true;
        txInProgress.wait();
      }
    }
    if (messageWritten) {
      logger.info("Wait for transactions completed");
    }
  }
Answers new Grantor query regarding whether it can start handing out new locks. Waits until
txInProgress is empty.
geode-core/src/main/java/org/apache/geode/internal/cache/TXFarSideCMTracker.java