eclipse-ee4j / eclipse-ee4j/jersey
Stuck threads under heavy load
- Dominant language
- Java
- Stars
- 730
- Forks
- 382
- PR merge metrics
- No merged PRs in 30d
Description
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://bugs.openjdk.java.net/browse/JDK-8075006)
[https://java.net/jira/browse/JAVASERVERFACES-2544](https://java.net/jira/browse/JAVASERVERFACES-2544)
#### Environment
JDK 1.7.0_85
WebLogic 10.3.5
#### Affected Versions
[1.19.1]
Contributor guide
Assessment
This issue has not been assessed yet.