tests/killdaemons.py
author Augie Fackler <raf@durin42.com>
Mon, 20 Oct 2014 22:16:24 -0400
changeset 1159 04bd66779a1f
parent 7 cc592295900f
child 1222 88e61e45026d
permissions -rwxr-xr-x
obsup: hack extension to make in-place upgrading of obsolete markers easy I tried upgrading my obsstore by doing a local clone as suggested by Pierre-Yves and Sean, but that caused me to end up with a ton of unstable changes that should have been marked dead. In fact, as far as I can tell, most of the performance win of that upgrade came from the fact that only about 46% (46672 of 102285) of my markers were brought over with the copy-and-pull method.

#!/usr/bin/env python

import os, time, errno, signal

# Kill off any leftover daemon processes
try:
    fp = open(os.environ['DAEMON_PIDS'])
    for line in fp:
        try:
            pid = int(line)
        except ValueError:
            continue
        try:
            os.kill(pid, 0)
            os.kill(pid, signal.SIGTERM)
            for i in range(10):
                time.sleep(0.05)
                os.kill(pid, 0)
            os.kill(pid, signal.SIGKILL)
        except OSError, err:
            if err.errno != errno.ESRCH:
                raise
    fp.close()
except IOError:
    pass