eclipse-ee4j / eclipse-ee4j/jersey

Restful webservices with Jersey API v2.19 getting few stuck threads.

Open
#3,638 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
730
Forks
382
PR merge metrics
No merged PRs in 30d

Description

Hi,
We Implemented few web services with Jersey API v2.19, for that we are seeing few stuck threads in my Application server (weblogic) which are blocked by Jersey API at Park method. we are seeing this issue only when the load is more in the system, in normal load everything looks fine..
.
We set 300 sec for MaxStuckThreadTime value. and more over requests which are stuck they are timing out after 300 sec and the response is generating successfully in DB after 300 sec. but stuck thread will not be releasing at weblogic. due to which weblogic is going to warning state because daily we are seeing 15 to 20 stuck threads for per day .

here my webserver to weblogic timeout value is also 300. so i think after 300 sec webserver worker is getting timedout for that request from then the request is completing..but still the thread which went to stuck thread queue which is not getting released until i restart next time

This issue we are seeing in production. so please suggest me with some directions to resolve this issue..

Here is the dump for the issue.. and sample code attached here..
[ws-test.zip](https://github.com/jersey/jersey/files/1216503/ws-test.zip)

<[STUCK] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)' has been busy for "349" seconds working on the request "Workmanager: default, Version: 4, Scheduled=true, Started=true, Started time: 349451 ms
", which is more than the configured time (StuckThreadMaxTime) of "300" seconds. Stack trace:
sun.misc.Unsafe.park(Native Method)
java.util.concurrent.locks.LockSupport.park(LockSupport.java:197)
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:845)
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1005)
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1314)
jersey.repackaged.com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:285)
jersey.repackaged.com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
org.glassfish.jersey.servlet.internal.ResponseWriter.getResponseContext(ResponseWriter.java:299)
org.glassfish.jersey.servlet.internal.ResponseWriter.callSendError(ResponseWriter.java:215)
org.glassfish.jersey.servlet.internal.ResponseWriter.commit(ResponseWriter.java:194)
org.glassfish.jersey.server.ContainerResponse.close(ContainerResponse.java:413)
org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:784)
org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:444)
org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:434)
org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:329)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
org.glassfish.jersey.internal.Errors.process(Errors.java:315)
org.glassfish.jersey.internal.Errors.process(Errors.java:297)
org.glassfish.jersey.internal.Errors.process(Errors.java:267)
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)
org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)
org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:242)
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:216)
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:132)
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:338)
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:221)
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3284)
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3254)
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2163)
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2089)
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2074)
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1513)
weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.