[JBoss JIRA] Created: (ISPN-269) When runtime exceptions are thrown from listener event implementations invocation ctx is not resumed
by Galder Zamarreno (JIRA)
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