mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 16:34:47 -04:00
Convert internal pusher dicts to attrs classes. (#8940)
This improves type hinting and should use less memory.
This commit is contained in:
parent
7a332850e6
commit
bd30cfe86a
17 changed files with 266 additions and 204 deletions
|
@ -25,7 +25,7 @@ from synapse.api.constants import EventTypes
|
|||
from synapse.events import EventBase
|
||||
from synapse.logging import opentracing
|
||||
from synapse.metrics.background_process_metrics import run_as_background_process
|
||||
from synapse.push import Pusher, PusherConfigException
|
||||
from synapse.push import Pusher, PusherConfig, PusherConfigException
|
||||
|
||||
from . import push_rule_evaluator, push_tools
|
||||
|
||||
|
@ -62,33 +62,29 @@ class HttpPusher(Pusher):
|
|||
# This one's in ms because we compare it against the clock
|
||||
GIVE_UP_AFTER_MS = 24 * 60 * 60 * 1000
|
||||
|
||||
def __init__(self, hs: "HomeServer", pusherdict: Dict[str, Any]):
|
||||
super().__init__(hs, pusherdict)
|
||||
def __init__(self, hs: "HomeServer", pusher_config: PusherConfig):
|
||||
super().__init__(hs, pusher_config)
|
||||
self.storage = self.hs.get_storage()
|
||||
self.app_display_name = pusherdict["app_display_name"]
|
||||
self.device_display_name = pusherdict["device_display_name"]
|
||||
self.pushkey_ts = pusherdict["ts"]
|
||||
self.data = pusherdict["data"]
|
||||
self.last_stream_ordering = pusherdict["last_stream_ordering"]
|
||||
self.app_display_name = pusher_config.app_display_name
|
||||
self.device_display_name = pusher_config.device_display_name
|
||||
self.pushkey_ts = pusher_config.ts
|
||||
self.data = pusher_config.data
|
||||
self.backoff_delay = HttpPusher.INITIAL_BACKOFF_SEC
|
||||
self.failing_since = pusherdict["failing_since"]
|
||||
self.failing_since = pusher_config.failing_since
|
||||
self.timed_call = None
|
||||
self._is_processing = False
|
||||
self._group_unread_count_by_room = hs.config.push_group_unread_count_by_room
|
||||
|
||||
if "data" not in pusherdict:
|
||||
raise PusherConfigException("No 'data' key for HTTP pusher")
|
||||
self.data = pusherdict["data"]
|
||||
self.data = pusher_config.data
|
||||
if self.data is None:
|
||||
raise PusherConfigException("'data' key can not be null for HTTP pusher")
|
||||
|
||||
self.name = "%s/%s/%s" % (
|
||||
pusherdict["user_name"],
|
||||
pusherdict["app_id"],
|
||||
pusherdict["pushkey"],
|
||||
pusher_config.user_name,
|
||||
pusher_config.app_id,
|
||||
pusher_config.pushkey,
|
||||
)
|
||||
|
||||
if self.data is None:
|
||||
raise PusherConfigException("data can not be null for HTTP pusher")
|
||||
|
||||
# Validate that there's a URL and it is of the proper form.
|
||||
if "url" not in self.data:
|
||||
raise PusherConfigException("'url' required in data for HTTP pusher")
|
||||
|
@ -180,6 +176,7 @@ class HttpPusher(Pusher):
|
|||
Never call this directly: use _process which will only allow this to
|
||||
run once per pusher.
|
||||
"""
|
||||
assert self.last_stream_ordering is not None
|
||||
unprocessed = await self.store.get_unread_push_actions_for_user_in_range_for_http(
|
||||
self.user_id, self.last_stream_ordering, self.max_stream_ordering
|
||||
)
|
||||
|
@ -208,6 +205,7 @@ class HttpPusher(Pusher):
|
|||
http_push_processed_counter.inc()
|
||||
self.backoff_delay = HttpPusher.INITIAL_BACKOFF_SEC
|
||||
self.last_stream_ordering = push_action["stream_ordering"]
|
||||
assert self.last_stream_ordering is not None
|
||||
pusher_still_exists = await self.store.update_pusher_last_stream_ordering_and_success(
|
||||
self.app_id,
|
||||
self.pushkey,
|
||||
|
@ -314,6 +312,8 @@ class HttpPusher(Pusher):
|
|||
# or may do so (i.e. is encrypted so has unknown effects).
|
||||
priority = "high"
|
||||
|
||||
# This was checked in the __init__, but mypy doesn't seem to know that.
|
||||
assert self.data is not None
|
||||
if self.data.get("format") == "event_id_only":
|
||||
d = {
|
||||
"notification": {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue