mirror of
https://github.com/element-hq/synapse.git
synced 2024-12-14 11:57:44 +00:00
Stop the parent process flushing the logs on exit (#8012)
This solves the problem that the first few lines are logged twice on matrix.org. Hopefully the comments explain it.
This commit is contained in:
parent
8b786db323
commit
0a86850ba3
4 changed files with 10 additions and 3 deletions
1
changelog.d/8011.bugfix
Normal file
1
changelog.d/8011.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix a long-standing bug which caused two copies of some log lines to be written when synctl was used along with a MemoryHandler logger.
|
|
@ -1 +0,0 @@
|
|||
Replace daemonize library with a local implementation.
|
1
changelog.d/8012.bugfix
Normal file
1
changelog.d/8012.bugfix
Normal file
|
@ -0,0 +1 @@
|
|||
Fix a long-standing bug which caused two copies of some log lines to be written when synctl was used along with a MemoryHandler logger.
|
|
@ -60,8 +60,14 @@ def daemonize_process(pid_file: str, logger: logging.Logger, chdir: str = "/") -
|
|||
process_id = os.fork()
|
||||
|
||||
if process_id != 0:
|
||||
# parent process
|
||||
sys.exit(0)
|
||||
# parent process: exit.
|
||||
|
||||
# we use os._exit to avoid running the atexit handlers. In particular, that
|
||||
# means we don't flush the logs. This is important because if we are using
|
||||
# a MemoryHandler, we could have logs buffered which are now buffered in both
|
||||
# the main and the child process, so if we let the main process flush the logs,
|
||||
# we'll get two copies.
|
||||
os._exit(0)
|
||||
|
||||
# This is the child process. Continue.
|
||||
|
||||
|
|
Loading…
Reference in a new issue