summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2018-09-06 15:23:55 +0100
committerErik Johnston <erik@matrix.org>2018-09-06 15:23:55 +0100
commit6707a3212cea6849d1c16b70cc1927b16d06814a (patch)
tree3ba71305b7a81b57ab9501f5b22bacf883419b2d
parentPort handlers/ to Python 3 (#3803) (diff)
downloadsynapse-6707a3212cea6849d1c16b70cc1927b16d06814a.tar.xz
Limit the number of PDUs/EDUs per fedreation transaction
-rw-r--r--synapse/federation/transaction_queue.py12
1 files changed, 12 insertions, 0 deletions
diff --git a/synapse/federation/transaction_queue.py b/synapse/federation/transaction_queue.py

index 94d7423d01..8cbf8c4f7f 100644 --- a/synapse/federation/transaction_queue.py +++ b/synapse/federation/transaction_queue.py
@@ -463,7 +463,19 @@ class TransactionQueue(object): # pending_transactions flag. pending_pdus = self.pending_pdus_by_dest.pop(destination, []) + + # We can only include at most 50 PDUs per transactions + pending_pdus, leftover_pdus = pending_pdus[:50], pending_pdus[50:] + if leftover_pdus: + self.pending_pdus_by_dest[destination] = leftover_pdus + pending_edus = self.pending_edus_by_dest.pop(destination, []) + + # We can only include at most 100 EDUs per transactions + pending_edus, leftover_edus = pending_edus[:100], pending_edus[100:] + if leftover_edus: + self.pending_edus_by_dest[destination] = leftover_edus + pending_presence = self.pending_presence_by_dest.pop(destination, {}) pending_edus.extend(