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

Commit

Permalink
remove constantly lib use and switch to enums. (#12624)
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewdoh authored May 4, 2022
1 parent 873d467 commit 01e6255
Show file tree
Hide file tree
Showing 11 changed files with 36 additions and 38 deletions.
1 change: 1 addition & 0 deletions changelog.d/12624.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove use of constantly library and switch to enums for EventRedactBehaviour. Contributed by @andrewdoh.
3 changes: 0 additions & 3 deletions mypy.ini
Original file line number Diff line number Diff line change
Expand Up @@ -244,9 +244,6 @@ ignore_missing_imports = True
[mypy-canonicaljson]
ignore_missing_imports = True

[mypy-constantly]
ignore_missing_imports = True

[mypy-ijson.*]
ignore_missing_imports = True

Expand Down
2 changes: 1 addition & 1 deletion synapse/handlers/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ async def get_event(
event.
"""
redact_behaviour = (
EventRedactBehaviour.AS_IS if show_redacted else EventRedactBehaviour.REDACT
EventRedactBehaviour.as_is if show_redacted else EventRedactBehaviour.redact
)
event = await self.store.get_event(
event_id, check_room_id=room_id, redact_behaviour=redact_behaviour
Expand Down
4 changes: 2 additions & 2 deletions synapse/handlers/federation.py
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ async def _maybe_backfill_inner(

events_to_check = await self.store.get_events_as_list(
event_ids_to_check,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
get_prev_content=False,
)

Expand Down Expand Up @@ -1494,7 +1494,7 @@ async def _sync_partial_state_room(

events = await self.store.get_events_as_list(
batch,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
allow_rejected=True,
)
for event in events:
Expand Down
2 changes: 1 addition & 1 deletion synapse/handlers/federation_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -860,7 +860,7 @@ async def _resolve_state_at_missing_prevs(
evs = await self._store.get_events(
list(state_map.values()),
get_prev_content=False,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
)
event_map.update(evs)

Expand Down
4 changes: 2 additions & 2 deletions synapse/handlers/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -1407,7 +1407,7 @@ async def persist_and_notify_client_event(

original_event = await self.store.get_event(
event.redacts,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
get_prev_content=False,
allow_rejected=False,
allow_none=True,
Expand Down Expand Up @@ -1504,7 +1504,7 @@ async def persist_and_notify_client_event(

original_event = await self.store.get_event(
event.redacts,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
get_prev_content=False,
allow_rejected=False,
allow_none=True,
Expand Down
2 changes: 1 addition & 1 deletion synapse/state/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -800,7 +800,7 @@ def get_events(

return self.store.get_events(
event_ids,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
get_prev_content=False,
allow_rejected=allow_rejected,
)
Expand Down
42 changes: 21 additions & 21 deletions synapse/storage/databases/main/events_worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import logging
import threading
from enum import Enum, auto
from typing import (
TYPE_CHECKING,
Any,
Expand All @@ -30,7 +31,6 @@
)

import attr
from constantly import NamedConstant, Names
from prometheus_client import Gauge
from typing_extensions import Literal

Expand Down Expand Up @@ -150,14 +150,14 @@ class _EventRow:
outlier: bool


class EventRedactBehaviour(Names):
class EventRedactBehaviour(Enum):
"""
What to do when retrieving a redacted event from the database.
"""

AS_IS = NamedConstant()
REDACT = NamedConstant()
BLOCK = NamedConstant()
as_is = auto()
redact = auto()
block = auto()


class EventsWorkerStore(SQLBaseStore):
Expand Down Expand Up @@ -327,7 +327,7 @@ async def have_censored_event(self, event_id: str) -> bool:
async def get_event(
self,
event_id: str,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.REDACT,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.redact,
get_prev_content: bool = ...,
allow_rejected: bool = ...,
allow_none: Literal[False] = ...,
Expand All @@ -339,7 +339,7 @@ async def get_event(
async def get_event(
self,
event_id: str,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.REDACT,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.redact,
get_prev_content: bool = ...,
allow_rejected: bool = ...,
allow_none: Literal[True] = ...,
Expand All @@ -350,7 +350,7 @@ async def get_event(
async def get_event(
self,
event_id: str,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.REDACT,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.redact,
get_prev_content: bool = False,
allow_rejected: bool = False,
allow_none: bool = False,
Expand All @@ -362,9 +362,9 @@ async def get_event(
event_id: The event_id of the event to fetch
redact_behaviour: Determine what to do with a redacted event. Possible values:
* AS_IS - Return the full event body with no redacted content
* REDACT - Return the event but with a redacted body
* DISALLOW - Do not return redacted events (behave as per allow_none
* as_is - Return the full event body with no redacted content
* redact - Return the event but with a redacted body
* block - Do not return redacted events (behave as per allow_none
if the event is redacted)
get_prev_content: If True and event is a state event,
Expand Down Expand Up @@ -406,7 +406,7 @@ async def get_event(
async def get_events(
self,
event_ids: Collection[str],
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.REDACT,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.redact,
get_prev_content: bool = False,
allow_rejected: bool = False,
) -> Dict[str, EventBase]:
Expand All @@ -417,9 +417,9 @@ async def get_events(
redact_behaviour: Determine what to do with a redacted event. Possible
values:
* AS_IS - Return the full event body with no redacted content
* REDACT - Return the event but with a redacted body
* DISALLOW - Do not return redacted events (omit them from the response)
* as_is - Return the full event body with no redacted content
* redact - Return the event but with a redacted body
* block - Do not return redacted events (omit them from the response)
get_prev_content: If True and event is a state event,
include the previous states content in the unsigned field.
Expand All @@ -442,7 +442,7 @@ async def get_events(
async def get_events_as_list(
self,
event_ids: Collection[str],
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.REDACT,
redact_behaviour: EventRedactBehaviour = EventRedactBehaviour.redact,
get_prev_content: bool = False,
allow_rejected: bool = False,
) -> List[EventBase]:
Expand All @@ -455,9 +455,9 @@ async def get_events_as_list(
event_ids: The event_ids of the events to fetch
redact_behaviour: Determine what to do with a redacted event. Possible values:
* AS_IS - Return the full event body with no redacted content
* REDACT - Return the event but with a redacted body
* DISALLOW - Do not return redacted events (omit them from the response)
* as_is - Return the full event body with no redacted content
* redact - Return the event but with a redacted body
* block - Do not return redacted events (omit them from the response)
get_prev_content: If True and event is a state event,
include the previous states content in the unsigned field.
Expand Down Expand Up @@ -568,10 +568,10 @@ async def get_events_as_list(
event = entry.event

if entry.redacted_event:
if redact_behaviour == EventRedactBehaviour.BLOCK:
if redact_behaviour == EventRedactBehaviour.block:
# Skip this event
continue
elif redact_behaviour == EventRedactBehaviour.REDACT:
elif redact_behaviour == EventRedactBehaviour.redact:
event = entry.redacted_event

events.append(event)
Expand Down
8 changes: 4 additions & 4 deletions synapse/storage/databases/main/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -494,11 +494,11 @@ async def search_msgs(

results = list(filter(lambda row: row["room_id"] in room_ids, results))

# We set redact_behaviour to BLOCK here to prevent redacted events being returned in
# We set redact_behaviour to block here to prevent redacted events being returned in
# search results (which is a data leak)
events = await self.get_events_as_list( # type: ignore[attr-defined]
[r["event_id"] for r in results],
redact_behaviour=EventRedactBehaviour.BLOCK,
redact_behaviour=EventRedactBehaviour.block,
)

event_map = {ev.event_id: ev for ev in events}
Expand Down Expand Up @@ -652,11 +652,11 @@ async def search_rooms(

results = list(filter(lambda row: row["room_id"] in room_ids, results))

# We set redact_behaviour to BLOCK here to prevent redacted events being returned in
# We set redact_behaviour to block here to prevent redacted events being returned in
# search results (which is a data leak)
events = await self.get_events_as_list( # type: ignore[attr-defined]
[r["event_id"] for r in results],
redact_behaviour=EventRedactBehaviour.BLOCK,
redact_behaviour=EventRedactBehaviour.block,
)

event_map = {ev.event_id: ev for ev in events}
Expand Down
2 changes: 1 addition & 1 deletion synapse/storage/databases/main/signatures.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ async def get_event_reference_hashes(
"""
events = await self.get_events(
event_ids,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
allow_rejected=True,
)

Expand Down
4 changes: 2 additions & 2 deletions synapse/storage/persist_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -943,7 +943,7 @@ async def _prune_extremities(
dropped_events = await self.main_store.get_events(
dropped_extrems,
allow_rejected=True,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
)

new_senders = {get_domain_from_id(e.sender) for e, _ in events_context}
Expand Down Expand Up @@ -974,7 +974,7 @@ async def _prune_extremities(
prev_events = await self.main_store.get_events(
new_events,
allow_rejected=True,
redact_behaviour=EventRedactBehaviour.AS_IS,
redact_behaviour=EventRedactBehaviour.as_is,
)
events_to_check = prev_events.values()

Expand Down

0 comments on commit 01e6255

Please sign in to comment.