Jun Wu <quark@fb.com> [Sat, 22 Apr 2017 17:00:50 -0700] rev 32167
test-worker: capture tracebacks more reliably
The traceback test may have traceback caused by SIGTERM. Instead of grepping
"Traceback", explicitly grep the exception we care about.
This makes the test less flaky.
Jun Wu <quark@fb.com> [Sat, 22 Apr 2017 16:50:08 -0700] rev 32166
worker: rewrite error handling so os._exit covers all cases
Previously the worker error handling is like:
pid = os.fork() --+
if pid == 0: |
.... | problematic
.... --+
try: --+
.... | worker error handling
--+
If a signal arrives when Python is executing the "problematic" lines, an
external error handling (dispatch.py) will take over the control flow and
it's no longer guaranteed "os._exit" is called (see 86cd09bc13ba for why it
is necessary).
This patch rewrites the error handling so it covers all possible code paths
for a worker even during fork.
Note: "os.getpid() == parentpid" is used to test if the process is parent or
not intentionally, instead of checking "pid", because "pid = os.fork()" may
be not atomic - it's possible that that a signal hits the worker before the
assignment completes [1]. The newly added test replaces "os.fork" to
exercise that extreme case.
[1]: CPython compiles "pid = os.fork()" to 2 byte codes: "CALL_FUNCTION" and
"STORE_FAST", so it's probably not atomic:
def f():
pid = os.fork()
dis.dis(f)
2 0 LOAD_GLOBAL 0 (os)
3 LOAD_ATTR 1 (fork)
6 CALL_FUNCTION 0
9 STORE_FAST 0 (pid)
12 LOAD_CONST 0 (None)
15 RETURN_VALUE
Jun Wu <quark@fb.com> [Sat, 22 Apr 2017 15:00:17 -0700] rev 32165
dispatch: take over SignalInterrupt handling from scmutil
dispatch handles KeyboardInterrupt already. This makes the code more
consistent, and makes worker not print "killed!" if it receives SIGTERM in
most cases (in rare cases there is still "killed!" printed, which will be
fixed by the next patch).
Kevin Bullock <kbullock+mercurial@ringworld.org> [Tue, 02 May 2017 17:29:01 -0500] rev 32164
merge stable into default
Augie Fackler <raf@durin42.com> [Wed, 05 Jul 2017 11:24:22 -0400] rev 32163
Added signature for changeset 26c49ed51a69
Augie Fackler <raf@durin42.com> [Wed, 05 Jul 2017 11:24:17 -0400] rev 32162
Added tag 4.2.2 for changeset 26c49ed51a69
Matt Harbison <matt_harbison@yahoo.com> [Tue, 04 Jul 2017 22:58:21 -0400] rev 32161
help: cleanup grammar in the hooks section
Augie Fackler <augie@google.com> [Tue, 04 Jul 2017 10:18:44 -0400] rev 32160
merge with i18n
Augie Fackler <augie@google.com> [Tue, 04 Jul 2017 10:17:14 -0400] rev 32159
revlog: backed out changeset e9d325cfe071
We'll move this to the default branch.
Wagner Bruna <wbruna@softwareexpress.com.br> [Thu, 29 Jun 2017 12:07:54 -0300] rev 32158
i18n-pt_BR: synchronized with efebc9f52ecb