Mark locally forgotten rooms for purging after purge_retention_period
This commit is contained in:
@@ -38,6 +38,7 @@ from synapse.event_auth import get_named_level, get_power_level_event
|
||||
from synapse.events import EventBase
|
||||
from synapse.events.snapshot import EventContext
|
||||
from synapse.handlers.profile import MAX_AVATAR_URL_LEN, MAX_DISPLAYNAME_LEN
|
||||
from synapse.handlers.room import DeleteStatus
|
||||
from synapse.handlers.state_deltas import MatchChange, StateDeltasHandler
|
||||
from synapse.logging import opentracing
|
||||
from synapse.metrics import event_processing_positions
|
||||
@@ -56,6 +57,7 @@ from synapse.types import (
|
||||
from synapse.types.state import StateFilter
|
||||
from synapse.util.async_helpers import Linearizer
|
||||
from synapse.util.distributor import user_left_room
|
||||
from synapse.util.stringutils import random_string
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from synapse.server import HomeServer
|
||||
@@ -176,6 +178,8 @@ class RoomMemberHandler(metaclass=abc.ABCMeta):
|
||||
|
||||
self._msc3970_enabled = hs.config.experimental.msc3970_enabled
|
||||
|
||||
self._purge_retention_period = hs.config.server.purge_retention_period
|
||||
|
||||
def _on_user_joined_room(self, event_id: str, room_id: str) -> None:
|
||||
"""Notify the rate limiter that a room join has occurred.
|
||||
|
||||
@@ -305,6 +309,17 @@ class RoomMemberHandler(metaclass=abc.ABCMeta):
|
||||
# the table `current_state_events` and `get_current_state_events` is `None`.
|
||||
await self.store.forget(user_id, room_id)
|
||||
|
||||
if self._purge_retention_period and await self.store.is_locally_forgotten_room(
|
||||
room_id
|
||||
):
|
||||
delete_id = random_string(16)
|
||||
await self.store.upsert_room_to_purge(
|
||||
room_id,
|
||||
delete_id,
|
||||
DeleteStatus.STATUS_WAIT_PURGE,
|
||||
timestamp=self.clock.time_msec() + self._purge_retention_period,
|
||||
)
|
||||
|
||||
async def ratelimit_multiple_invites(
|
||||
self,
|
||||
requester: Optional[Requester],
|
||||
|
||||
Reference in New Issue
Block a user