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