From 797193283ef603c93a081edb230f1fadff23f0de Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 3 Dec 2014 18:01:47 +0000 Subject: [PATCH 1/3] Bump changes and version --- CHANGES.rst | 8 ++++++++ VERSION | 2 +- synapse/__init__.py | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 477a40472..2c57a57a0 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,11 @@ +Changes in synapse 0.5.4 (2014-12-03) +===================================== + + * Fix presence bug where some rooms did not display presence updates for + remote users. + * Do not log SQL timing log lines when started with "-v" + * Fix potential memory leak. + Changes in synapse 0.5.3c (2014-12-02) ====================================== diff --git a/VERSION b/VERSION index b6f145ad1..7d8568351 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.5.3c +0.5.4 diff --git a/synapse/__init__.py b/synapse/__init__.py index 0b4393230..723e15d50 100644 --- a/synapse/__init__.py +++ b/synapse/__init__.py @@ -16,4 +16,4 @@ """ This is a reference implementation of a synapse home server. """ -__version__ = "0.5.3c" +__version__ = "0.5.4" From 52f1d3c886abacda06c18deab5b76a1c7f6d99ca Mon Sep 17 00:00:00 2001 From: "Paul \"LeoNerd\" Evans" Date: Wed, 3 Dec 2014 19:06:24 +0000 Subject: [PATCH 2/3] Store any incoming presence push in the local cache anyway, even if there's no interested observers (yet *hint*) (SYN-115) --- synapse/handlers/presence.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py index 815d40f16..d40218dd2 100644 --- a/synapse/handlers/presence.py +++ b/synapse/handlers/presence.py @@ -659,10 +659,6 @@ class PresenceHandler(BaseHandler): if room_ids: logger.debug(" | %d interested room IDs %r", len(room_ids), room_ids) - if not observers and not room_ids: - logger.debug(" | no interested observers or room IDs") - continue - state = dict(push) del state["user_id"] @@ -683,6 +679,10 @@ class PresenceHandler(BaseHandler): self._user_cachemap_latest_serial += 1 statuscache.update(state, serial=self._user_cachemap_latest_serial) + if not observers and not room_ids: + logger.debug(" | no interested observers or room IDs") + continue + self.push_update_to_clients( observed_user=user, users_to_push=observers, From f5d2514fc05e062b1425139c5064cd5bae3c3ca7 Mon Sep 17 00:00:00 2001 From: "Paul \"LeoNerd\" Evans" Date: Wed, 3 Dec 2014 19:48:14 +0000 Subject: [PATCH 3/3] @log_function on PresenceStream's get_new_events_for_user() --- synapse/handlers/presence.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py index d40218dd2..84a039489 100644 --- a/synapse/handlers/presence.py +++ b/synapse/handlers/presence.py @@ -804,6 +804,7 @@ class PresenceEventSource(object): ) @defer.inlineCallbacks + @log_function def get_new_events_for_user(self, user, from_key, limit): from_key = int(from_key) @@ -816,7 +817,8 @@ class PresenceEventSource(object): # TODO(paul): use a DeferredList ? How to limit concurrency. for observed_user in cachemap.keys(): cached = cachemap[observed_user] - if not (from_key < cached.serial): + + if cached.serial <= from_key: continue if (yield self.is_visible(observer_user, observed_user)):