Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-862

Shutdown process hangs using thread pool executor

    XMLWordPrintable

Details

    • Bug
    • Resolution: Obsolete
    • Major
    • None
    • None
    • Web (Undertow)
    • None

    Description

      When AJP connecotr uses thread pool executor configuration[1], AJP's worker thread is waited by AjpProcessor.read()[2]. QueueExecuter recognizes it as active thread. Therefor, unless httpd server shut down, EAP server shutdown process does not finish forever.

      [1] standalone.xml
      <subsystem xmlns="urn:jboss:domain:threads:1.1">
      <bounded-queue-thread-pool name="http-executor">
      <queue-length count="1"/>
      <max-threads count="1"/>
      </bounded-queue-thread-pool>
      </subsystem>
      — snip —
      <subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
      <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
      <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp" executor="http-executor"/>
      <virtual-server name="default-host" enable-welcome-root="true">
      <alias name="localhost"/>
      <alias name="example.com"/>
      </virtual-server>
      </subsystem>

      [2]
      "http-executor-threads - 1" prio=6 tid=0x55515000 nid=0x20c0 runnable [0x5590f000]
      java.lang.Thread.State: RUNNABLE
      at java.net.SocketInputStream.socketRead0(Native Method)
      at java.net.SocketInputStream.read(SocketInputStream.java:129)
      at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:1131)
      at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:1213)
      at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:451)
      at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:452)
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:519)
      at org.jboss.threads.SimpleDirectExecutor.execute(SimpleDirectExecutor.java:33)
      at org.jboss.threads.QueueExecutor.runTask(QueueExecutor.java:801)
      at org.jboss.threads.QueueExecutor.access$100(QueueExecutor.java:45)
      at org.jboss.threads.QueueExecutor$Worker.run(QueueExecutor.java:821)
      at java.lang.Thread.run(Thread.java:662)
      at org.jboss.threads.JBossThread.run(JBossThread.java:122)

      Attachments

        Activity

          People

            rmaucher Remy Maucherat
            rhn-support-enagai Eiichi Nagai (Inactive)
            Votes:
            2 Vote for this issue
            Watchers:
            11 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: