[
https://issues.jboss.org/browse/ISPN-2787?page=com.atlassian.jira.plugin....
]
Adrian Nistor commented on ISPN-2787:
-------------------------------------
This only happens during cluster merge. I added MergeDuringReplaceTest to highlight the
issue. The problem is in RpcManagerImpl.invokeRemotely(Collection<Address>
recipients, ReplicableCommand rpcCommand, ResponseMode mode, long timeout, boolean
usePriorityQueue, ResponseFilter responseFilter). There is an optimization there to avoid
the remote call if the sender is the only member of the cluster. In that case it just
returns an empty response map. This is most of the times incorrect (unless we are told to
ignore leavers). A suspect exception for any of the destinations that are no longer in the
cluster should be thrown instead. Not doing so will cause a null to be propagated to
caller instead of an actual response which can later cause NPE in a seemingly unrelated
place.
NPE after ReplaceCommand
------------------------
Key: ISPN-2787
URL:
https://issues.jboss.org/browse/ISPN-2787
Project: Infinispan
Issue Type: Bug
Affects Versions: 5.2.0.Final
Reporter: Michal Linhard
Assignee: Adrian Nistor
Priority: Critical
Fix For: 5.2.3.Final, 5.3.0.Final
(from
https://jenkins.mw.lab.eng.bos.redhat.com/hudson/view/EDG6/view/EDG-REPOR...)
{code}
05:11:10,804 ERROR
[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/].[Resteasy]]
(http-/172.18.1.7:8080-15) Servlet.service() for servlet Resteasy threw exception:
org.jboss.resteasy.spi.UnhandledException: java.lang.NullPointerException
at
org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:351)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at
org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:220)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at
org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:196)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:551)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:513)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:125)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at
org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
[jboss-servlet-api_3.0_spec-1.0.1.Final-redhat-2.jar:1.0.1.Final-redhat-2]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
[jbossweb-7.0.17.Final-redhat-1.jar:]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
[jbossweb-7.0.17.Final-redhat-1.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
[jbossweb-7.0.17.Final-redhat-1.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
[jbossweb-7.0.17.Final-redhat-1.jar:]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
[jbossweb-7.0.17.Final-redhat-1.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
[jbossweb-7.0.17.Final-redhat-1.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
[jbossweb-7.0.17.Final-redhat-1.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:372)
[jbossweb-7.0.17.Final-redhat-1.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
[jbossweb-7.0.17.Final-redhat-1.jar:]
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:679)
[jbossweb-7.0.17.Final-redhat-1.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:931)
[jbossweb-7.0.17.Final-redhat-1.jar:]
at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_38]
Caused by: java.lang.NullPointerException
at org.infinispan.CacheImpl.replaceInternal(CacheImpl.java:828)
[infinispan-core-5.2.0.CR3-redhat-1.jar:5.2.0.CR3-redhat-1]
at org.infinispan.CacheImpl.replace(CacheImpl.java:822)
[infinispan-core-5.2.0.CR3-redhat-1.jar:5.2.0.CR3-redhat-1]
at org.infinispan.CacheImpl.replace(CacheImpl.java:817)
[infinispan-core-5.2.0.CR3-redhat-1.jar:5.2.0.CR3-redhat-1]
at org.infinispan.AbstractDelegatingCache.replace(AbstractDelegatingCache.java:153)
[infinispan-core-5.2.0.CR3-redhat-1.jar:5.2.0.CR3-redhat-1]
at org.infinispan.rest.Server.putOrReplace(Server.scala:186)
[infinispan-server-rest-5.2.0.CR3-redhat-1-classes.jar:]
at org.infinispan.rest.Server.org$infinispan$rest$Server$$putInCache(Server.scala:157)
[infinispan-server-rest-5.2.0.CR3-redhat-1-classes.jar:]
at org.infinispan.rest.Server$$anonfun$putEntry$1.apply(Server.scala:133)
[infinispan-server-rest-5.2.0.CR3-redhat-1-classes.jar:]
at org.infinispan.rest.Server$$anonfun$putEntry$1.apply(Server.scala:120)
[infinispan-server-rest-5.2.0.CR3-redhat-1-classes.jar:]
at org.infinispan.rest.Server.protectCacheNotFound(Server.scala:254)
[infinispan-server-rest-5.2.0.CR3-redhat-1-classes.jar:]
at org.infinispan.rest.Server.putEntry(Server.scala:120)
[infinispan-server-rest-5.2.0.CR3-redhat-1-classes.jar:]
at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source) [:1.6.0_38]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[rt.jar:1.6.0_38]
at java.lang.reflect.Method.invoke(Method.java:597) [rt.jar:1.6.0_38]
at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:167)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:257)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:222)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:211)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
at
org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:536)
[resteasy-jaxrs-2.3.4.Final-redhat-2.jar:2.3.4.Final-redhat-2]
... 18 more
{code}
Seems like the NPE is caused by ReplaceCommand.perform returning null:
https://github.com/infinispan/infinispan/blob/5.2.0.Final/core/src/main/j...
Made possible here:
https://github.com/infinispan/infinispan/blob/5.2.0.Final/core/src/main/j...
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira