[infinispan-issues] [JBoss JIRA] Resolved: (ISPN-269) When runtime exceptions are thrown from listener event implementations invocation ctx is not resumed

Galder Zamarreno (JIRA) jira-events at lists.jboss.org
Wed Nov 11 13:28:06 EST 2009


     [ https://jira.jboss.org/jira/browse/ISPN-269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Galder Zamarreno resolved ISPN-269.
-----------------------------------

    Resolution: Done


> When runtime exceptions are thrown from listener event implementations invocation ctx is not resumed
> ----------------------------------------------------------------------------------------------------
>
>                 Key: ISPN-269
>                 URL: https://jira.jboss.org/jira/browse/ISPN-269
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Listeners
>    Affects Versions: 4.0.0.CR1
>            Reporter: Galder Zamarreno
>            Assignee: Galder Zamarreno
>             Fix For: 4.0.0.CR2
>
>
> When a cache listener implementation throws an exception such as NullPointerException from a cache listener event implementation, you can get exceptions like this:
> java.lang.IllegalStateException: This method can only be called after associating the current thread with a context
> 	at org.infinispan.context.InvocationContextContainerImpl.getInvocationContext(InvocationContextContainerImpl.java:143)
> 	at org.infinispan.util.concurrent.locks.OwnableReentrantLock.currentRequestor(OwnableReentrantLock.java:78)
> 	at org.infinispan.util.concurrent.locks.OwnableReentrantLock.tryRelease(OwnableReentrantLock.java:134)
> 	at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1262)
> 	at org.infinispan.util.concurrent.locks.OwnableReentrantLock.unlock(OwnableReentrantLock.java:104)
> 	at org.infinispan.util.concurrent.locks.containers.AbstractStripedLockContainer.releaseLock(AbstractStripedLockContainer.java:83)
> 	at org.infinispan.util.concurrent.locks.LockManagerImpl.unlock(LockManagerImpl.java:97)
> 	at org.infinispan.interceptors.LockingInterceptor.cleanupLocks(LockingInterceptor.java:289)
> 	at org.infinispan.interceptors.LockingInterceptor.doAfterCall(LockingInterceptor.java:243)
> 	at org.infinispan.interceptors.LockingInterceptor.visitPutKeyValueCommand(LockingInterceptor.java:200)
> 	at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
> 	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
> 	at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132)
> 	at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:57)
> 	at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
> 	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
> 	at org.infinispan.interceptors.MarshalledValueInterceptor.visitPutKeyValueCommand(MarshalledValueInterceptor.java:93)
> 	at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
> 	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
> 	at org.infinispan.interceptors.TxInterceptor.enlistWriteAndInvokeNext(TxInterceptor.java:185)
> 	at org.infinispan.interceptors.TxInterceptor.visitPutKeyValueCommand(TxInterceptor.java:132)
> 	at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
> 	at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118)
> 	at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:48)
> 	at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:34)
> 	at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:57)
> 	at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77)
> 	at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:269)
> 	at org.infinispan.CacheDelegate.put(CacheDelegate.java:414)
> 	at org.infinispan.CacheDelegate.put(CacheDelegate.java:198)
> 	at org.infinispan.marshall.InvocationContextInterceptorErrorTest.test000(InvocationContextInterceptorErrorTest.java:75)
> ... Removed 22 stack frames
> Most likely, this is due to icc.resume(contexts); calls in CacheNotifierImpl not being in a finally clause which would make sure that the invocation is set again regardless of whether there was an exception or not.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the infinispan-issues mailing list