Don't let the remote offline serial list grow arbitrarily large

This commit is contained in:
Paul "LeoNerd" Evans 2015-04-23 18:40:47 +01:00
parent 8a785c3006
commit b3bda8a75f
1 changed files with 5 additions and 0 deletions

View File

@ -36,6 +36,9 @@ metrics = synapse.metrics.get_metrics_for(__name__)
# Don't bother bumping "last active" time if it differs by less than 60 seconds # Don't bother bumping "last active" time if it differs by less than 60 seconds
LAST_ACTIVE_GRANULARITY = 60*1000 LAST_ACTIVE_GRANULARITY = 60*1000
# Keep no more than this number of offline serial revisions
MAX_OFFLINE_SERIALS = 1000
# TODO(paul): Maybe there's one of these I can steal from somewhere # TODO(paul): Maybe there's one of these I can steal from somewhere
def partition(l, func): def partition(l, func):
@ -722,6 +725,8 @@ class PresenceHandler(BaseHandler):
0, 0,
(self._user_cachemap_latest_serial, set([user.to_string()])) (self._user_cachemap_latest_serial, set([user.to_string()]))
) )
while len(self._remote_offline_serials) > MAX_OFFLINE_SERIALS:
self._remote_offline_serials.pop() # remove the oldest
del self._user_cachemap[user] del self._user_cachemap[user]
for poll in content.get("poll", []): for poll in content.get("poll", []):