diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2019-07-03 13:40:45 +0100 |
---|---|---|
committer | Amber Brown <hawkowl@atleastfornow.net> | 2019-07-03 22:40:45 +1000 |
commit | cb8d568cf90bb0f5f07ee9e7e6796ad7cd83361f (patch) | |
tree | 4eb8bdaf3e9a283b41de7b55405727d75b840c66 /synapse/app | |
parent | 1.1.0rc2 (diff) | |
download | synapse-cb8d568cf90bb0f5f07ee9e7e6796ad7cd83361f.tar.xz |
Fix 'utime went backwards' errors on daemonization. (#5609)
* Fix 'utime went backwards' errors on daemonization. Fixes #5608 * remove spurious debug
Diffstat (limited to 'synapse/app')
-rw-r--r-- | synapse/app/_base.py | 57 |
1 files changed, 30 insertions, 27 deletions
diff --git a/synapse/app/_base.py b/synapse/app/_base.py index d50a9840d4..9b5c30f506 100644 --- a/synapse/app/_base.py +++ b/synapse/app/_base.py @@ -93,33 +93,36 @@ def start_reactor( install_dns_limiter(reactor) def run(): - # make sure that we run the reactor with the sentinel log context, - # otherwise other PreserveLoggingContext instances will get confused - # and complain when they see the logcontext arbitrarily swapping - # between the sentinel and `run` logcontexts. - with PreserveLoggingContext(): - logger.info("Running") - - change_resource_limit(soft_file_limit) - if gc_thresholds: - gc.set_threshold(*gc_thresholds) - reactor.run() - - if daemonize: - if print_pidfile: - print(pid_file) - - daemon = Daemonize( - app=appname, - pid=pid_file, - action=run, - auto_close_fds=False, - verbose=True, - logger=logger, - ) - daemon.start() - else: - run() + logger.info("Running") + change_resource_limit(soft_file_limit) + if gc_thresholds: + gc.set_threshold(*gc_thresholds) + reactor.run() + + # make sure that we run the reactor with the sentinel log context, + # otherwise other PreserveLoggingContext instances will get confused + # and complain when they see the logcontext arbitrarily swapping + # between the sentinel and `run` logcontexts. + # + # We also need to drop the logcontext before forking if we're daemonizing, + # otherwise the cputime metrics get confused about the per-thread resource usage + # appearing to go backwards. + with PreserveLoggingContext(): + if daemonize: + if print_pidfile: + print(pid_file) + + daemon = Daemonize( + app=appname, + pid=pid_file, + action=run, + auto_close_fds=False, + verbose=True, + logger=logger, + ) + daemon.start() + else: + run() def quit_with_error(error_string): |