DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11755>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11755 Possible to hang new instance if old instance is not yet fully shut down Summary: Possible to hang new instance if old instance is not yet fully shut down Product: Tomcat 4 Version: 4.0.4 Final Platform: PC OS/Version: Linux Status: NEW Severity: Normal Priority: Other Component: Catalina AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] If one Tomcat process is in the process of shutting down, and another Tomcat process is then launched from the same set of config files (same control port) -- *before* the first one has fully shut down -- then it is possible to get in a state where the new Tomcat is *partially* running, in a sort of undead state -- it is alive, yet does not work, yet also prevents further Tomcat instances from running. This state is reflected in catalina.out by the error message StandardServer.await: create[8005]: java.net.BindException: Address already in use java.net.BindException: Address already in use at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:405) at java.net.ServerSocket.<init>(ServerSocket.java:170) at org.apache.catalina.core.StandardServer.await(StandardServer.java:277) at org.apache.catalina.startup.Catalina.start(Catalina.java:794) at org.apache.catalina.startup.Catalina.execute(Catalina.java:681) at org.apache.catalina.startup.Catalina.process(Catalina.java:179) at java.lang.reflect.Method.invoke(Native Method) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243) It seems to happen when the original instance has shut down its port 8005 listener, but has not yet closed its port 8080 listener, allowing the second instance to grab 8005 yet fail to open 8080. This, in turn, keeps the third instance from launching at all. (I may be wrong about the order, but I have a feeling that the theme of the deadlock is port socket listeners.) In Linux this undead state is also signified by the "ps" utility showing 10 Tomcat threads/processes, instead of the usual 30 or so. The proper behavior is probably for the second Tomcat to either fail gracefully and completely when it fails to establish all its listeners, and/or to wait a moment and try again (perhaps up to a minute, at which point it should fail completely). Fixing this (along with the other two RFEs) is important for the implementation of a restart script, which is a pretty useful thing for a sysadmin to have. I have been off the Tomcat team for a while, but if a current developer wants to point me in the right direction, please let me know and I'll see if I can take a stab at writing a patch myself. -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>