diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py
index 15caf1950a..fc7e87de8f 100644
--- a/synapse/handlers/message.py
+++ b/synapse/handlers/message.py
@@ -29,6 +29,7 @@ from synapse.util import unwrapFirstError
from synapse.util.async import concurrently_execute, run_on_reactor
from synapse.util.caches.snapshot_cache import SnapshotCache
from synapse.util.logcontext import preserve_fn
+from synapse.util.logutils import log_duration
from synapse.visibility import filter_events_for_client
from ._base import BaseHandler
@@ -734,31 +735,33 @@ class MessageHandler(BaseHandler):
@defer.inlineCallbacks
def _create_new_client_event(self, builder, prev_event_ids=None):
- if prev_event_ids:
- prev_events = yield self.store.add_event_hashes(prev_event_ids)
- prev_max_depth = yield self.store.get_max_depth_of_events(prev_event_ids)
- depth = prev_max_depth + 1
- else:
- latest_ret = yield self.store.get_latest_event_ids_and_hashes_in_room(
- builder.room_id,
- )
-
- if latest_ret:
- depth = max([d for _, _, d in latest_ret]) + 1
+ with log_duration("prev_events"):
+ if prev_event_ids:
+ prev_events = yield self.store.add_event_hashes(prev_event_ids)
+ prev_max_depth = yield self.store.get_max_depth_of_events(prev_event_ids)
+ depth = prev_max_depth + 1
else:
- depth = 1
+ latest_ret = yield self.store.get_latest_event_ids_and_hashes_in_room(
+ builder.room_id,
+ )
+
+ if latest_ret:
+ depth = max([d for _, _, d in latest_ret]) + 1
+ else:
+ depth = 1
- prev_events = [
- (event_id, prev_hashes)
- for event_id, prev_hashes, _ in latest_ret
- ]
+ prev_events = [
+ (event_id, prev_hashes)
+ for event_id, prev_hashes, _ in latest_ret
+ ]
builder.prev_events = prev_events
builder.depth = depth
state_handler = self.state_handler
- context = yield state_handler.compute_event_context(builder)
+ with log_duration("context"):
+ context = yield state_handler.compute_event_context(builder)
if builder.is_state():
builder.prev_state = yield self.store.add_event_hashes(
@@ -882,14 +885,16 @@ class MessageHandler(BaseHandler):
"Changing the room create event is forbidden",
)
- action_generator = ActionGenerator(self.hs)
- yield action_generator.handle_push_actions_for_event(
- event, context
- )
+ with log_duration("action_generator"):
+ action_generator = ActionGenerator(self.hs)
+ yield action_generator.handle_push_actions_for_event(
+ event, context
+ )
- (event_stream_id, max_stream_id) = yield self.store.persist_event(
- event, context=context
- )
+ with log_duration("persist_event"):
+ (event_stream_id, max_stream_id) = yield self.store.persist_event(
+ event, context=context
+ )
# this intentionally does not yield: we don't care about the result
# and don't need to wait for it.
@@ -916,7 +921,8 @@ class MessageHandler(BaseHandler):
extra_users=extra_users
)
- preserve_fn(_notify)()
+ with log_duration("on_new_room_event"):
+ preserve_fn(_notify)()
# If invite, remove room_state from unsigned before sending.
event.unsigned.pop("invite_room_state", None)
|