Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 336929

Summary: heap dump contribution failure on Virgo Jetty server
Product: [RT] Virgo Reporter: Glyn Normington <glyn.normington>
Component: jettyAssignee: Chris Frost <eclipse>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: eclipse
Version: 3.0.0.M01   
Target Milestone: 3.0.0.M05   
Hardware: PC   
OS: Mac OS X - Carbon (unsup.)   
Whiteboard:

Description Glyn Normington CLA 2011-02-11 07:31:41 EST
This *seems* specific to Virgo Jetty server as it has not been observed on Virgo web server (based on Gemini/Tomcat) even when the same dump was provoked.

Steps to reproduce:

1. Provoke a dump, for example by reproducing bug 336922 on Virgo Jetty server.

Symptoms:
[2011-02-11 12:23:36.613] qtp959617423-57              org.eclipse.virgo.medic.eventlog.default                         ME0002W Dump contributor 'heap' failed during contribution to dump '1297427014490' org.eclipse.virgo.medic.dump.DumpContributionFailedException: Failed to generate heap dump contribution
	at org.eclipse.virgo.medic.dump.impl.heap.HeapDumpContributor.contribute(HeapDumpContributor.java:64)
	at org.eclipse.virgo.medic.dump.impl.StandardDumpGenerator.generateDump(StandardDumpGenerator.java:67)
	at org.eclipse.virgo.medic.dump.impl.StandardDumpGenerator.generateDump(StandardDumpGenerator.java:54)
	at org.eclipse.virgo.kernel.serviceability.dump.DumpCoordinator.ajc$afterThrowing$org_eclipse_virgo_kernel_serviceability_dump_DumpCoordinator$1$7340b330(DumpCoordinator.aj:48)
	at org.eclipse.virgo.kernel.model.management.internal.DelegatingManageableArtifact.convertToObjectNames(DelegatingManageableArtifact.java:129)
	at org.eclipse.virgo.kernel.model.management.internal.DelegatingManageableArtifact.getDependents(DelegatingManageableArtifact.java:52)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:167)
	at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:96)
	at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:33)
	at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:208)
	at com.sun.jmx.mbeanserver.PerInterface.getAttribute(PerInterface.java:65)
	at com.sun.jmx.mbeanserver.MBeanSupport.getAttribute(MBeanSupport.java:216)
	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getAttribute(DefaultMBeanServerInterceptor.java:666)
	at com.sun.jmx.mbeanserver.JmxMBeanServer.getAttribute(JmxMBeanServer.java:638)
	at com.sun.jmx.mbeanserver.MXBeanProxy$GetHandler.invoke(MXBeanProxy.java:106)
	at com.sun.jmx.mbeanserver.MXBeanProxy.invoke(MXBeanProxy.java:148)
	at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:248)
	at $Proxy139.getDependents(Unknown Source)
	at org.eclipse.virgo.kernel.shell.model.helper.StandardRamAccessorHelper.getArtifact(StandardRamAccessorHelper.java:204)
	at org.eclipse.virgo.apps.admin.web.ArtifactController.data(ArtifactController.java:229)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710)
	at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167)
	at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
	at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:534)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:476)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:468)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:935)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:404)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:870)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:151)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
	at org.eclipse.jetty.server.Server.handle(Server.java:346)
	at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:596)
	at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1051)
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:592)
	at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214)
	at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:520)
	at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:528)
	at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.reflect.InvocationTargetException: null
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.virgo.medic.dump.impl.heap.HeapDumpContributor.contribute(HeapDumpContributor.java:51)
	... 60 common frames omitted
Caused by: java.io.IOException: File exists
	at sun.management.HotSpotDiagnostic.dumpHeap(Native Method)
	... 65 common frames omitted

Flagging against 3.0.0.M01 as this is the closest to the truth even though it has not yet shipped.
Comment 1 Chris Frost CLA 2011-05-16 11:31:51 EDT
Jetty is using logback and this caused a second medic.core bundle to come up in the user region, this published a second heap dump contributor which then failed to write the heap out when the first heap dump contributor had already written it. Fixed by exporting the right logback packages from core so that a second medic bundle isn't needed.