Mercurial > public > mercurial-scm > hg
comparison mercurial/worker.py @ 31119:13bbcd56c57a
merge with stable
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 28 Feb 2017 11:13:25 -0800 |
parents | 48dea083f66d a91c62752d08 |
children | 9d3d56aa1a9f |
comparison
equal
deleted
inserted
replaced
31116:6483e49204ee | 31119:13bbcd56c57a |
---|---|
118 # updated (maybe interrupted just after waitpid) | 118 # updated (maybe interrupted just after waitpid) |
119 pids.discard(pid) | 119 pids.discard(pid) |
120 break | 120 break |
121 else: | 121 else: |
122 raise | 122 raise |
123 if p: | 123 if not p: |
124 pids.discard(p) | 124 # skip subsequent steps, because child process should |
125 st = _exitstatus(st) | 125 # be still running in this case |
126 continue | |
127 pids.discard(p) | |
128 st = _exitstatus(st) | |
126 if st and not problem[0]: | 129 if st and not problem[0]: |
127 problem[0] = st | 130 problem[0] = st |
128 def sigchldhandler(signum, frame): | 131 def sigchldhandler(signum, frame): |
129 waitforworkers(blocking=False) | 132 waitforworkers(blocking=False) |
130 if problem[0]: | 133 if problem[0]: |
143 | 146 |
144 # make sure we use os._exit in all code paths. otherwise the worker | 147 # make sure we use os._exit in all code paths. otherwise the worker |
145 # may do some clean-ups which could cause surprises like deadlock. | 148 # may do some clean-ups which could cause surprises like deadlock. |
146 # see sshpeer.cleanup for example. | 149 # see sshpeer.cleanup for example. |
147 try: | 150 try: |
148 scmutil.callcatch(ui, workerfunc) | 151 try: |
152 scmutil.callcatch(ui, workerfunc) | |
153 finally: | |
154 ui.flush() | |
149 except KeyboardInterrupt: | 155 except KeyboardInterrupt: |
150 os._exit(255) | 156 os._exit(255) |
151 except: # never return, therefore no re-raises | 157 except: # never return, therefore no re-raises |
152 try: | 158 try: |
153 ui.traceback() | 159 ui.traceback() |
160 ui.flush() | |
154 finally: | 161 finally: |
155 os._exit(255) | 162 os._exit(255) |
156 else: | 163 else: |
157 os._exit(0) | 164 os._exit(0) |
158 pids.add(pid) | 165 pids.add(pid) |