소스 검색

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.
tags/v1.66.0rc1
Erik Johnston 1 년 전
committed by GitHub
부모
커밋
436e0eb39a
No known key found for this signature in database GPG 키 ID: 4AEE18F83AFDEB23
2개의 변경된 파일13개의 추가작업 그리고 1개의 파일을 삭제
  1. +1
    -0
      changelog.d/13547.misc
  2. +12
    -1
      synapse/push/baserules.py

+ 1
- 0
changelog.d/13547.misc 파일 보기

@@ -0,0 +1 @@
Improve performance of sending messages in rooms with thousands of local users.

+ 12
- 1
synapse/push/baserules.py 파일 보기

@@ -49,6 +49,7 @@ kind, etc, etc.
"""

import itertools
import logging
from typing import Dict, Iterator, List, Mapping, Sequence, Tuple, Union

import attr
@@ -56,6 +57,8 @@ import attr
from synapse.config.experimental import ExperimentalConfig
from synapse.push.rulekinds import PRIORITY_CLASS_MAP

logger = logging.getLogger(__name__)


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

collection.append(rule)



불러오는 중...
취소
저장