4 Replies Latest reply on Jun 28, 2007 6:27 AM by Mark Little

    Memory Leak using subordinate transactions

    Martin Steinle Newbie


      I' m using end-to-end transactions (Web Service transactions that manage subordinate transactions) as you described in this forum at http://www.jboss.com/index.html?module=bb&op=viewtopic&t=99487.

      The system is running fine, but I had to recognize a memory leak in my application. Searching for the reason, I produced heap dumps once a day and found that each and every SubordinateTransaction I created will leave an instance of com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.SubordinateAtomicAction in memory that is not garbage collected.
      The SubordinateAtomicActions all are referenced by com.arjuna.ats.arjuna.coordinator.ActionManager, so I searched your code for references to ActionManager.remove() and found out that this method gets not called from
      com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.TransactionImple.doRollback() or com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.TransactionImple.doCommit() (or from any of the methods they call). (btw, it gets called from TransactionImple.doOnePhaseCommit()).

      The problem exists in JBossTS4.2.2 and JBossTS4.2.3sp5.

      Could you please tell me what I have to do to remove the reference from ActionManager to my SubordinateTransactions? Can I savely call ActionManager.manager().remove() after having successfully committed or rolled back a subordinate transaction? Or is there any better solution?

      Thanks for your help,