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)

Reply via email to