[infinispan-issues] [JBoss JIRA] Commented: (ISPN-772) Thread local storage keeping reference to an org.infinispan.context.impl.LocalTxInvocationContext
Scott Marlow (JIRA)
jira-events at lists.jboss.org
Thu Nov 18 11:48:07 EST 2010
[ https://jira.jboss.org/browse/ISPN-772?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12564102#comment-12564102 ]
Scott Marlow commented on ISPN-772:
-----------------------------------
reopened due to testsuite regressions http://hudson.infinispan.org/hudson/job/Infinispan-4.2.x-JDK6-tcp/org.infinispan$infinispan-core/31/#showFailuresLink
With the fix to clear the TLS at transaction end, the unit test is impacted when it calls InvocationContextContainerImpl.getInvocationContext() which throws a IllegalStateException("This method can only be called after associating the current thread with a context").
Exception call stack is here http://hudson.infinispan.org/hudson/job/Infinispan-4.2.x-JDK6-tcp/org.infinispan$infinispan-core/31/testReport/junit/org.infinispan.api.mvcc.read_committed/ReadCommittedLockTest/org_infinispan_api_mvcc_read_committed_ReadCommittedLockTest_testConcurrentWriters/
> Thread local storage keeping reference to an org.infinispan.context.impl.LocalTxInvocationContext
> --------------------------------------------------------------------------------------------------
>
> Key: ISPN-772
> URL: https://jira.jboss.org/browse/ISPN-772
> Project: Infinispan
> Issue Type: Bug
> Reporter: Scott Marlow
> Assignee: Manik Surtani
> Fix For: 4.2.0.CR1
>
>
> I'm seeing the following sequence of invocations during AS cluster classloader leak unit tests:
> 1. InvocationContextContainerImpl.createInvocationContext creates a new
> LocalTxInvocationContext (lets call it #3011) and sets thread local
> (icTL) to it.
> 2. InvocationContextContainerImpl.suspend() LocalTxInvocationContext
> #3011 which clears the thread local reference.
> 3. We InvocationContextContainerImpl.resume() LocalTxInvocationContext
> #3011 which sets the thread local reference.
> 4. We InvocationContextContainerImpl.suspend() LocalTxInvocationContext
> #3011 which clears the thread local reference.
> 5. We InvocationContextContainerImpl.resume() LocalTxInvocationContext
> #3011 which sets the thread local reference.
> I don't see another suspend call, so LocalTxInvocationContext #3011 is
> still referenced by the thread local InvocationContextContainerImpl.icTL which keeps the classloader in memory (the icTL reference is the only reference to the classloader).
> Call stack showing where the LocalTxInvocationContext was created from http://pastie.org/1300157
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the infinispan-issues
mailing list