[infinispan-issues] [JBoss JIRA] (ISPN-5158) Transaction rolled back but returns successful response
Dan Berindei (JIRA)
issues at jboss.org
Thu Jan 22 02:19:49 EST 2015
[ https://issues.jboss.org/browse/ISPN-5158?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13034271#comment-13034271 ]
Dan Berindei commented on ISPN-5158:
------------------------------------
Found the problem: my fix was not throwing the exception if the transaction was already completed. In this case, the transaction was completed because {{TransactionTable.cleanupLeaverTransactions()}} had already rolled back transactions originating from edg-perf02:
{noformat}
11:57:32,123 TRACE [org.infinispan.transaction.TransactionTable] (transport-thread-23) Checking for transactions originated on leavers. Current cache members are [edg-perf02-35237, edg-perf01-13291, edg-perf04-62504], remote transactions: 7
11:57:32,142 DEBUG [org.infinispan.transaction.TransactionTable] (transport-thread-23) Rolling back transaction GlobalTransaction:<edg-perf03-14221>:47986:remote because originator edg-perf03-14221 left the cluster
{noformat}
I'm now trying to replace the "already completed" check with a "completed successfully" check and see how that works. It does appear to break a couple of existing recovery tests: OriginatorAndOwnerFailureReplicationTest and SimpleCacheRecoveryAdminTest.
> Transaction rolled back but returns successful response
> -------------------------------------------------------
>
> Key: ISPN-5158
> URL: https://issues.jboss.org/browse/ISPN-5158
> Project: Infinispan
> Issue Type: Bug
> Components: Core
> Affects Versions: 7.1.0.Beta1
> Reporter: Radim Vansa
> Assignee: Dan Berindei
> Priority: Critical
> Attachments: tx.txt, views.txt
>
>
> When the cluster is merging, it is possible that a node is removed from the view although it is still responsive. Eventually the cluster is merged correctly, but since the node is reported as missing from the view, transaction originating from this node is rolled back.
> {code}
> 10:01:36,116 TRACE [org.infinispan.interceptors.TxInterceptor] (remote-thread-151) Rolling back remote transaction GlobalTransaction:<edg-perf02-39415>:28106:remote because either already completed(false) or originator no longer in the cluster(true).
> {code}
> However, even after this a successful response is sent to the originator:
> {code}
> 10:01:36,119 TRACE [org.infinispan.remoting.InboundInvocationHandlerImpl] (remote-thread-151) About to send back response null for command PrepareCommand {modifications=[PutKeyValueCommand{key=key_0000000000001318, value=[19 #1: 1195, ], flags=[SKIP_CACHE_LOAD, SKIP_REMOTE_LOOKUP], putIfAbsent=false, valueMatcher=MATCH_ALWAYS, metadata=EmbeddedMetadata{version=null}, successful=true}], onePhaseCommit=false, gtx=GlobalTransaction:<edg-perf02-39415>:28106:remote, cacheName='testCache', topologyId=47}
> {code}
> Originator then expects that the transaction was successfully prepared:
> {code}
> 10:01:36,124 TRACE [org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher] (DefaultStressor-9) Responses: [sender=edg-perf01-36235, received=true, suspected=false]
> [sender=edg-perf03-24110, received=true, suspected=false]
> 10:01:36,135 TRACE [org.infinispan.transaction.TransactionCoordinator] (DefaultStressor-9) Committing transaction GlobalTransaction:<edg-perf02-39415>:28106:local
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
More information about the infinispan-issues
mailing list