public void createFPRBucketsForThisNode() {
    final Map<BucketRollup, Move> moves = new HashMap<>();

    for (BucketRollup bucket : model.getLowRedundancyBuckets()) {
      Move move = model.findBestTargetForFPR(bucket, true);

      if (move == null && !model.enforceUniqueZones()) {
        move = model.findBestTargetForFPR(bucket, false);
      }

      if (move != null) {
        moves.put(bucket, move);
      } else {
        if (logger.isDebugEnabled()) {
          logger.debug("Skipping low redundancy bucket {} because no member will accept it",
              bucket);
        }
      }
    }
    // TODO: This can be done in a thread pool to speed things up as all buckets
    // are different, there will not be any contention for lock
    for (Map.Entry<BucketRollup, Move> bucketMove : moves.entrySet()) {
      BucketRollup bucket = bucketMove.getKey();
      Move move = bucketMove.getValue();
      Member targetMember = move.getTarget();

      model.createRedundantBucket(bucket, targetMember);
    }
    model.waitForOperations();
  }
A director to create redundant copies for buckets in the correct place for a fixed partitioned
region. This is most commonly used as part of the FPRDirector.
geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/rebalance/SatisfyRedundancyFPR.java