Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-2459

Rollback not preceded by Prepare sent to remote site

    XMLWordPrintable

Details

    Description

      When a TransactionManager.rollback() is called under optimistic locking, the RollbackCommand is sent to the remote site with backup cache. This makes no sense as there are no changes to roll back, and furthermore, the command fails in the remote site as the transaction which is rolled back is not known:

      05:37:00,727 WARN  [org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher] (Incoming-2,global,_edg-perf01-58034:LON) Problems invoking command SingleRpcCommand{cacheName='nycCache', command=RollbackCommand {gtx=GlobalTransaction:<c25cba86-1e90-e190-b101-155e93063c9c[T]>:5:local, cacheName='nycCache', topologyId=-1}}
      org.infinispan.CacheException: Couldn't find a local transaction corresponding to remote transaction GlobalTransaction:<c25cba86-1e90-e190-b101-155e93063c9c[T]>:5:local
              at org.infinispan.xsite.BackupReceiver$BackupCacheUpdater.completeTransaction(BackupReceiver.java:187)
              at org.infinispan.xsite.BackupReceiver$BackupCacheUpdater.visitRollbackCommand(BackupReceiver.java:178)
              at org.infinispan.commands.tx.RollbackCommand.acceptVisitor(RollbackCommand.java:61)
              at org.infinispan.xsite.BackupReceiver.handleRemoteCommand(BackupReceiver.java:76)
              at org.infinispan.xsite.BackupReceiverRepositoryImpl.handleRemoteCommand(BackupReceiverRepositoryImpl.java:60)
              at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.executeCommandFromRemoteSite(CommandAwareRpcDispatcher.java:240)
              at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.handle(CommandAwareRpcDispatcher.java:217)
              at org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:483)
              at org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:390)
              at org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:248)
              at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:604)
              at org.jgroups.JChannel.up(JChannel.java:670)
              at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1020)
              at org.jgroups.protocols.relay.RELAY2.deliver(RELAY2.java:420)
              at org.jgroups.protocols.relay.RELAY2.route(RELAY2.java:316)
              at org.jgroups.protocols.relay.RELAY2.handleMessage(RELAY2.java:292)
              at org.jgroups.protocols.relay.RELAY2.handleRelayMessage(RELAY2.java:272)
              at org.jgroups.protocols.relay.Relayer$Bridge.receive(Relayer.java:214)
              at org.jgroups.JChannel.invokeCallback(JChannel.java:712)
              at org.jgroups.JChannel.up(JChannel.java:673)
              at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1020)
              at org.jgroups.protocols.RSVP.up(RSVP.java:188)
              at org.jgroups.protocols.FRAG2.up(FRAG2.java:181)
              at org.jgroups.protocols.FlowControl.up(FlowControl.java:418)
              at org.jgroups.protocols.FlowControl.up(FlowControl.java:400)
              at org.jgroups.protocols.pbcast.GMS.up(GMS.java:896)
              at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:244)
              at org.jgroups.protocols.UNICAST2.handleDataReceived(UNICAST2.java:769)
              at org.jgroups.protocols.UNICAST2.up(UNICAST2.java:414)
              at org.jgroups.protocols.pbcast.NAKACK2.up(NAKACK2.java:601)
              at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:288)
              at org.jgroups.protocols.Discovery.up(Discovery.java:359)
              at org.jgroups.protocols.TP.passMessageUp(TP.java:1293)
              at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1856)
              at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1829)
              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
              at java.lang.Thread.run(Thread.java:662)
      

      Attachments

        Activity

          People

            mircea.markus Mircea Markus (Inactive)
            rvansa1@redhat.com Radim Vansa (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: