black.toml
author Rodrigo Damazio Bovendorp <rdamazio@google.com>
Thu, 07 May 2020 03:14:52 -0700
branchstable
changeset 44781 ed684a82e29b
parent 44147 5e84a96d865b
permissions -rw-r--r--
procutil: always waiting on child processes to prevent zombies with 'hg serve' When runbgcommand is invoked by an extension with ensurestart=False, we never called waitpid - which is fine in most cases, except if that's happening on a command server (e.g. chg), in which case the child defunct process will just sit there for as long as the server is running. The actual semantics of SIGCHLD signal handling is a lot more complex than it seems, and the POSIX standard *seems* to read that it's ignored by default and everything would just work without the waitpid if we're not listening for it, but the truth is that it's only ignored if we *explicitly* set it to SIG_IGN. We further cannot set it to SIG_IGN or to a catch-all handler across all of 'hg serve', because Python's suprocess.Popen relies on that signal, and a few specific parts of hg also set custom handlers, so instead we wait for specific PIDs in dedicated threads. I did a poor-man's benchmark of the thread creation and it seems to take about 1ms, which is way better than the 20+ms from ensurestart=True. Differential Revision: https://phab.mercurial-scm.org/D8497
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
43064
929678eb4cbd black: add a pyproject.toml that contains our black settings
Augie Fackler <augie@google.com>
parents:
diff changeset
     1
[tool.black]
929678eb4cbd black: add a pyproject.toml that contains our black settings
Augie Fackler <augie@google.com>
parents:
diff changeset
     2
line-length = 80
43224
2a201b366d5b black: use multiline exclude definition
Augie Fackler <augie@google.com>
parents: 43223
diff changeset
     3
exclude = '''
2a201b366d5b black: use multiline exclude definition
Augie Fackler <augie@google.com>
parents: 43223
diff changeset
     4
build/
2a201b366d5b black: use multiline exclude definition
Augie Fackler <augie@google.com>
parents: 43223
diff changeset
     5
| wheelhouse/
2a201b366d5b black: use multiline exclude definition
Augie Fackler <augie@google.com>
parents: 43223
diff changeset
     6
| dist/
2a201b366d5b black: use multiline exclude definition
Augie Fackler <augie@google.com>
parents: 43223
diff changeset
     7
| packages/
2a201b366d5b black: use multiline exclude definition
Augie Fackler <augie@google.com>
parents: 43223
diff changeset
     8
| \.hg/
2a201b366d5b black: use multiline exclude definition
Augie Fackler <augie@google.com>
parents: 43223
diff changeset
     9
| \.mypy_cache/
2a201b366d5b black: use multiline exclude definition
Augie Fackler <augie@google.com>
parents: 43223
diff changeset
    10
| \.venv/
2a201b366d5b black: use multiline exclude definition
Augie Fackler <augie@google.com>
parents: 43223
diff changeset
    11
| mercurial/thirdparty/
2a201b366d5b black: use multiline exclude definition
Augie Fackler <augie@google.com>
parents: 43223
diff changeset
    12
'''
43223
15c05732d177 black: move remaining config knobs into toml file
Augie Fackler <augie@google.com>
parents: 43222
diff changeset
    13
skip-string-normalization = true
15c05732d177 black: move remaining config knobs into toml file
Augie Fackler <augie@google.com>
parents: 43222
diff changeset
    14
quiet = true