summary refs log tree commit diff
diff options
context:
space:
mode:
authorOlivier Wilkinson (reivilibre) <olivier@librepush.net>2019-08-27 14:14:17 +0100
committerOlivier Wilkinson (reivilibre) <olivier@librepush.net>2019-08-27 14:14:17 +0100
commit99c88ac84eb394104f06ff42dde891cabf00466c (patch)
treed7e59c52eb6396cb2804e951257a40fa71bce71e
parentAdapt to stats now working in milliseconds (diff)
downloadsynapse-99c88ac84eb394104f06ff42dde891cabf00466c.tar.xz
No-op if no membership change and thus simplify verbose dict updates.
Signed-off-by: Olivier Wilkinson (reivilibre) <olivier@librepush.net>
-rw-r--r--synapse/handlers/stats.py42
1 files changed, 14 insertions, 28 deletions
diff --git a/synapse/handlers/stats.py b/synapse/handlers/stats.py
index 3dbc0a2434..b3d59fde05 100644
--- a/synapse/handlers/stats.py
+++ b/synapse/handlers/stats.py
@@ -161,9 +161,7 @@ class StatsHandler(StateDeltasHandler):
             if prev_event_id is None:
                 # this state event doesn't overwrite another,
                 # so it is a new effective/current state event
-                room_stats_delta["current_state_events"] = (
-                    room_stats_delta.get("current_state_events", 0) + 1
-                )
+                room_stats_delta["current_state_events"] = 1
 
             if typ == EventTypes.Member:
                 # we could use _get_key_change here but it's a bit inefficient
@@ -188,43 +186,31 @@ class StatsHandler(StateDeltasHandler):
 
                 if prev_membership is None:
                     logger.debug("No previous membership for this user.")
+                elif membership == prev_membership:
+                    pass  # noop
                 elif prev_membership == Membership.JOIN:
-                    room_stats_delta["joined_members"] = (
-                        room_stats_delta.get("joined_members", 0) - 1
-                    )
+                    room_stats_delta["joined_members"] = -1
                 elif prev_membership == Membership.INVITE:
-                    room_stats_delta["invited_members"] = (
-                        room_stats_delta.get("invited_members", 0) - 1
-                    )
+                    room_stats_delta["invited_members"] = -1
                 elif prev_membership == Membership.LEAVE:
-                    room_stats_delta["left_members"] = (
-                        room_stats_delta.get("left_members", 0) - 1
-                    )
+                    room_stats_delta["left_members"] = -1
                 elif prev_membership == Membership.BAN:
-                    room_stats_delta["banned_members"] = (
-                        room_stats_delta.get("banned_members", 0) - 1
-                    )
+                    room_stats_delta["banned_members"] = -1
                 else:
                     err = "%s is not a valid prev_membership" % (repr(prev_membership),)
                     logger.error(err)
                     raise ValueError(err)
 
+                if membership == prev_membership:
+                    pass  # noop
                 if membership == Membership.JOIN:
-                    room_stats_delta["joined_members"] = (
-                        room_stats_delta.get("joined_members", 0) + 1
-                    )
+                    room_stats_delta["joined_members"] = +1
                 elif membership == Membership.INVITE:
-                    room_stats_delta["invited_members"] = (
-                        room_stats_delta.get("invited_members", 0) + 1
-                    )
+                    room_stats_delta["invited_members"] = +1
                 elif membership == Membership.LEAVE:
-                    room_stats_delta["left_members"] = (
-                        room_stats_delta.get("left_members", 0) + 1
-                    )
+                    room_stats_delta["left_members"] = +1
                 elif membership == Membership.BAN:
-                    room_stats_delta["banned_members"] = (
-                        room_stats_delta.get("banned_members", 0) + 1
-                    )
+                    room_stats_delta["banned_members"] = +1
                 else:
                     err = "%s is not a valid membership" % (repr(membership),)
                     logger.error(err)
@@ -234,7 +220,7 @@ class StatsHandler(StateDeltasHandler):
                 if self.is_mine_id(user_id) and membership in (
                     Membership.JOIN,
                     Membership.LEAVE,
-                ):
+                ) and prev_membership != membership:
                     # update user_stats as it's one of our users
                     public = yield self._is_public_room(room_id)