Mercurial > public > mercurial-scm > hg-stable
diff mercurial/worker.py @ 49310:ee4537e365c8
py3: remove retry on EINTR errno
Since the implementation of PEP 475 (Python 3.5), Python retries system calls
failing with EINTR. Therefore we don?t need the logic that retries it in Python
code.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Tue, 31 May 2022 04:11:34 +0200 |
parents | 311fcc5a65f6 |
children | dfdf85f37215 |
line wrap: on
line diff
--- a/mercurial/worker.py Tue May 31 03:39:42 2022 +0200 +++ b/mercurial/worker.py Tue May 31 04:11:34 2022 +0200 @@ -184,20 +184,15 @@ def waitforworkers(blocking=True): for pid in pids.copy(): p = st = 0 - while True: - try: - p, st = os.waitpid(pid, (0 if blocking else os.WNOHANG)) - break - except OSError as e: - if e.errno == errno.EINTR: - continue - elif e.errno == errno.ECHILD: - # child would already be reaped, but pids yet been - # updated (maybe interrupted just after waitpid) - pids.discard(pid) - break - else: - raise + try: + p, st = os.waitpid(pid, (0 if blocking else os.WNOHANG)) + except OSError as e: + if e.errno == errno.ECHILD: + # child would already be reaped, but pids yet been + # updated (maybe interrupted just after waitpid) + pids.discard(pid) + else: + raise if not p: # skip subsequent steps, because child process should # be still running in this case @@ -302,10 +297,6 @@ key.fileobj.close() # pytype: enable=attribute-error openpipes -= 1 - except IOError as e: - if e.errno == errno.EINTR: - continue - raise except: # re-raises killworkers() cleanup()