diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2018-10-23 13:12:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-23 13:12:32 +0100 |
commit | 5c445114d356c9c23b99f0a2c4246be983a38b69 (patch) | |
tree | 81a82e1a752e1e8fa9abeb7ad7cf72841c75adda /synapse/rest/media/v1/media_storage.py | |
parent | Merge pull request #3698 from spantaleev/add-matrix-docker-ansible-deploy (diff) | |
download | synapse-5c445114d356c9c23b99f0a2c4246be983a38b69.tar.xz |
Correctly account for cpu usage by background threads (#4074)
Wrap calls to deferToThread() in a thing which uses a child logcontext to attribute CPU usage to the right request. While we're in the area, remove the logcontext_tracer stuff, which is never used, and afaik doesn't work. Fixes #4064
Diffstat (limited to 'synapse/rest/media/v1/media_storage.py')
-rw-r--r-- | synapse/rest/media/v1/media_storage.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/synapse/rest/media/v1/media_storage.py b/synapse/rest/media/v1/media_storage.py index a6189224ee..896078fe76 100644 --- a/synapse/rest/media/v1/media_storage.py +++ b/synapse/rest/media/v1/media_storage.py @@ -21,9 +21,10 @@ import sys import six -from twisted.internet import defer, threads +from twisted.internet import defer from twisted.protocols.basic import FileSender +from synapse.util import logcontext from synapse.util.file_consumer import BackgroundFileConsumer from synapse.util.logcontext import make_deferred_yieldable @@ -64,9 +65,10 @@ class MediaStorage(object): with self.store_into_file(file_info) as (f, fname, finish_cb): # Write to the main repository - yield make_deferred_yieldable(threads.deferToThread( + yield logcontext.defer_to_thread( + self.hs.get_reactor(), _write_file_synchronously, source, f, - )) + ) yield finish_cb() defer.returnValue(fname) |