diff --git a/synapse/push/__init__.py b/synapse/push/__init__.py
index e7c964bcd2..d5928c1d29 100644
--- a/synapse/push/__init__.py
+++ b/synapse/push/__init__.py
@@ -157,21 +157,7 @@ class Pusher(object):
actions = yield rule_evaluator.actions_for_event(single_event)
tweaks = rule_evaluator.tweaks_for_actions(actions)
- if len(actions) == 0:
- logger.warn("Empty actions! Using default action.")
- actions = Pusher.DEFAULT_ACTIONS
-
- if 'notify' not in actions and 'dont_notify' not in actions:
- logger.warn("Neither notify nor dont_notify in actions: adding default")
- actions.extend(Pusher.DEFAULT_ACTIONS)
-
- if 'dont_notify' in actions:
- logger.debug(
- "%s for %s: dont_notify",
- single_event['event_id'], self.user_name
- )
- processed = True
- else:
+ if 'notify' in actions:
rejected = yield self.dispatch_push(single_event, tweaks)
self.has_unread = True
if isinstance(rejected, list) or isinstance(rejected, tuple):
@@ -192,6 +178,8 @@ class Pusher(object):
yield self.hs.get_pusherpool().remove_pusher(
self.app_id, pk, self.user_name
)
+ else:
+ processed = True
if not self.alive:
return
diff --git a/synapse/push/action_generator.py b/synapse/push/action_generator.py
index 870c68a0ca..a72a7d703c 100644
--- a/synapse/push/action_generator.py
+++ b/synapse/push/action_generator.py
@@ -35,7 +35,6 @@ class ActionGenerator:
@defer.inlineCallbacks
def handle_event(self, event):
users = yield self.store.get_users_in_room(event['room_id'])
- logger.error("users in room: %r", users)
for uid in users:
evaluator = yield push_rule_evaluator.\
@@ -44,6 +43,7 @@ class ActionGenerator:
)
actions = yield evaluator.actions_for_event(event)
logger.info("actions for user %s: %s", uid, actions)
- self.store.set_actions_for_event(
- event['event_id'], uid, None, actions
- )
+ if len(actions):
+ self.store.set_actions_for_event(
+ event['event_id'], uid, None, actions
+ )
diff --git a/synapse/push/push_rule_evaluator.py b/synapse/push/push_rule_evaluator.py
index 92c7fd048f..420476fd0b 100644
--- a/synapse/push/push_rule_evaluator.py
+++ b/synapse/push/push_rule_evaluator.py
@@ -43,7 +43,7 @@ def evaluator_for_user_name_and_profile_tag(user_name, profile_tag, room_id, sto
class PushRuleEvaluator:
- DEFAULT_ACTIONS = ['dont_notify']
+ DEFAULT_ACTIONS = []
INEQUALITY_EXPR = re.compile("^([=<>]*)([0-9]*)$")
def __init__(self, user_name, profile_tag, raw_rules, enabled_map, room_id,
@@ -85,7 +85,7 @@ class PushRuleEvaluator:
"""
if ev['user_id'] == self.user_name:
# let's assume you probably know about messages you sent yourself
- defer.returnValue(['dont_notify'])
+ defer.returnValue([])
room_id = ev['room_id']
@@ -131,6 +131,11 @@ class PushRuleEvaluator:
"%s matches for user %s, event %s",
r['rule_id'], self.user_name, ev['event_id']
)
+
+ # filter out dont_notify as we treat an empty actions list
+ # as dont_notify, and this doesn't take up a row in our database
+ actions = [x for x in actions if x != 'dont_notify']
+
defer.returnValue(actions)
logger.info(
|