Red Hat Bugzilla – Bug 1347860
The systemd service unit does not allow tomcat to shut down gracefully
Last modified: 2016-11-03 17:14:01 EDT
Created attachment 1169239 [details] small test app to reproduce behavior Description of problem: The systemd unit terminates the tomcat process prematurely, therefore not allowing it to shutdown gracefully. The direct effect of this is that sessions in the session manager are not persisted to disk and restored after a restart, resulting in a loss of session data (unless you are replicating data within a cluster). Version-Release number of selected component (if applicable): tomcat-7.0.54-1.el7.noarch How reproducible: Always Steps to Reproduce: 1. yum install tomcat 2. cp reproducer.war /usr/share/tomcat/webapps/ 3. service tomcat start 4. curl http://localhost:8080/reproducer/getSession.jsp 5. service tomcat stop 6. ls /usr/share/tomcat/work/Catalina/localhost/reproducer/SESSIONS.ser Actual results: The session created by the curl request is not persisted into SESSIONS.ser. Expected results: The session created by the curl request is persisted to SESSIONS.ser Additional info: When the process successfully completes (with FINE logging on the StandardManager (org.apache.catalina.session.StandardManager.level = FINE)), you see the following along with other shutdown messages: ~~~ Jun 17, 2016 4:45:08 PM org.apache.catalina.session.StandardManager doUnload FINE: Unloading persisted sessions Jun 17, 2016 4:45:08 PM org.apache.catalina.session.StandardManager doUnload FINE: Saving persisted sessions to SESSIONS.ser Jun 17, 2016 4:45:08 PM org.apache.catalina.session.StandardManager doUnload FINE: Unloading 4 sessions Jun 17, 2016 4:45:08 PM org.apache.catalina.session.StandardManager doUnload FINE: Expiring 4 persisted sessions Jun 17, 2016 4:45:08 PM org.apache.catalina.session.StandardManager doUnload FINE: Unloading complete ~~~ When you call the service stop, it terminates before the shutdown can complete (almost immediately after calling stop): ~~~ INFO: Server startup in 3501 ms Jun 17, 2016 4:58:20 PM org.apache.catalina.core.StandardServer await INFO: A valid shutdown command was received via the shutdown port. Stopping the Server instance. Jun 17, 2016 4:58:20 PM org.apache.coyote.AbstractProtocol pause INFO: Pausing ProtocolHandler ["http-bio-8080"] ~~~
I'm able to get a graceful shutdown if I switch the unit type to Forking instead of simple, but then the start hangs :(
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2016-2599.html