Don't pull out the full state when creating an event (#13281)

This commit is contained in:
Erik Johnston 2022-07-18 10:05:30 +01:00 committed by GitHub
parent efee345b45
commit c6a05063ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 2 deletions

1
changelog.d/13281.misc Normal file
View File

@ -0,0 +1 @@
Don't pull out the full state when creating an event.

View File

@ -24,9 +24,11 @@ from synapse.api.room_versions import (
RoomVersion, RoomVersion,
) )
from synapse.crypto.event_signing import add_hashes_and_signatures from synapse.crypto.event_signing import add_hashes_and_signatures
from synapse.event_auth import auth_types_for_event
from synapse.events import EventBase, _EventInternalMetadata, make_event_from_dict from synapse.events import EventBase, _EventInternalMetadata, make_event_from_dict
from synapse.state import StateHandler from synapse.state import StateHandler
from synapse.storage.databases.main import DataStore from synapse.storage.databases.main import DataStore
from synapse.storage.state import StateFilter
from synapse.types import EventID, JsonDict from synapse.types import EventID, JsonDict
from synapse.util import Clock from synapse.util import Clock
from synapse.util.stringutils import random_string from synapse.util.stringutils import random_string
@ -121,7 +123,11 @@ class EventBuilder:
""" """
if auth_event_ids is None: if auth_event_ids is None:
state_ids = await self._state.compute_state_after_events( state_ids = await self._state.compute_state_after_events(
self.room_id, prev_event_ids self.room_id,
prev_event_ids,
state_filter=StateFilter.from_types(
auth_types_for_event(self.room_version, self)
),
) )
auth_event_ids = self._event_auth_handler.compute_auth_events( auth_event_ids = self._event_auth_handler.compute_auth_events(
self, state_ids self, state_ids

View File

@ -157,6 +157,7 @@ class StateHandler:
self, self,
room_id: str, room_id: str,
event_ids: Collection[str], event_ids: Collection[str],
state_filter: Optional[StateFilter] = None,
) -> StateMap[str]: ) -> StateMap[str]:
"""Fetch the state after each of the given event IDs. Resolve them and return. """Fetch the state after each of the given event IDs. Resolve them and return.
@ -174,7 +175,7 @@ class StateHandler:
""" """
logger.debug("calling resolve_state_groups from compute_state_after_events") logger.debug("calling resolve_state_groups from compute_state_after_events")
ret = await self.resolve_state_groups_for_events(room_id, event_ids) ret = await self.resolve_state_groups_for_events(room_id, event_ids)
return await ret.get_state(self._state_storage_controller, StateFilter.all()) return await ret.get_state(self._state_storage_controller, state_filter)
async def get_current_users_in_room( async def get_current_users_in_room(
self, room_id: str, latest_event_ids: List[str] self, room_id: str, latest_event_ids: List[str]