summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2014-12-04 15:58:24 +0000
committerErik Johnston <erik@matrix.org>2014-12-04 15:58:24 +0000
commitc5c32266d8f47d1b09d8120ba627529f03e94622 (patch)
treee43dba2a184ae95ddaa9ac23126a3fdfa738daca
parentConvert rest and handlers to use new event structure (diff)
parent@log_function on PresenceStream's get_new_events_for_user() (diff)
downloadsynapse-c5c32266d8f47d1b09d8120ba627529f03e94622.tar.xz
Merge branch 'develop' of github.com:matrix-org/synapse into events_refactor
-rw-r--r--CHANGES.rst8
-rw-r--r--VERSION2
-rw-r--r--synapse/__init__.py2
-rw-r--r--synapse/handlers/presence.py12
4 files changed, 17 insertions, 7 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index 477a404721..2c57a57a01 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 b6f145ad19..7d8568351b 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.5.3c
+0.5.4
diff --git a/synapse/__init__.py b/synapse/__init__.py
index 0b43932305..723e15d506 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"
diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py
index 1808e00ae8..f3abfecdee 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,
@@ -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)):