public boolean waitForPreviousCompletion() {
    synchronized (completionGuard) {// should have already been done, but just to be sure
      if (!completionStarted) {
        return false;
      }
      while (commitMessage == null && !closed) {
        if (logger.isDebugEnabled()) {
          logger.debug("Waiting for previous completion for transaction {}", getTransactionId());
        }
        try {
          completionGuard.wait();
        } catch (InterruptedException e) {
          proxy.getCache().getCancelCriterion().checkCancelInProgress(e);
          Thread.currentThread().interrupt();
          return true;
        }
      } // while
    }
    return true;
  }
This is a fix for bug #42228 where a client fails over from one server to another but gets a
conflict on completion because completion had already been initiated and had not yet completed

@return true if a previous completion was in progress
geode-core/src/main/java/org/apache/geode/internal/cache/TXState.java