Remove pidfiles after shutting down test servers.
authorTom Clegg <tom@curoverse.com>
Wed, 22 Feb 2017 21:33:35 +0000 (16:33 -0500)
committerTom Clegg <tom@curoverse.com>
Wed, 22 Feb 2017 21:33:35 +0000 (16:33 -0500)
No issue #

sdk/python/tests/run_test_server.py

index b969b12a7abc6374ae0993d0d95c2f5cf85f784b..776ff728cb164113c056362bc28ed58e09d34320 100644 (file)
@@ -109,6 +109,7 @@ def kill_server_pid(pidfile, wait=10, passenger_root=False):
         try:
             exited, _ = os.waitpid(server_pid, os.WNOHANG)
             if exited > 0:
+                _remove_pidfile(pidfile)
                 return
         except OSError:
             # already exited, or isn't our child process
@@ -122,6 +123,7 @@ def kill_server_pid(pidfile, wait=10, passenger_root=False):
             if error.errno == errno.ESRCH:
                 # Thrown by os.getpgid() or os.kill() if the process
                 # does not exist, i.e., our work here is done.
+                _remove_pidfile(pidfile)
                 return
             raise
         time.sleep(0.1)
@@ -131,6 +133,13 @@ def kill_server_pid(pidfile, wait=10, passenger_root=False):
           format(server_pid, pidfile, wait),
           file=sys.stderr)
 
+def _remove_pidfile(pidfile):
+    try:
+        os.unlink(pidfile)
+    except:
+        if os.path.lexists(pidfile):
+            raise
+
 def find_available_port():
     """Return an IPv4 port number that is not in use right now.