Felix Meschberger created SLING-3915: ----------------------------------------
Summary: Launchpad ControlListener improvement Key: SLING-3915 URL: https://issues.apache.org/jira/browse/SLING-3915 Project: Sling Issue Type: Improvement Components: Launchpad Affects Versions: Launchpad Base 2.5.2 Reporter: Felix Meschberger I was involved with a customer report indicating that the ControlListener would not work. The customer issued a stop command upon which the system should have shut down. This seems to not have been the case so the customer tried to issue stop again. This time, though the connection to the control port could be opened but the command was not answered. Looking at the situation it looks like the first command issues the shutdown. But this caused a deadlock. The server side socket was terminating and the control thread was waiting for sling to shutdown. While waiting for the shutdown the control thread could of course not accept new commands, even though TCP/IP connections were being setup. To prevent such situations I am proposing an extension to the Launchpad ControlListener which listens on a TCP/IP control port for status and stop commands: * Calling stop starts a separate thread to shutdown Sling asynchronously to the ControlListener thread. After having issued a stop command the ControlListener will reply "STOPPING" to the status command * Adding a new "threads" command to have the ControlListener print a thread dump similar to the JDK jstack command. This includes all threads as well as dumping potential deadlocks. A new Unit test contains two Thread classes which provoke deadlocks to show how the thread dumper reports deadlocks. -- This message was sent by Atlassian JIRA (v6.3.4#6332)