diff options
author | Richard van der Hoff <1389908+richvdh@users.noreply.github.com> | 2018-07-19 11:04:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-19 11:04:18 +0100 |
commit | c754e006f4860718057ad6dded91e66f6239bb57 (patch) | |
tree | 6101a439c55c0f6d41c8d13cf5ff985e21fd9d51 /synapse/storage/events.py | |
parent | Move v1-only APIs into their own module & isolate deprecated ones (#3460) (diff) | |
parent | Make Distributor run its processes as a background process (diff) | |
download | synapse-c754e006f4860718057ad6dded91e66f6239bb57.tar.xz |
Merge pull request #3556 from matrix-org/rav/background_processes
Run things as background processes
Diffstat (limited to 'synapse/storage/events.py')
-rw-r--r-- | synapse/storage/events.py | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/synapse/storage/events.py b/synapse/storage/events.py index 2aaab0d02c..4ff0fdc4ab 100644 --- a/synapse/storage/events.py +++ b/synapse/storage/events.py @@ -33,12 +33,13 @@ from synapse.api.errors import SynapseError # these are only included to make the type annotations work from synapse.events import EventBase # noqa: F401 from synapse.events.snapshot import EventContext # noqa: F401 +from synapse.metrics.background_process_metrics import run_as_background_process from synapse.storage.events_worker import EventsWorkerStore from synapse.types import RoomStreamToken, get_domain_from_id from synapse.util.async import ObservableDeferred from synapse.util.caches.descriptors import cached, cachedInlineCallbacks from synapse.util.frozenutils import frozendict_json_encoder -from synapse.util.logcontext import PreserveLoggingContext, make_deferred_yieldable +from synapse.util.logcontext import make_deferred_yieldable from synapse.util.logutils import log_function from synapse.util.metrics import Measure @@ -155,11 +156,8 @@ class _EventPeristenceQueue(object): self._event_persist_queues[room_id] = queue self._currently_persisting_rooms.discard(room_id) - # set handle_queue_loop off on the background. We don't want to - # attribute work done in it to the current request, so we drop the - # logcontext altogether. - with PreserveLoggingContext(): - handle_queue_loop() + # set handle_queue_loop off in the background + run_as_background_process("persist_events", handle_queue_loop) def _get_drainining_queue(self, room_id): queue = self._event_persist_queues.setdefault(room_id, deque()) |