users@glassfish.java.net

Glassfish HttpWorkThreads Hang under SSL

From: <glassfish_at_javadesktop.org>
Date: Wed, 20 Jun 2007 15:18:44 PDT

We are having a problem with glassfish build 48 under Solaris 10 java 1.5.0_06-b05.

We have a number of web services running and all is well accessing them via a http URL (non-ssl). We are having problems accessing these same web sevices via https. It appears that the "httpWorkerThread-8585-xx" request processing threads get hung up as shown in the trace below.

Thread "httpWorkerThread-8585-0" thread-id 75 thread-stateRUNNABLERunning in native
         at: sun.nio.ch.DevPollArrayWrapper.poll0(Native Method)
         at: sun.nio.ch.DevPollArrayWrapper.poll(DevPollArrayWrapper.java:158)
         at: sun.nio.ch.DevPollSelectorImpl.doSelect(DevPollSelectorImpl.java:68)
         at: sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
         at: sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
         at: sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84)
         at: com.sun.enterprise.server.ss.provider.ASSelector.select(ASSelector.java:128)
         at: com.sun.enterprise.server.ss.provider.ASOutputStream.waitForSelect(ASOutputStream.java:96)
         at: com.sun.enterprise.server.ss.provider.ASOutputStream.write(ASOutputStream.java:136)
         at: com.sun.net.ssl.internal.ssl.OutputRecord.writeBuffer(OutputRecord.java:283)
         at: com.sun.net.ssl.internal.ssl.OutputRecord.write(OutputRecord.java:272)
         at: com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:663)
         at: com.sun.net.ssl.internal.ssl.SSLSocketImpl.sendAlert(SSLSocketImpl.java:1580)
         at: com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1472)
         at: com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1443)
         at: com.sun.net.ssl.internal.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1407)
         at: com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:86)
         at: org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:852)
         at: org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:446)
         at: com.sun.enterprise.web.connector.grizzly.ProcessorTask.parseRequest(ProcessorTask.java:719)
         at: com.sun.enterprise.web.connector.grizzly.ProcessorTask.processBlocked(ProcessorTask.java:604)
         at: com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:842)
         at: com.sun.enterprise.web.connector.grizzly.ProcessorTask.doTask(ProcessorTask.java:436)
         at: com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
         at: com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:75)

We begin by starting glassfish and all is well. In glassfish we have the HTTP request processing "thread count" set to 5 all all of the threads appear to be normal waiting to service requests as shown below.

Thread "httpWorkerThread-8585-0" thread-id 75 thread-stateWAITINGWaiting on lock: com.sun.enterprise.web.connector.grizzly.LinkedListPipeline_at_146b111
         at: java.lang.Object.wait(Native Method)
         at: java.lang.Object.wait(Object.java:474)
         at: com.sun.enterprise.web.connector.grizzly.LinkedListPipeline.getTask(LinkedListPipeline.java:279)
         at: com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:73)

We then access a web service via https and it works but the http worker thread "httpWorkerThread-8585-xx" is no longer waiting but in the running state as shown above. When we access the web service 5 times all the worker theads are running and all further requests just hang. If we access these same web services via http we don't have this problem.

Has anyone every seen this problem before or have suggestions on how to resolve this or possibly point us in the right direction?

Thank you.
[Message sent by forum member 'tpward' (tpward)]

http://forums.java.net/jive/thread.jspa?messageID=223176