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)
|