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

Invalidation sync clustered cache throws IllegalStateException on remote server as it starts up

    Details

    • Type: Bug
    • Status: New (View Workflow)
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 10.0.1.Final
    • Fix Version/s: None
    • Component/s: Transactions
    • Labels:
      None
    • Steps to Reproduce:
      Hide

      Attached program that will show this issue, run up one with parameters:
      java -jar -DHOME_LOG_DIR='/Users/tomdearman/repos/voidbridgecominfinispancache/data' target/voidbridge.com.infinispan.cache-1.0-SNAPSHOT-jar-with-dependencies.jar true 5 '/Users/tomdearman/repos/voidbridgecominfinispancache/data/transactions' 1

      and after waiting a few seconds run up a second with:

      java -jar -DHOME_LOG_DIR='/Users/tomdearman/repos/voidbridgecominfinispancache/data2' target/voidbridge.com.infinispan.cache-1.0-SNAPSHOT-jar-with-dependencies.jar false 10 '/Users/tomdearman/repos/voidbridgecominfinispancache/data2/transactions' 2

      The second does not write to the cache, but as it comes up it throws exception:
      16:44:15.002 [remote-thread--p3-t1] WARN o.i.r.i.NonTotalOrderTxPerCacheInboundInvocationHandler - ISPN000071: Caught exception when handling command CommitCommand

      {gtx=GlobalTx:bridge-39044:57, cacheName='game-gameAccess', topologyId=3}

      java.lang.IllegalStateException: Remote transaction not found: GlobalTx:bridge-39044:57
      at org.infinispan.commands.tx.CommitCommand.invalidRemoteTxReturnValue(CommitCommand.java:55)
      at org.infinispan.commands.tx.AbstractTransactionBoundaryCommand.invokeAsync(AbstractTransactionBoundaryCommand.java:96)
      at org.infinispan.remoting.inboundhandler.BasePerCacheInboundInvocationHandler.invokeCommand(BasePerCacheInboundInvocationHandler.java:116)
      at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.invoke(BaseBlockingRunnable.java:100)
      at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.runAsync(BaseBlockingRunnable.java:72)
      at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.run(BaseBlockingRunnable.java:41)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      at java.lang.Thread.run(Thread.java:748)

      There is a corresponding exception in the server which is trying to write to the cache.

      Show
      Attached program that will show this issue, run up one with parameters: java -jar -DHOME_LOG_DIR='/Users/tomdearman/repos/voidbridgecominfinispancache/data' target/voidbridge.com.infinispan.cache-1.0-SNAPSHOT-jar-with-dependencies.jar true 5 '/Users/tomdearman/repos/voidbridgecominfinispancache/data/transactions' 1 and after waiting a few seconds run up a second with: java -jar -DHOME_LOG_DIR='/Users/tomdearman/repos/voidbridgecominfinispancache/data2' target/voidbridge.com.infinispan.cache-1.0-SNAPSHOT-jar-with-dependencies.jar false 10 '/Users/tomdearman/repos/voidbridgecominfinispancache/data2/transactions' 2 The second does not write to the cache, but as it comes up it throws exception: 16:44:15.002 [remote-thread--p3-t1] WARN o.i.r.i.NonTotalOrderTxPerCacheInboundInvocationHandler - ISPN000071: Caught exception when handling command CommitCommand {gtx=GlobalTx:bridge-39044:57, cacheName='game-gameAccess', topologyId=3} java.lang.IllegalStateException: Remote transaction not found: GlobalTx:bridge-39044:57 at org.infinispan.commands.tx.CommitCommand.invalidRemoteTxReturnValue(CommitCommand.java:55) at org.infinispan.commands.tx.AbstractTransactionBoundaryCommand.invokeAsync(AbstractTransactionBoundaryCommand.java:96) at org.infinispan.remoting.inboundhandler.BasePerCacheInboundInvocationHandler.invokeCommand(BasePerCacheInboundInvocationHandler.java:116) at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.invoke(BaseBlockingRunnable.java:100) at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.runAsync(BaseBlockingRunnable.java:72) at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.run(BaseBlockingRunnable.java:41) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) There is a corresponding exception in the server which is trying to write to the cache.

      Description

      If we bring up one server and let it start to write to an invalidation_sync cache with putForExternalRead within a transaction, on bringing up another server which doesn't write to the cache we will get exceptions thrown on the commit of the transaction as the second server is coming up. If we use a 'put' it does not cause the issue and if it is a DISTRIBUTED_SYNC it doesn't cause the issue.
      I have tried to write this test as an infinispan test but this doesn't show the issue, on trying the EmbeddedTransactionManager in my own test it also did not show the issue so I assume it has something to do with the limited nature of the EmbeddedTransactionManager.

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                tomdearman1 Tom Dearman
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated: