From db6e26bb8c29556b43ca2e8c52510158a6f71204 Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Fri, 22 Jan 2016 16:03:55 +0000 Subject: [PATCH] Don't mutate cached values --- synapse/push/bulk_push_rule_evaluator.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/synapse/push/bulk_push_rule_evaluator.py b/synapse/push/bulk_push_rule_evaluator.py index 06250d2d96..ec917c2398 100644 --- a/synapse/push/bulk_push_rule_evaluator.py +++ b/synapse/push/bulk_push_rule_evaluator.py @@ -55,11 +55,15 @@ def _get_rules(room_id, user_ids, store): user_enabled_map = rules_enabled_by_user[uid] - for rule in rules_by_user[uid]: + for i, rule in enumerate(rules_by_user[uid]): rule_id = rule['rule_id'] if rule_id in user_enabled_map: - rule['enabled'] = user_enabled_map[rule_id] + if rule.get('enabled', True) != bool(user_enabled_map[rule_id]): + # Rules are cached across users. + rule = dict(rule) + rule['enabled'] = bool(user_enabled_map[rule_id]) + rules_by_user[uid][i] = rule defer.returnValue(rules_by_user)