Grzegorz Grzybek created CXF-7026:
-------------------------------------
Summary: o.a.c.transport.http.osgi.HttpServiceTrackerCust service
leak
Key: CXF-7026
URL: https://issues.apache.org/jira/browse/CXF-7026
Project: CXF
Issue Type: Bug
Components: OSGi
Affects Versions: 3.1.7
Reporter: Grzegorz Grzybek
During memory leak search I saw some old registrations of
{{org.apache.cxf.transport.servlet.CXFNonSpringServlet}}. Here's GC root path:
{noformat}
this - value:
org.eclipse.jetty.server.ServerConnector$ServerConnectorManager #1
<- _manager - class: org.eclipse.jetty.server.ServerConnector, value:
org.eclipse.jetty.server.ServerConnector$ServerConnectorManager #1
<- [0] - class: java.lang.Object[], value:
org.eclipse.jetty.server.ServerConnector #1
<- array - class: java.util.concurrent.CopyOnWriteArrayList, value:
java.lang.Object[] #17136
<- _connectors - class:
org.ops4j.pax.web.service.jetty.internal.JettyServerWrapper, value:
java.util.concurrent.CopyOnWriteArrayList #521
<- _server - class:
org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler, value:
org.ops4j.pax.web.service.jetty.internal.JettyServerWrapper #1
<- _servletHandler - class: org.eclipse.jetty.servlet.ServletHolder,
value: org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler #1
<- this$0 - class: org.eclipse.jetty.servlet.ServletHolder$Config,
value: org.eclipse.jetty.servlet.ServletHolder #1
<- config - class:
org.apache.cxf.transport.servlet.CXFNonSpringServlet, value:
org.eclipse.jetty.servlet.ServletHolder$Config #1
<- servlet - class:
org.apache.cxf.transport.http.osgi.ServletExporter, value:
org.apache.cxf.transport.servlet.CXFNonSpringServlet #1
<- m_svcObj - class:
org.apache.felix.framework.ServiceRegistrationImpl, value:
org.apache.cxf.transport.http.osgi.ServletExporter #1
<- [2] - class: org.osgi.framework.ServiceRegistration[], value:
org.apache.felix.framework.ServiceRegistrationImpl #311
<- value - class: java.util.HashMap$Node, value:
org.osgi.framework.ServiceRegistration[] #87
<- [179] - class: java.util.HashMap$Node[], value:
java.util.HashMap$Node #47874
<- table - class: java.util.HashMap, value:
java.util.HashMap$Node[] #9801
<- m - class: java.util.Collections$SynchronizedMap, value:
java.util.HashMap #84
<- m_regsMap - class:
org.apache.felix.framework.ServiceRegistry, value:
java.util.Collections$SynchronizedMap #7
<- m_registry (Java frame) - class:
org.apache.felix.framework.FrameworkStartLevelImpl, value:
org.apache.felix.framework.ServiceRegistry #1
{noformat}
which shows that CXF servlet prevents from freeing previous instance of
{{org.eclipse.jetty.server.ServerConnector}}.
After some debugging, I've found that
{{org.apache.cxf.transport.http.osgi.HttpServiceTrackerCust#removedService()}}
isn't called - why? because
{{org.apache.cxf.transport.http.osgi.HttpServiceTrackerCust#addingService()}}
returns {{null}}...
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)