javaee / jersey

This is no longer the active Jersey repository. Please see the README.md
http://jersey.github.io
Other
2.86k stars 2.35k forks source link

Stuck threads under heavy load #3460

Open glassfishrobot opened 7 years ago

glassfishrobot commented 7 years ago

Under heavy load in a production environment we see a dead-lock situation. Here is the thread dump:

ExecuteThread: '118' for queue: 'weblogic.kernel.Default (self-tuning)'" waiting for lock java.util.WeakHashMap@357951b8 BLOCKED com.sun.jersey.core.provider.jaxb.AbstractJAXBProvider.getStoredJAXBContext(AbstractJAXBProvider.java:193) com.sun.jersey.core.provider.jaxb.AbstractJAXBProvider.getJAXBContext(AbstractJAXBProvider.java:188) com.sun.jersey.core.provider.jaxb.AbstractJAXBProvider.getMarshaller(AbstractJAXBProvider.java:166) com.sun.jersey.core.provider.jaxb.AbstractJAXBProvider.getMarshaller(AbstractJAXBProvider.java:145) com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.writeTo(AbstractRootElementProvider.java:151) com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:302) com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1510) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) javax.servlet.http.HttpServlet.service(HttpServlet.java:820) weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) ... weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) org.apache.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71) weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:60) weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3748) weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3714) weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2283) weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2182) weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491) weblogic.work.ExecuteThread.execute(ExecuteThread.java:263) weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

AbstractJAXBProvider.getStoredJAXBContext() synchronizes on the static field jaxbContexts and accesses jaxbContexts in line 193. This may cause the problem.

There were also some problems with WeakHahsMap we want to mention:

https://bugs.openjdk.java.net/browse/JDK-8075006 https://java.net/jira/browse/JAVASERVERFACES-2544

Environment

JDK 1.7.0_85 WebLogic 10.3.5

Affected Versions

[1.19.1]

glassfishrobot commented 7 years ago

Reported by stefan.friedrich

glassfishrobot commented 7 years ago

This issue was imported from java.net JIRA JERSEY-3188