From eeda4e618c0c325e43e82a1d3ac146fbe419b446 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Tue, 8 Nov 2016 11:02:29 +0000 Subject: [PATCH 1/2] Limit the number of prev_events of new events --- synapse/handlers/message.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index abfa8c65a4..3eca46df86 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -34,6 +34,7 @@ from ._base import BaseHandler from canonicaljson import encode_canonical_json import logging +import random logger = logging.getLogger(__name__) @@ -415,6 +416,18 @@ class MessageHandler(BaseHandler): builder.room_id, ) + # We want to limit the max number of prev events we point to in our + # new event + if len(latest_ret) > 10: + # Sort by reverse depth, so we point to the most recent. + latest_ret.sort(key=lambda a: -a[2]) + new_latest_ret = latest_ret[:5] + + # We also randomly point to some of the older events, to make + # sure that we don't completely ignore the older events. + new_latest_ret.extend(random.sample(latest_ret, 5)) + latest_ret = new_latest_ret + if latest_ret: depth = max([d for _, _, d in latest_ret]) + 1 else: From a4632783fba26aaaedd0b9777877cb2ec8b48752 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Tue, 8 Nov 2016 11:20:26 +0000 Subject: [PATCH 2/2] Sample correctly --- synapse/handlers/message.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index 3eca46df86..81df45177a 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -425,7 +425,9 @@ class MessageHandler(BaseHandler): # We also randomly point to some of the older events, to make # sure that we don't completely ignore the older events. - new_latest_ret.extend(random.sample(latest_ret, 5)) + if latest_ret[5:]: + sample_size = min(5, len(latest_ret[5:])) + new_latest_ret.extend(random.sample(latest_ret[5:], sample_size)) latest_ret = new_latest_ret if latest_ret: