public static PrimaryResponse send(Set recipients, PartitionedRegion r, int bucketId)
      throws ForceReattemptException {
    Assert.assertTrue(recipients != null, "PrimaryRequestMessage NULL recipient");
    PrimaryResponse p = new PrimaryResponse(r.getSystem(), recipients);
    PrimaryRequestMessage m = new PrimaryRequestMessage(recipients, r.getPRId(), p, bucketId);
    m.setTransactionDistributed(r.getCache().getTxManager().isDistributed());

    Set failures = r.getDistributionManager().putOutgoing(m);
    if (failures != null && failures.size() > 0) {
      throw new ForceReattemptException(
          String.format("Failed sending < %s >", m));
    }

    return p;
  }
Send request for primary election

@param recipients those members which own the bucket
@param r the Partitioned Region which uses/owns the bucket
@param bucketId the idenity of the bucket
@return a response object on which the caller waits for acknowledgement of which member is the
        primary
@throws ForceReattemptException if the message was unable to be sent
geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PrimaryRequestMessage.java