diff options
author | Erik Johnston <erik@matrix.org> | 2017-04-11 15:15:34 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2017-04-11 15:15:34 +0100 |
commit | b9b72bc6e2bdb3c6684db3e05e18b632755c7ccc (patch) | |
tree | b00107c96b5f7bf3ebe3f5abcb3ea8b232ace9e2 /synapse | |
parent | Reduce federation presence replication traffic (diff) | |
download | synapse-b9b72bc6e2bdb3c6684db3e05e18b632755c7ccc.tar.xz |
Comments
Diffstat (limited to '')
-rw-r--r-- | synapse/federation/transaction_queue.py | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/synapse/federation/transaction_queue.py b/synapse/federation/transaction_queue.py index fd9e1fa01c..eb361d904c 100644 --- a/synapse/federation/transaction_queue.py +++ b/synapse/federation/transaction_queue.py @@ -78,8 +78,18 @@ class TransactionQueue(object): self.pending_edus_by_dest = edus = {} # Presence needs to be separate as we send single aggragate EDUs + + # Map of user_id -> UserPresenceState for all the pending presence + # to be sent out by user_id. Entries here get processed and put in + # pending_presence_by_dest self.pending_presence = {} + # Map of destination -> user_id -> UserPresenceState of pending presence + # to be sent to each destinations self.pending_presence_by_dest = presence = {} + + # Pending EDUs by their "key". Keyed EDUs are EDUs that get clobbered + # based on their key (e.g. typing events by room_id) + # Map of destination -> (edu_type, key) -> Edu self.pending_edus_keyed_by_dest = edus_keyed = {} metrics.register_callback( @@ -227,11 +237,14 @@ class TransactionQueue(object): self._attempt_new_transaction, destination ) - @preserve_fn + @preserve_fn # the caller should not yield on this @defer.inlineCallbacks def send_presence(self, states): """Send the new presence states to the appropriate destinations. + This actually queues up the presence states ready for sending and + triggers a background task to process them and send out the transactions. + Args: states (list(UserPresenceState)) """ |