summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndrew Morgan <andrew@amorgan.xyz>2020-10-28 12:14:03 +0000
committerAndrew Morgan <andrew@amorgan.xyz>2020-10-28 12:14:03 +0000
commit172ddb3b452662b47abb14c280392e313e530767 (patch)
treebe1599f944e4d510a1c40abde821121551931623
parentPatch to temporarily drop cross-user m.key_share_requests (#8675) (diff)
parentDon't unnecessarily start bg process in replication sending loop. (#8670) (diff)
downloadsynapse-172ddb3b452662b47abb14c280392e313e530767.tar.xz
Merge branch 'develop' into matrix-org-hotfixes
* develop:
  Don't unnecessarily start bg process in replication sending loop. (#8670)
  Don't unnecessarily start bg process while handling typing. (#8668)
-rw-r--r--changelog.d/8668.misc1
-rw-r--r--changelog.d/8670.misc1
-rw-r--r--synapse/handlers/typing.py21
-rw-r--r--synapse/replication/tcp/resource.py10
4 files changed, 25 insertions, 8 deletions
diff --git a/changelog.d/8668.misc b/changelog.d/8668.misc
new file mode 100644

index 0000000000..cf6023f783 --- /dev/null +++ b/changelog.d/8668.misc
@@ -0,0 +1 @@ +Reduce number of OpenTracing spans started. diff --git a/changelog.d/8670.misc b/changelog.d/8670.misc new file mode 100644
index 0000000000..cf6023f783 --- /dev/null +++ b/changelog.d/8670.misc
@@ -0,0 +1 @@ +Reduce number of OpenTracing spans started. diff --git a/synapse/handlers/typing.py b/synapse/handlers/typing.py
index 8758066c74..e919a8f9ed 100644 --- a/synapse/handlers/typing.py +++ b/synapse/handlers/typing.py
@@ -167,20 +167,25 @@ class FollowerTypingHandler: now_typing = set(row.user_ids) self._room_typing[row.room_id] = row.user_ids - run_as_background_process( - "_handle_change_in_typing", - self._handle_change_in_typing, - row.room_id, - prev_typing, - now_typing, - ) + if self.federation: + run_as_background_process( + "_send_changes_in_typing_to_remotes", + self._send_changes_in_typing_to_remotes, + row.room_id, + prev_typing, + now_typing, + ) - async def _handle_change_in_typing( + async def _send_changes_in_typing_to_remotes( self, room_id: str, prev_typing: Set[str], now_typing: Set[str] ): """Process a change in typing of a room from replication, sending EDUs for any local users. """ + + if not self.federation: + return + for user_id in now_typing - prev_typing: if self.is_mine_id(user_id): await self._push_remote(RoomMember(room_id, user_id), True) diff --git a/synapse/replication/tcp/resource.py b/synapse/replication/tcp/resource.py
index 666c13fdb7..1d4ceac0f1 100644 --- a/synapse/replication/tcp/resource.py +++ b/synapse/replication/tcp/resource.py
@@ -117,6 +117,16 @@ class ReplicationStreamer: stream.discard_updates_and_advance() return + # We check up front to see if anything has actually changed, as we get + # poked because of changes that happened on other instances. + if all( + stream.last_token == stream.current_token(self._instance_name) + for stream in self.streams + ): + return + + # If there are updates then we need to set this even if we're already + # looping, as the loop needs to know that he might need to loop again. self.pending_updates = True if self.is_looping: