public void postPutAll(final DistributedPutAllOperation putAllOp,
      final VersionedObjectList successfulPuts, final LocalRegion region) {
    // TODO: TX: add support for batching using performOp as for other
    // update operations; add cacheWrite flag support for proper writer
    // invocation like in other ops; also support for NORMAL/PRELOADED regions?
    markDirty();
    if (isSnapshot()) {
      addAffectedRegion(region);
      region.getSharedDataView().postPutAll(putAllOp, successfulPuts, region);
      return;
    }
    if (region.getPartitionAttributes() != null) {
      // use PutAllPRMessage that already handles transactions
      region.postPutAllSend(putAllOp, this, successfulPuts);
    }
    else {
      try {
        final PutAllEntryData[] data = putAllOp.putAllData;
        final EntryEventImpl event = putAllOp.getBaseEvent();
        final RemotePutAllMessage msg = new RemotePutAllMessage(event, null,
            data, data.length, event.isPossibleDuplicate(), null, this);
        // process on self first
        if (region.getDataPolicy().withStorage()) {
          msg.doLocalPutAll(region, event, putAllOp, successfulPuts,
              region.getMyId(), false /* sendReply */);
        }
        addAffectedRegion(region);
        if (region.getScope().isDistributed()) {
          // distribute if required
          msg.distribute(event);
        }
      } catch (RemoteOperationException roe) {
        throw new TransactionDataNodeHasDepartedException(roe);
      }
    }
  }
public void postPutAll(final DistributedPutAllOperation putAllOp,
      final VersionedObjectList successfulPuts, final LocalRegion region) {
   
   
   
    markDirty();
    if (isSnapshot()) {
      addAffectedRegion(region);
      region.getSharedDataView().postPutAll(putAllOp, successfulPuts, region);
      return;
    }
    if (region.getPartitionAttributes() != null) {
     
      region.postPutAllSend(putAllOp, this, successfulPuts);
    }
    else {
      try {
        final PutAllEntryData[] data = putAllOp.putAllData;
        final EntryEventImpl event = putAllOp.getBaseEvent();
        final RemotePutAllMessage msg = new RemotePutAllMessage(event, null,
            data, data.length, event.isPossibleDuplicate(), null, this);
       
        if (region.getDataPolicy().withStorage()) {
          msg.doLocalPutAll(region, event, putAllOp, successfulPuts,
              region.getMyId(), false);
        }
        addAffectedRegion(region);
        if (region.getScope().isDistributed()) {
         
          msg.distribute(event);
        }
      } catch (RemoteOperationException roe) {
        throw new TransactionDataNodeHasDepartedException(roe);
      }
    }
  }
public void postputall(final distributedputalloperation putallop, final versionedobjectlist successfulputs, final localregion region) { markdirty(); if (issnapshot()) { addaffectedregion(region); region.getshareddataview().postputall(putallop, successfulputs, region); return; } if (region.getpartitionattributes() != null) { region.postputallsend(putallop, this, successfulputs); } else { try { final putallentrydata[] data = putallop.putalldata; final entryeventimpl event = putallop.getbaseevent(); final remoteputallmessage msg = new remoteputallmessage(event, null, data, data.length, event.ispossibleduplicate(), null, this); if (region.getdatapolicy().withstorage()) { msg.dolocalputall(region, event, putallop, successfulputs, region.getmyid(), false); } addaffectedregion(region); if (region.getscope().isdistributed()) { msg.distribute(event); } } catch (remoteoperationexception roe) { throw new transactiondatanodehasdepartedexception(roe); } } }