@Override
 protected void process(DistributionManager dm) {
   try {
     PartitionedRegion pr = PartitionedRegion.getPRFromId(this.prId);
     for (Map.Entry<Integer, BucketAdvisor.BucketProfile> profile : this.profiles.entrySet()) {
       pr.getRegionAdvisor().putBucketProfile(profile.getKey(), profile.getValue());
     }
   } catch (PRLocallyDestroyedException fre) {
     if (logger.isDebugEnabled()) logger.debug("<region locally destroyed> ///{}", this);
   } catch (RegionDestroyedException e) {
     if (logger.isDebugEnabled()) logger.debug("<region destroyed> ///{}", this);
   } catch (CancelException e) {
     if (logger.isDebugEnabled()) logger.debug("<cache closed> ///{}", this);
   } catch (VirtualMachineError err) {
     SystemFailure.initiateFailure(err);
     // If this ever returns, rethrow the error.  We're poisoned
     // now, so don't let this thread continue.
     throw err;
   } catch (Throwable ignore) {
     // Whenever you catch Error or Throwable, you must also
     // catch VirtualMachineError (see above).  However, there is
     // _still_ a possibility that you are dealing with a cascading
     // error condition, so you also need to check to see if the JVM
     // is still usable:
     SystemFailure.checkFailure();
   } finally {
     if (this.processorId != 0) {
       ReplyMessage.send(getSender(), this.processorId, null, dm);
     }
   }
 }
 @Override
 public void process(final DM dm, final ReplyProcessor21 processor) {
   if (logger.isTraceEnabled(LogMarker.STATE_FLUSH_OP)) {
     logger.trace(LogMarker.STATE_FLUSH_OP, "Processing {}", this);
   }
   super.process(dm, processor);
 }
  /**
   * Send a generic ReplyMessage. This is in a method so that subclasses can override the reply
   * message type
   *
   * @param pr the Partitioned Region for the message whose statistics are incremented
   * @param startTime the start time of the operation in nanoseconds
   * @see PutMessage#sendReply
   */
  protected void sendReply(
      InternalDistributedMember member,
      int procId,
      DM dm,
      ReplyException ex,
      LocalRegion pr,
      long startTime) {
    //    if (pr != null && startTime > 0) {
    // pr.getPrStats().endRemoteOperationMessagesProcessing(startTime);
    //    }

    ReplyMessage.send(member, procId, ex, getReplySender(dm), pr != null && pr.isInternalRegion());
  }
 @Override
 public void fromData(DataInput din) throws IOException, ClassNotFoundException {
   super.fromData(din);
   sendingMember = (DistributedMember) DataSerializer.readObject(din);
 }
 @Override
 public void toData(DataOutput dout) throws IOException {
   super.toData(dout);
   DataSerializer.writeObject(sendingMember, dout);
 }