@Override
  protected boolean operateOnPartitionedRegion(ClusterDistributionManager dm,
      PartitionedRegion partitionedRegion, long startTime) {
    if (logger.isTraceEnabled(LogMarker.DM_VERBOSE)) {
      logger.trace(LogMarker.DM_VERBOSE, "ManageBucketMessage operateOnRegion: {}",
          partitionedRegion.getFullPath());
    }

    partitionedRegion.checkReadiness(); // Don't allow closed PartitionedRegions that have
                                        // datastores to host buckets
    PartitionedRegionDataStore prDs = partitionedRegion.getDataStore();

    // This is to ensure that initialization is complete for all colocated regions
    // before bucket creation request is serviced. BUGFIX for 35888
    // GEODE-5255
    boolean isReady = prDs.isPartitionedRegionReady(partitionedRegion, bucketId);
    if (!isReady) {
      // This VM is NOT ready to manage a new bucket, refuse operation
      sendManageBackupBucketReplyMessage(dm, partitionedRegion, startTime, ReplyType.INITIALIZING);
      return false;
    }

    boolean managingBucket = prDs.grabBucket(bucketId, moveSource, forceCreation,
        replaceOfflineData, isRebalance, null, false) == CreateBucketResult.CREATED;

    sendManageBackupBucketReplyMessage(dm, partitionedRegion, startTime,
        managingBucket ? ReplyType.SUCCESS : ReplyType.FAIL);
    return false;
  }
This method is called upon receipt and make the desired changes to the PartitionedRegion Note:
It is very important that this message does NOT cause any deadlocks as the sender will wait
indefinitely for the acknowledgement
geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/ManageBackupBucketMessage.java