@Test public void testAfterCompletionNotInvokedIfJTACompleted() throws Exception { InternalCache cache = mock(InternalCache.class); TXManagerImpl txMgr = mock(TXManagerImpl.class); ClusterDistributionManager distributionManager = mock(ClusterDistributionManager.class); TXId txId = mock(TXId.class); when(distributionManager.getCache()).thenReturn(cache); when(cache.getTXMgr()).thenReturn(txMgr); when(txMgr.getRecentlyCompletedMessage(txId)).thenReturn(mock(TXCommitMessage.class)); when(txMgr.getTXState()).thenReturn(mock(TXStateProxyImpl.class)); JtaAfterCompletionMessage message = new JtaAfterCompletionMessage(); JtaAfterCompletionMessage spyMessage = spy(message); when(spyMessage.getSender()).thenReturn(mock(InternalDistributedMember.class)); spyMessage.operateOnTx(txId, distributionManager); verify(txMgr, never()).getTXState(); }
@Test public void commandCanSendBackCommitMessageIfAlreadyCommitted() throws Exception { when(part0.getInt()).thenReturn(TXSynchronizationOp.CompletionType.AFTER_COMPLETION.ordinal()); when(txManager.getRecentlyCompletedMessage(txId)).thenReturn(txCommitMessage); doNothing().when(command).writeCommitResponse(clientMessage, serverConnection, txCommitMessage); doCallRealMethod().when(command).cmdExecute(clientMessage, serverConnection, null, 1); command.cmdExecute(clientMessage, serverConnection, null, 1); verify(command, times(1)).writeCommitResponse(clientMessage, serverConnection, txCommitMessage); verify(serverConnection, times(1)).setAsTrue(Command.RESPONDED); }
TXCommitMessage commitMessage = txMgr.getRecentlyCompletedMessage(txId); try {
TXManagerImpl txMgr = cache.getTXMgr(); final TXStateProxy txStateProxy = txMgr.getTXState(); TXCommitMessage commitMessage = txMgr.getRecentlyCompletedMessage(txId); try {
int uniqId = clientMessage.getTransactionId(); TXId txId = new TXId(client, uniqId); TXCommitMessage commitMsg = txMgr.getRecentlyCompletedMessage(txId); if (commitMsg != null) { if (logger.isDebugEnabled()) {
@Override protected boolean operateOnTx(TXId txId, ClusterDistributionManager dm) throws RemoteOperationException { TXManagerImpl txMgr = dm.getCache().getTXMgr(); if (logger.isDebugEnabled()) { logger.debug("JTA: Calling afterCompletion for :{}", txId); } TXCommitMessage commitMessage = txMgr.getRecentlyCompletedMessage(txId); if (commitMessage != null) { TXCommitMessage message = commitMessage == TXCommitMessage.ROLLBACK_MSG ? null : commitMessage; TXRemoteCommitReplyMessage.send(getSender(), getProcessorId(), message, getReplySender(dm)); return false; } TXStateProxy txState = txMgr.getTXState(); txState.setCommitOnBehalfOfRemoteStub(true); txState.afterCompletion(status); commitMessage = txState.getCommitMessage(); TXRemoteCommitReplyMessage.send(getSender(), getProcessorId(), commitMessage, getReplySender(dm)); txMgr.removeHostedTXState(txId); return false; }
TXCommitMessage commitMessage = txMgr.getRecentlyCompletedMessage(txId); if (commitMessage != null && commitMessage != TXCommitMessage.ROLLBACK_MSG) { assert type == CompletionType.AFTER_COMPLETION;