[JBoss JIRA] (ISPN-5443) NPE in ReadCommittedEntry.getLifespan() during Cache.size()
by Paul Ferraro (JIRA)
Paul Ferraro created ISPN-5443:
----------------------------------
Summary: NPE in ReadCommittedEntry.getLifespan() during Cache.size()
Key: ISPN-5443
URL: https://issues.jboss.org/browse/ISPN-5443
Project: Infinispan
Issue Type: Bug
Components: Core
Affects Versions: 7.2.0.Final
Reporter: Paul Ferraro
Priority: Blocker
Fix For: 7.2.1.Final
Infinispan 7.2.0 causes one of our 2LC cache tests to fail consistently. Here is the exception.
{noformat}
ERROR [org.jboss.as.ejb3.invocation] (default task-23) WFLYEJB0034: EJB Invocation failed on component StatefulBean for method public abstract void org.jboss.as.test.clustering.cluster.ejb.xpc.bean.Stateful.deleteEmployee(int): javax.ejb.EJBException: java.lang.NullPointerException
at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:187)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:277)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:327)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:66)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:634)
at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)
at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:195)
at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:185)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:73)
at org.jboss.as.test.clustering.cluster.ejb.xpc.bean.Stateful$$$view3.deleteEmployee(Unknown Source)
at org.jboss.as.test.clustering.cluster.ejb.xpc.servlet.StatefulServlet.doGet(StatefulServlet.java:155)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:274)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:253)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at org.infinispan.container.entries.ReadCommittedEntry.getLifespan(ReadCommittedEntry.java:99)
at org.infinispan.container.InternalEntryFactoryImpl.create(InternalEntryFactoryImpl.java:53)
at org.infinispan.iteration.impl.TransactionAwareCloseableIterator.getNextFromIterator(TransactionAwareCloseableIterator.java:119)
at org.infinispan.iteration.impl.TransactionAwareCloseableIterator.<init>(TransactionAwareCloseableIterator.java:54)
at org.infinispan.iteration.impl.TransactionAwareCloseableIterable.iterator(TransactionAwareCloseableIterable.java:44)
at org.infinispan.iteration.impl.TransactionAwareCloseableIterable.iterator(TransactionAwareCloseableIterable.java:19)
at org.infinispan.commands.read.SizeCommand.perform(SizeCommand.java:47)
at org.infinispan.commands.read.SizeCommand.perform(SizeCommand.java:25)
at org.infinispan.interceptors.CallInterceptor.handleDefault(CallInterceptor.java:124)
at org.infinispan.commands.AbstractVisitor.visitSizeCommand(AbstractVisitor.java:81)
at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:97)
at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:111)
at org.infinispan.commands.AbstractVisitor.visitSizeCommand(AbstractVisitor.java:81)
at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:97)
at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:111)
at org.infinispan.commands.AbstractVisitor.visitSizeCommand(AbstractVisitor.java:81)
at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:97)
at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:111)
at org.infinispan.commands.AbstractVisitor.visitSizeCommand(AbstractVisitor.java:81)
at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:97)
at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:111)
at org.infinispan.commands.AbstractVisitor.visitSizeCommand(AbstractVisitor.java:81)
at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:97)
at org.infinispan.interceptors.TxInterceptor.enlistReadAndInvokeNext(TxInterceptor.java:346)
at org.infinispan.interceptors.TxInterceptor.visitSizeCommand(TxInterceptor.java:293)
at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:97)
at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:111)
at org.infinispan.commands.AbstractVisitor.visitSizeCommand(AbstractVisitor.java:81)
at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35)
at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:97)
at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:102)
at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:71)
at org.infinispan.commands.AbstractVisitor.visitSizeCommand(AbstractVisitor.java:81)
at org.infinispan.commands.read.SizeCommand.acceptVisitor(SizeCommand.java:35)
at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:336)
at org.infinispan.cache.impl.CacheImpl.size(CacheImpl.java:374)
at org.infinispan.cache.impl.CacheImpl.size(CacheImpl.java:369)
at org.infinispan.cache.impl.AbstractDelegatingCache.size(AbstractDelegatingCache.java:267)
at org.hibernate.cache.infinispan.impl.BaseRegion.getElementCountInMemory(BaseRegion.java:100)
at org.hibernate.stat.internal.ConcurrentSecondLevelCacheStatisticsImpl.getElementCountInMemory(ConcurrentSecondLevelCacheStatisticsImpl.java:64)
at org.hibernate.stat.internal.ConcurrentSecondLevelCacheStatisticsImpl.toString(ConcurrentSecondLevelCacheStatisticsImpl.java:93)
at org.jboss.as.test.clustering.cluster.ejb.xpc.bean.StatefulBean.logStats(StatefulBean.java:172)
at org.jboss.as.test.clustering.cluster.ejb.xpc.bean.StatefulBean.deleteEmployee(StatefulBean.java:106)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:437)
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:82)
at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:93)
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.jpa.interceptor.SFSBInvocationInterceptor.processInvocation(SFSBInvocationInterceptor.java:57)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.component.stateful.StatefulSessionSynchronizationInterceptor.processInvocation(StatefulSessionSynchronizationInterceptor.java:127)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:437)
at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:64)
at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:83)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:52)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.component.stateful.StatefulComponentInstanceInterceptor.processInvocation(StatefulComponentInstanceInterceptor.java:65)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:275)
... 63 more
{noformat}
Now I know that hibernate-infinispan should not be using a cluster-wide size() operation here (see https://hibernate.atlassian.net/browse/HHH-9776), but there is still an urgent issue here that need to be addressed.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
9 years, 8 months
[JBoss JIRA] (ISPN-5442) Integration tests for Lucene Directory need an H2 database available to multiple nodes
by Sanne Grinovero (JIRA)
[ https://issues.jboss.org/browse/ISPN-5442?page=com.atlassian.jira.plugin.... ]
Sanne Grinovero updated ISPN-5442:
----------------------------------
Status: Open (was: New)
> Integration tests for Lucene Directory need an H2 database available to multiple nodes
> --------------------------------------------------------------------------------------
>
> Key: ISPN-5442
> URL: https://issues.jboss.org/browse/ISPN-5442
> Project: Infinispan
> Issue Type: Task
> Components: Test Suite - Query
> Reporter: Sanne Grinovero
> Assignee: Sanne Grinovero
> Fix For: 8.0.0.Alpha1
>
>
> The clustered Hibernate Search tests are meant to share state using a single (external) relational database.
> The current integration tests use H2, but the tests have to be carefully written to consider the two nodes can not actually share state but only share the index.
> I'll change this to use a shared H2 instance so that people writing new tests won't have to keep these hacks in mind.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
9 years, 8 months
[JBoss JIRA] (ISPN-5442) Integration tests for Lucene Directory need an H2 database available to multiple nodes
by Sanne Grinovero (JIRA)
Sanne Grinovero created ISPN-5442:
-------------------------------------
Summary: Integration tests for Lucene Directory need an H2 database available to multiple nodes
Key: ISPN-5442
URL: https://issues.jboss.org/browse/ISPN-5442
Project: Infinispan
Issue Type: Task
Components: Test Suite - Query
Reporter: Sanne Grinovero
Assignee: Sanne Grinovero
Fix For: 8.0.0.Alpha1
The clustered Hibernate Search tests are meant to share state using a single (external) relational database.
The current integration tests use H2, but the tests have to be carefully written to consider the two nodes can not actually share state but only share the index.
I'll change this to use a shared H2 instance so that people writing new tests won't have to keep these hacks in mind.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
9 years, 8 months
[JBoss JIRA] (ISPN-5429) Cluster CacheEventFilterConverter wrapping leads to double callbacks
by Galder Zamarreño (JIRA)
[ https://issues.jboss.org/browse/ISPN-5429?page=com.atlassian.jira.plugin.... ]
Galder Zamarreño commented on ISPN-5429:
----------------------------------------
Fixed, the cause of ISPN-5436 is different.
> Cluster CacheEventFilterConverter wrapping leads to double callbacks
> --------------------------------------------------------------------
>
> Key: ISPN-5429
> URL: https://issues.jboss.org/browse/ISPN-5429
> Project: Infinispan
> Issue Type: Bug
> Components: Listeners
> Affects Versions: 7.2.0.CR1, 7.1.1.Final
> Reporter: Galder Zamarreño
> Assignee: Galder Zamarreño
> Fix For: 7.2.0.Final
>
>
> This was spotted by Pierre Sutra from University of Neuchatel:
> When a CacheEventFilterConverter is registered with remote event listeners, and running in a cluster, once the CacheEventFilterConverter instance is replicated, the notion that its both a filter AND converter is lost because BaseCacheEntryListenerInvocation's constructor determines that {{filterAndConvert}} is false.
> The reason this happens is because after clustering it, the ClusterListenerReplicateCallable.call() wraps the {{filter}} into an {{AbstractCacheEventFilterConverter}} implementation, which does not keep the referential equality that BaseCacheEntryListenerInvocation's constructor checks.
> A simple way to avoid this is to implement {{equals}} in the AbstractCacheEventFilterConverter implementation and use referential equality. Then, switching BaseCacheEntryListenerInvocation's constructors referential equality by a call to {{equals}} is enough to solve the issue.
> The reason this bug was detected is because without a fix for it, the filter + converter gets two callbacks instead of one. I've added tests to verify that the number callbacks expected is the correct one.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
9 years, 8 months