Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:05:39 +0200] rev 32121
cleanup: drop the deprecated 'localrepo._link' method
This was deprecated in favor of 'localrepo.wvfs.islink'. We can now drop it for the
future 4.3.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:04:55 +0200] rev 32120
cleanup: drop the deprecated 'localrepo.wfile' method
This was deprecated in favor of 'localrepo.wvfs.join'. We can now drop it for the
future 4.3.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:03:56 +0200] rev 32119
cleanup: drop the deprecated 'localrepo.join' method
This was deprecated in favor of 'localrepo.vfs.join'. We can now drop it for the
future 4.3.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:03:04 +0200] rev 32118
cleanup: drop the deprecated 'localrepo.tag' method
This was deprecated in favor of 'mercurial.tags.tag'. We can now drop it for the
future 4.3.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:01:47 +0200] rev 32117
cleanup: drop the deprecated 'localrepo.opener' method
This was deprecated in favor of 'localrepo.vfs'. We can now drop it for the
future 4.3.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:01:15 +0200] rev 32116
cleanup: drop the deprecated 'localrepo.wopener' method
This was deprecated in favor of 'localrepo.wvfs'. We can now drop it for the
future 4.3.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 01:59:33 +0200] rev 32115
cleanup: drop vfs compatibility layer in scmutil
All these constructors are deprecated in 4.2. We can now drop them on the
default branch (future 4.3).
Jun Wu <quark@fb.com> [Sat, 22 Apr 2017 17:13:05 -0700] rev 32114
test-worker: exercise more about "killworkers" situation
This patch adds some sleep and increases numcpus to exercise the
"killworkers" situation. So race conditions could be discovered more easily,
if someone changes worker.py incorrectly. Currently worker.py should be free
of such issues.
Jun Wu <quark@fb.com> [Sat, 22 Apr 2017 17:00:50 -0700] rev 32113
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 32112
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