Merge pull request #1615 from matrix-org/erikj/limit_prev_events
Limit the number of prev_events of new events
This commit is contained in:
commit
17e0a58020
|
@ -34,6 +34,7 @@ from ._base import BaseHandler
|
||||||
from canonicaljson import encode_canonical_json
|
from canonicaljson import encode_canonical_json
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import random
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -415,6 +416,20 @@ class MessageHandler(BaseHandler):
|
||||||
builder.room_id,
|
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.
|
||||||
|
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:
|
if latest_ret:
|
||||||
depth = max([d for _, _, d in latest_ret]) + 1
|
depth = max([d for _, _, d in latest_ret]) + 1
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue