public XaReplicationOperation(List<XATransactionDTO> migrationData, int partitionId, int replicaIndex) { setPartitionId(partitionId); setReplicaIndex(replicaIndex); this.migrationData = migrationData; }
@Override public void run() throws Exception { XAService xaService = getService(); NodeEngine nodeEngine = getNodeEngine(); for (XATransactionDTO transactionDTO : migrationData) { XATransaction transaction = new XATransaction( nodeEngine, transactionDTO.getRecords(), transactionDTO.getTxnId(), transactionDTO.getXid(), transactionDTO.getOwnerUuid(), transactionDTO.getTimeoutMilis(), transactionDTO.getStartTime()); xaService.putTransaction(transaction); } }
@Override public Operation prepareReplicationOperation(PartitionReplicationEvent event) { if (event.getReplicaIndex() > 1) { return null; } List<XATransactionDTO> migrationData = new ArrayList<XATransactionDTO>(); InternalPartitionService partitionService = nodeEngine.getPartitionService(); for (Map.Entry<SerializableXID, List<XATransaction>> entry : transactions.entrySet()) { SerializableXID xid = entry.getKey(); int partitionId = partitionService.getPartitionId(xid); List<XATransaction> xaTransactionList = entry.getValue(); for (XATransaction xaTransaction : xaTransactionList) { if (partitionId == event.getPartitionId()) { migrationData.add(new XATransactionDTO(xaTransaction)); } } } if (migrationData.isEmpty()) { return null; } else { return new XaReplicationOperation(migrationData, event.getPartitionId(), event.getReplicaIndex()); } }
@Override public void run() throws Exception { XAService xaService = getService(); NodeEngine nodeEngine = getNodeEngine(); for (XATransactionDTO transactionDTO : migrationData) { XATransaction transaction = new XATransaction( nodeEngine, transactionDTO.getRecords(), transactionDTO.getTxnId(), transactionDTO.getXid(), transactionDTO.getOwnerUuid(), transactionDTO.getTimeoutMilis(), transactionDTO.getStartTime()); xaService.putTransaction(transaction); } }
@Override public Operation prepareReplicationOperation(PartitionReplicationEvent event) { if (event.getReplicaIndex() > 1) { return null; } List<XATransactionDTO> migrationData = new ArrayList<XATransactionDTO>(); InternalPartitionService partitionService = nodeEngine.getPartitionService(); for (Map.Entry<SerializableXID, List<XATransaction>> entry : transactions.entrySet()) { SerializableXID xid = entry.getKey(); int partitionId = partitionService.getPartitionId(xid); List<XATransaction> xaTransactionList = entry.getValue(); for (XATransaction xaTransaction : xaTransactionList) { if (partitionId == event.getPartitionId()) { migrationData.add(new XATransactionDTO(xaTransaction)); } } } if (migrationData.isEmpty()) { return null; } else { return new XaReplicationOperation(migrationData, event.getPartitionId(), event.getReplicaIndex()); } }
public XaReplicationOperation(List<XATransactionDTO> migrationData, int partitionId, int replicaIndex) { setPartitionId(partitionId); setReplicaIndex(replicaIndex); this.migrationData = migrationData; }
return new PutRemoteTransactionOperation(); case XA_REPLICATION: return new XaReplicationOperation(); case XA_TRANSACTION_DTO: return new XATransactionDTO();
return new PutRemoteTransactionOperation(); case XA_REPLICATION: return new XaReplicationOperation(); case XA_TRANSACTION_DTO: return new XATransactionDTO();