def maybe_kill_worker(dir, pid):
f = OS.path.join(dir, 'lk.%d' % pid)
- try: fd = OS.open(f, OS.O_RDONLY)
+ try: fd = OS.open(f, OS.O_RDWR)
except OSError, err:
if err.errno != E.ENOENT: raise ExpectedError, 'open lockfile: %s' % err
return
## we lose a bunch of work. :-(
c.execute("""SELECT pid FROM workers WHERE p = ? AND k = ?""",
(str(p), k))
- for pid, in c: maybe_kill_worker(dir, pid)
+ for pid, in c:
+ if pid != mypid: maybe_kill_worker(dir, pid)
c.execute("""DELETE FROM workers WHERE p = ? AND k = ?""",
(str(p), k - 1))
c.execute("""DELETE FROM points WHERE p = ? AND k = ?""",
p, n = C.MP(pstr), C.MP(nstr)
qq.append(p**e)
nn.append(n)
- n = C.MPCRT(qq).solve(nn)
+ if len(qq) == 1: n = nn[0]
+ else: n = C.MPCRT(qq).solve(nn)
## One last check that this is the right answer.
xx = G.pow(g, n)