@Override
  protected void sendReply(InternalDistributedMember member, int procId, DistributionManager dm,
      ReplyException ex, PartitionedRegion pr, long startTime) {
    // if (!result && getOperation().isCreate()) {
    // System.err.println("DEBUG: put returning false. ifNew=" + ifNew
    // +" ifOld="+ifOld + " message=" + this);
    // }
    if (pr != null) {
      if (startTime > 0) {
        pr.getPrStats().endPartitionMessagesProcessing(startTime);
      }
      if (!pr.getConcurrencyChecksEnabled() && versions != null) {
        versions.clear();
      }
    }
    PutAllReplyMessage.send(member, procId, getReplySender(dm), result, versions, ex);
  }
This method is called by both operateOnPartitionedRegion() when processing a remote msg or by
sendMsgByBucket() when processing a msg targeted to local Jvm. PartitionedRegion Note: It is
very important that this message does NOT cause any deadlocks as the sender will wait
indefinitely for the acknowledgment

@param r partitioned region eventSender the endpoint server who received request from client
       lastModified timestamp for last modification
@return If succeeds, return true, otherwise, throw exception
geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PutAllPRMessage.java