1 2 Previous Next 21 Replies Latest reply on Feb 24, 2009 11:37 AM by nathanmesser

    Rolled back transactions sometimes failing to release locks

    nathanmesser

      We have a problem with JBoss Cache 3.0.2 (also present on 3.0.0) using MVCC locking, on Weblogic 10.3, running in a single instance, whereby a transaction can rollback due to a timeout but not release the locks it's holding.

      In normal use this happens fairly rarely, but often enough to be worrying, as the only way to release the lock is to restart the cache.

      It's also not as simple as a transaction rolled back by timeout will always fail to release all it's locks, as normally it works fine.

      By fluke I've found out that if I reduce my JTA and lock timouts, and turn on trace logging on the TxInterceptor, then when I start up our app (which loads various sets of data into the cache, in seperate transactions) I can cause this to happen.

      I've included the error we get (sometime after GlobalTransaction:28 has rolled back), and our jboss cache configuration file.

      I've also got the jboss cache trace log for org.jboss.cache.inteceptors.TxInterceptor and org.jboss.cache.lock on GlobalTransaction:28, but that's quite large, is there a better way of making that available to jboss cache developers than trying to paste the log into a forum message?

      1) Are there any other logs that would be useful?

      2) I recall when I saw this before Christmas, when I assumed it was related to replication, Manik mentioned that weblogic 10.3 should now have a fixed transaction manager implementation. Does this look like it refutes that, or is this another problem?

      3) Any ideas for a workaround? We're planning to go live in a few weeks, and this is quite worrying.

      <jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.0">

      <!--
      isolationLevel : SERIALIZABLE - (not supported in mvcc) REPEATABLE_READ (default)
      READ_COMMITTED READ_UNCOMMITTED (not supported in mvcc) NONE lockAcquisitionTimeout: max
      number of milliseconds to wait for a lock acquisition nodeLockingScheme : mvcc (default)
      optimistic pessimistic
      -->


      <!-- Configure the TransactionManager -->






      Caused by: org.jboss.cache.lock.TimeoutException: Unable to acquire lock on Fqn [/Branch/1133] after [2000] milliseconds for requestor [GlobalTransaction::38]! Lock held by [GlobalTransaction::28]
      at org.jboss.cache.mvcc.MVCCNodeHelper.acquireLock(MVCCNodeHelper.java:170)
      at org.jboss.cache.mvcc.MVCCNodeHelper.wrapNodeForWriting(MVCCNodeHelper.java:248)
      at org.jboss.cache.interceptors.MVCCLockingInterceptor.handlePutDataMapCommand(MVCCLockingInterceptor.java:94)
      at org.jboss.cache.interceptors.base.PrePostProcessingCommandInterceptor.visitPutDataMapCommand(PrePostProcessingCommandInterceptor.java:70)
      at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDataMapCommand.java:104)
      at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
      at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:131)
      at org.jboss.cache.commands.AbstractVisitor.visitPutDataMapCommand(AbstractVisitor.java:60)
      at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDataMapCommand.java:104)
      at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
      at org.jboss.cache.interceptors.TxInterceptor.attachGtxAndPassUpChain(TxInterceptor.java:284)
      at org.jboss.cache.interceptors.TxInterceptor.handleDefault(TxInterceptor.java:271)
      at org.jboss.cache.commands.AbstractVisitor.visitPutDataMapCommand(AbstractVisitor.java:60)
      at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDataMapCommand.java:104)
      at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
      at org.jboss.cache.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:178)
      at org.jboss.cache.interceptors.InvocationContextInterceptor.visitPutDataMapCommand(InvocationContextInterceptor.java:64)
      at org.jboss.cache.commands.write.PutDataMapCommand.acceptVisitor(PutDataMapCommand.java:104)
      at org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain.java:265)
      at org.jboss.cache.invocation.CacheInvocationDelegate.invokePut(CacheInvocationDelegate.java:672)
      at org.jboss.cache.invocation.CacheInvocationDelegate.put(CacheInvocationDelegate.java:518)
      at org.jboss.cache.invocation.NodeInvocationDelegate.addChild(NodeInvocationDelegate.java:327)
      at uk.co.cdl.utility.cache.jbosscache.CDLJBossReplicationCacheAdapter.getSpecificNode(CDLJBossReplicationCacheAdapter.java:186)
      at uk.co.cdl.utility.cache.jbosscache.CDLJBossReplicationCacheAdapter.put(CDLJBossReplicationCacheAdapter.java:136)
      ... 16 more

        • 1. Re: Rolled back transactions sometimes failing to release lo
          nathanmesser

          The full trace log for TxInteceptor and org.jboss.cache.lock, just for this transaction is 50MB, however I've attached the last few lines here in case they're helpful

          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG Associated gtx in txTable is GlobalTransaction::28 org.jboss.cache.interceptors.TxInterceptor.attachGlobalTransaction(TxInterceptor.java:445)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG Attempting to unlock /Parameters/SubagParam/1833517 org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG Transaction Name=[EJB uk.co.cdl.servercomponent.parameters.service.ParameterServiceEJB.bounceCache(java.lang.String)],Xid=BEA1-00209FA6A83F6F45BCD8(18207047),Status=Rolled back. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 64 seconds
          BEA1-00209FA6A83F6F45BCD8],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=77,seconds left=57,activeThread=Thread[[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads],XAServerResourceInfo[cdldbPool]=(ServerResourceInfo[cdldbPool]=(state=rolledback,assigned=trunkserver),xar=cdldbPool,re-Registered = false),SCInfo[trunkdomain+trunkserver]=(state=rolledback),properties=({weblogic.transaction.name=[EJB uk.co.cdl.servercomponent.parameters.service.ParameterServiceEJB.bounceCache(java.lang.String)]}),local properties=({weblogic.jdbc.jta.cdldbPool=[ No XAConnection is attached to this TxInfo ]}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=trunkserver+10.26.50.104:7001+trunkdomain+t3+, XAResources={cdldbPool, siAuditPool, WLStore_trunkdomain__WLS_trunkserver},NonXAResources={})],CoordinatorURL=trunkserver+10.26.50.104:7001+trunkdomain+t3+) is already registered and is rolling back. org.jboss.cache.interceptors.TxInterceptor.registerTransaction(TxInterceptor.java:710)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG Attempting to unlock /Expressions/1722808 org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG local transaction exists - registering global tx if not present for Thread[[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads] org.jboss.cache.interceptors.TxInterceptor.attachGlobalTransaction(TxInterceptor.java:440)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG Attempting to unlock /Parameters/SubagParam/1722808 org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG Associated gtx in txTable is GlobalTransaction::28 org.jboss.cache.interceptors.TxInterceptor.attachGlobalTransaction(TxInterceptor.java:445)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG Attempting to unlock /Expressions/1611838 org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG Transaction Name=[EJB uk.co.cdl.servercomponent.parameters.service.ParameterServiceEJB.bounceCache(java.lang.String)],Xid=BEA1-00209FA6A83F6F45BCD8(18207047),Status=Rolled back. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 64 seconds
          BEA1-00209FA6A83F6F45BCD8],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=77,seconds left=57,activeThread=Thread[[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads],XAServerResourceInfo[cdldbPool]=(ServerResourceInfo[cdldbPool]=(state=rolledback,assigned=trunkserver),xar=cdldbPool,re-Registered = false),SCInfo[trunkdomain+trunkserver]=(state=rolledback),properties=({weblogic.transaction.name=[EJB uk.co.cdl.servercomponent.parameters.service.ParameterServiceEJB.bounceCache(java.lang.String)]}),local properties=({weblogic.jdbc.jta.cdldbPool=[ No XAConnection is attached to this TxInfo ]}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=trunkserver+10.26.50.104:7001+trunkdomain+t3+, XAResources={cdldbPool, siAuditPool, WLStore_trunkdomain__WLS_trunkserver},NonXAResources={})],CoordinatorURL=trunkserver+10.26.50.104:7001+trunkdomain+t3+) is already registered and is rolling back. org.jboss.cache.interceptors.TxInterceptor.registerTransaction(TxInterceptor.java:710)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG Attempting to unlock /Parameters/SubagParam/1611838 org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG local transaction exists - registering global tx if not present for Thread[[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads] org.jboss.cache.interceptors.TxInterceptor.attachGlobalTransaction(TxInterceptor.java:440)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG Attempting to unlock /Expressions/1274612 org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,581 259269 DEBUG Associated gtx in txTable is GlobalTransaction::28 org.jboss.cache.interceptors.TxInterceptor.attachGlobalTransaction(TxInterceptor.java:445)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Attempting to unlock /Parameters/SubagParam/1274612 org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Transaction Name=[EJB uk.co.cdl.servercomponent.parameters.service.ParameterServiceEJB.bounceCache(java.lang.String)],Xid=BEA1-00209FA6A83F6F45BCD8(18207047),Status=Rolled back. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 64 seconds
          BEA1-00209FA6A83F6F45BCD8],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=77,seconds left=57,activeThread=Thread[[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads],XAServerResourceInfo[cdldbPool]=(ServerResourceInfo[cdldbPool]=(state=rolledback,assigned=trunkserver),xar=cdldbPool,re-Registered = false),SCInfo[trunkdomain+trunkserver]=(state=rolledback),properties=({weblogic.transaction.name=[EJB uk.co.cdl.servercomponent.parameters.service.ParameterServiceEJB.bounceCache(java.lang.String)]}),local properties=({weblogic.jdbc.jta.cdldbPool=[ No XAConnection is attached to this TxInfo ]}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=trunkserver+10.26.50.104:7001+trunkdomain+t3+, XAResources={cdldbPool, siAuditPool, WLStore_trunkdomain__WLS_trunkserver},NonXAResources={})],CoordinatorURL=trunkserver+10.26.50.104:7001+trunkdomain+t3+) is already registered and is rolling back. org.jboss.cache.interceptors.TxInterceptor.registerTransaction(TxInterceptor.java:710)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Attempting to unlock /Expressions/869814 org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Attempting to lock /Expressions/2604877 org.jboss.cache.lock.MVCCLockManager.lockAndRecord(MVCCLockManager.java:126)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Attempting to unlock /Parameters/SubagParam/869814 org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG local transaction exists - registering global tx if not present for Thread[[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads] org.jboss.cache.interceptors.TxInterceptor.attachGlobalTransaction(TxInterceptor.java:440)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Attempting to unlock /Expressions/519022 org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Associated gtx in txTable is GlobalTransaction::28 org.jboss.cache.interceptors.TxInterceptor.attachGlobalTransaction(TxInterceptor.java:445)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Attempting to unlock /Parameters/SubagParam/519022 org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Transaction Name=[EJB uk.co.cdl.servercomponent.parameters.service.ParameterServiceEJB.bounceCache(java.lang.String)],Xid=BEA1-00209FA6A83F6F45BCD8(18207047),Status=Rolled back. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 64 seconds
          BEA1-00209FA6A83F6F45BCD8],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=77,seconds left=57,activeThread=Thread[[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads],XAServerResourceInfo[cdldbPool]=(ServerResourceInfo[cdldbPool]=(state=rolledback,assigned=trunkserver),xar=cdldbPool,re-Registered = false),SCInfo[trunkdomain+trunkserver]=(state=rolledback),properties=({weblogic.transaction.name=[EJB uk.co.cdl.servercomponent.parameters.service.ParameterServiceEJB.bounceCache(java.lang.String)]}),local properties=({weblogic.jdbc.jta.cdldbPool=[ No XAConnection is attached to this TxInfo ]}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=trunkserver+10.26.50.104:7001+trunkdomain+t3+, XAResources={cdldbPool, siAuditPool, WLStore_trunkdomain__WLS_trunkserver},NonXAResources={})],CoordinatorURL=trunkserver+10.26.50.104:7001+trunkdomain+t3+) is already registered and is rolling back. org.jboss.cache.interceptors.TxInterceptor.registerTransaction(TxInterceptor.java:710)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Attempting to unlock /Parameters/SubagParam org.jboss.cache.lock.MVCCLockManager.unlock(MVCCLockManager.java:140)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG local transaction exists - registering global tx if not present for Thread[[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads] org.jboss.cache.interceptors.TxInterceptor.attachGlobalTransaction(TxInterceptor.java:440)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Finished local commit/rollback method for GlobalTransaction::28 org.jboss.cache.interceptors.TxInterceptor.handleCommitRollback(TxInterceptor.java:521)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Associated gtx in txTable is GlobalTransaction::28 org.jboss.cache.interceptors.TxInterceptor.attachGlobalTransaction(TxInterceptor.java:445)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Finished rollback phase org.jboss.cache.interceptors.TxInterceptor$RemoteSynchronizationHandler.afterCompletion(TxInterceptor.java:922)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Transaction Name=[EJB uk.co.cdl.servercomponent.parameters.service.ParameterServiceEJB.bounceCache(java.lang.String)],Xid=BEA1-00209FA6A83F6F45BCD8(18207047),Status=Rolled back. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 64 seconds
          BEA1-00209FA6A83F6F45BCD8],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=77,seconds left=57,activeThread=Thread[[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads],XAServerResourceInfo[cdldbPool]=(ServerResourceInfo[cdldbPool]=(state=rolledback,assigned=trunkserver),xar=cdldbPool,re-Registered = false),SCInfo[trunkdomain+trunkserver]=(state=rolledback),properties=({weblogic.transaction.name=[EJB uk.co.cdl.servercomponent.parameters.service.ParameterServiceEJB.bounceCache(java.lang.String)]}),local properties=({weblogic.jdbc.jta.cdldbPool=[ No XAConnection is attached to this TxInfo ]}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=trunkserver+10.26.50.104:7001+trunkdomain+t3+, XAResources={cdldbPool, siAuditPool, WLStore_trunkdomain__WLS_trunkserver},NonXAResources={})],CoordinatorURL=trunkserver+10.26.50.104:7001+trunkdomain+t3+) is already registered. org.jboss.cache.interceptors.TxInterceptor.registerTransaction(TxInterceptor.java:714)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Setting up transactional context. org.jboss.cache.interceptors.BaseTransactionalContextInterceptor.setTransactionalContext(BaseTransactionalContextInterceptor.java:71)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Attempting to lock /Expressions/2604877 org.jboss.cache.lock.MVCCLockManager.lockAndRecord(MVCCLockManager.java:126)
          [ERR] 2009-02-10 10:58:36,597 259285 DEBUG Setting tx as null and gtx as null org.jboss.cache.interceptors.BaseTransactionalContextInterceptor.setTransactionalContext(BaseTransactionalContextInterceptor.java:72)
          [ERR] 2009-02-10 10:58:39,755 262443 DEBUG local transaction exists - registering global tx if not present for Thread[[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)',5,Pooled Threads] org.jboss.cache.interceptors.TxInterceptor.attachGlobalTransaction(TxInterceptor.java:440)
          [ERR] 2009-02-10 10:58:39,755 262443 DEBUG Associated gtx in txTable is null org.jboss.cache.interceptors.TxInterceptor.attachGlobalTransaction(TxInterceptor.java:445)

          • 2. Re: Rolled back transactions sometimes failing to release lo
            nathanmesser

            I also realise my config file didn't come out very well in the forum posting, here it is:

            <?xml version="1.0" encoding="UTF-8"?>
            
            <jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.0">
            
             <!--
             isolationLevel : SERIALIZABLE - (not supported in mvcc) REPEATABLE_READ (default)
             READ_COMMITTED READ_UNCOMMITTED (not supported in mvcc) NONE lockAcquisitionTimeout: max
             number of milliseconds to wait for a lock acquisition nodeLockingScheme : mvcc (default)
             optimistic pessimistic
             -->
             <locking isolationLevel="READ_COMMITTED" lockAcquisitionTimeout="2000"
             nodeLockingScheme="mvcc" />
            
             <!-- Configure the TransactionManager -->
             <transaction transactionManagerLookupClass="org.jboss.cache.transaction.GenericTransactionManagerLookup" />
            
             <jmxStatistics
             enabled="false"/>
            
            </jbosscache>


            • 3. Re: Rolled back transactions sometimes failing to release lo
              manik

              Could you also attach trace logs for the MVCCLockingInterceptor as well as the ReadCommittedNode?

              Also, can you get your logger to log thread name - I don't see that in your logs.

              If the log files are too big, feel free to zip them up and attach them to the JIRA you created.

              • 4. Re: Rolled back transactions sometimes failing to release lo
                nathanmesser

                I've attached logs to the JIRA I created, which have the thread name.

                I've logged the following categories, which if your loggers names are all the class name should include the MVCCLockingInteceptor you asked for. If there's any other categories that would be helpful, just let me know.

                log4j.logger.org.jboss.cache.interceptors=TRACE, JBossAppender
                log4j.logger.org.jboss.cache.lock=TRACE, JBossAppender

                • 5. Re: Rolled back transactions sometimes failing to release lo
                  nathanmesser

                  Is this is a manifestation of previous JIRA 923 relating to Weblogic's transaction manager, which would be the safest locking mechanism for us to use until MVCC locking is fixed, pessimistic or optimistic?


                  • 6. Re: Rolled back transactions sometimes failing to release lo
                    manik

                    I don't think it is a locking issue at all, but how async rollbacks are handled, if anything.

                    Could you try with pessimistic locking though, just to confirm?

                    • 7. Re: Rolled back transactions sometimes failing to release lo
                      manik

                      I've started looking through the log files you sent, and while this doesn't solve your problem, why do you have your transaction timeout set as low as this? Is this intentional? You would minimise your error rate by increasing this so that not as many transactions time out.

                      2009-02-11 16:05:32,325 68671 DEBUG[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)' Setting tx as Name=[EJB uk.co.cdl.servercomponent.admin.service.AdminServiceEJB.bounceCache(int)],Xid=BEA1-0003479EAA486F45BCD8(32306485),Status=Marked rollback. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 64 seconds



                      • 8. Re: Rolled back transactions sometimes failing to release lo
                        nathanmesser

                        I can't reproduce the issue with either pessimistic or optimistic locking.

                        I've tried configuring the cache to use syncRollback and commit phases (although given I'm not in a cluster I don't that that would have any effect anyway), and it made no difference.

                        • 9. Re: Rolled back transactions sometimes failing to release lo
                          nathanmesser

                           

                          I've started looking through the log files you sent, and while this doesn't solve your problem, why do you have your transaction timeout set as low as this? Is this intentional? You would minimise your error rate by increasing this so that not as many transactions time out.


                          Yes, it's intentional, I've been tinkering with the timing to try and make the problem occur.

                          • 10. Re: Rolled back transactions sometimes failing to release lo
                            manik

                            These logs appear to be from 3.0.2.GA. Did you try trunk (or 3.1.0-SNAPSHOT)?

                            WL's TM sets a transaction's status as MARKED_ROLLBACK_ONLY when a transaction times out, and at a later point, processes the rollback with a maintenance thread.

                            JBCACHE-1468, which is on 3.1.0-SNAPSHOT, properly fixes handling of transactions marked for rollback.

                            • 11. Re: Rolled back transactions sometimes failing to release lo
                              nathanmesser

                              They are indeed 3.0.2.GA logs.

                              I'm in the process of getting hold of what I need to do a trunk build. I don't suppose there's a built jar available anywhere is there?

                              Is this going to be a problem with pessimistic and optimistic locking as well then?

                              Any idea when 3.1.0 is due? And is there likely to be a 3.0.3 with bug fixes?

                              • 12. Re: Rolled back transactions sometimes failing to release lo
                                manik

                                Do you use maven2 or ivy? If so you can grab 3.1.0-SNAPSHOT from the snapshots.jboss.org repository.

                                Otherwise just download the latest snapshot manually from here:

                                http://snapshots.jboss.org/maven2/org/jboss/cache/jbosscache-core/3.1.0-SNAPSHOT/

                                Re: 3.1.0 vs 3.0.3, this is something I will decide on over the coming days/weeks. Expect a 3.1.0 beta to be out in about a week too. GA would be as long as it takes for the 3.1.0 featureset to stabilise.

                                • 13. Re: Rolled back transactions sometimes failing to release lo
                                  nathanmesser

                                  It does look like the latest 3.1.0 SNAPSHOT fixes our problem.

                                  In the meantime, would this problem also apply in other locking schemes besides MVCC locking? I'm not seeing it when using either Pessimistic or Optimistic locking, but I'm wondering now if that's just luck with the timings.

                                  • 14. Re: Rolled back transactions sometimes failing to release lo
                                    manik

                                    It is possible that pessimistic locking would not be affected, but it does perform significantly worse than MVCC.

                                    Good to hear that 3.1.0 fixes your problem.

                                    1 2 Previous Next