diff options
author | Erik Johnston <erik@matrix.org> | 2018-07-24 11:32:13 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2018-07-24 11:32:13 +0100 |
commit | 97acd385a326302cb6791cf518db667bbf4f4d2a (patch) | |
tree | 385db0eb20a05b9d0f6b7ce181cc2e2253c24241 /synapse/storage/events.py | |
parent | Remove unnecessary if (diff) | |
parent | Merge pull request #3591 from matrix-org/rav/logcontext_fixes (diff) | |
download | synapse-97acd385a326302cb6791cf518db667bbf4f4d2a.tar.xz |
Merge branch 'develop' of github.com:matrix-org/synapse into erikj/speed_up_calculate_state_delta
Diffstat (limited to 'synapse/storage/events.py')
-rw-r--r-- | synapse/storage/events.py | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/synapse/storage/events.py b/synapse/storage/events.py index cc8ab5165b..19c05dc8d6 100644 --- a/synapse/storage/events.py +++ b/synapse/storage/events.py @@ -39,7 +39,7 @@ 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 make_deferred_yieldable +from synapse.util.logcontext import PreserveLoggingContext, make_deferred_yieldable from synapse.util.logutils import log_function from synapse.util.metrics import Measure @@ -147,7 +147,8 @@ class _EventPeristenceQueue(object): # callbacks on the deferred. try: ret = yield per_item_callback(item) - item.deferred.callback(ret) + with PreserveLoggingContext(): + item.deferred.callback(ret) except Exception: item.deferred.errback() finally: @@ -417,18 +418,28 @@ class EventsStore(EventsWorkerStore): logger.info( "Calculating state delta for room %s", room_id, ) - current_state = yield self._get_new_state_after_events( - room_id, - ev_ctx_rm, - latest_event_ids, - new_latest_event_ids, - ) + + with Measure( + self._clock, + "persist_events.get_new_state_after_events", + ): + current_state = yield self._get_new_state_after_events( + room_id, + ev_ctx_rm, + latest_event_ids, + new_latest_event_ids, + ) + if current_state is not None: current_state_for_room[room_id] = current_state - delta = yield self._calculate_state_delta( - room_id, current_state, - ) - state_delta_for_room[room_id] = delta + with Measure( + self._clock, + "persist_events.calculate_state_delta", + ): + delta = yield self._calculate_state_delta( + room_id, current_state, + ) + state_delta_for_room[room_id] = delta yield self.runInteraction( "persist_events", |