mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-05 14:34:56 -04:00
Ensure we don't mutate state cache entries
This commit is contained in:
parent
1b01488d27
commit
d5ae1f1291
3 changed files with 33 additions and 22 deletions
|
@ -26,6 +26,7 @@ from synapse.events.snapshot import EventContext
|
|||
from synapse.util.async import Linearizer
|
||||
|
||||
from collections import namedtuple
|
||||
from frozendict import frozendict
|
||||
|
||||
import logging
|
||||
import hashlib
|
||||
|
@ -58,11 +59,11 @@ class _StateCacheEntry(object):
|
|||
__slots__ = ["state", "state_group", "state_id", "prev_group", "delta_ids"]
|
||||
|
||||
def __init__(self, state, state_group, prev_group=None, delta_ids=None):
|
||||
self.state = state
|
||||
self.state = frozendict(state)
|
||||
self.state_group = state_group
|
||||
|
||||
self.prev_group = prev_group
|
||||
self.delta_ids = delta_ids
|
||||
self.delta_ids = frozendict(delta_ids) if delta_ids is not None else None
|
||||
|
||||
# The `state_id` is a unique ID we generate that can be used as ID for
|
||||
# this collection of state. Usually this would be the same as the
|
||||
|
@ -255,6 +256,7 @@ class StateHandler(object):
|
|||
context.prev_group = entry.prev_group
|
||||
context.delta_ids = entry.delta_ids
|
||||
if context.delta_ids is not None:
|
||||
context.delta_ids = dict(context.delta_ids)
|
||||
context.delta_ids[key] = event.event_id
|
||||
else:
|
||||
context.current_state_ids = context.prev_state_ids
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue