Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 436e0eb

Browse files
authored
Fix breaking event sending due to bad push rule (#13547)
Broke by #13522 It looks like we have some rules in the DB with a priority class less than 0 that don't override the base rules. Before these were just dropped, but #13522 made that a hard error.
1 parent ba8938b commit 436e0eb

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

changelog.d/13547.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Improve performance of sending messages in rooms with thousands of local users.

synapse/push/baserules.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,16 @@
4949
"""
5050

5151
import itertools
52+
import logging
5253
from typing import Dict, Iterator, List, Mapping, Sequence, Tuple, Union
5354

5455
import attr
5556

5657
from synapse.config.experimental import ExperimentalConfig
5758
from synapse.push.rulekinds import PRIORITY_CLASS_MAP
5859

60+
logger = logging.getLogger(__name__)
61+
5962

6063
@attr.s(auto_attribs=True, slots=True, frozen=True)
6164
class PushRule:
@@ -199,8 +202,16 @@ def compile_push_rules(rawrules: List[PushRule]) -> PushRules:
199202
collection = rules.sender
200203
elif rule.priority_class == 1:
201204
collection = rules.underride
205+
elif rule.priority_class <= 0:
206+
logger.info(
207+
"Got rule with priority class less than zero, but doesn't override a base rule: %s",
208+
rule,
209+
)
210+
continue
202211
else:
203-
raise Exception(f"Unknown priority class: {rule.priority_class}")
212+
# We log and continue here so as not to break event sending
213+
logger.error("Unknown priority class: %", rule.priority_class)
214+
continue
204215

205216
collection.append(rule)
206217

0 commit comments

Comments
 (0)