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

Optimise state resolution #1808

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,071 changes: 592 additions & 479 deletions synapse/api/auth.py

Large diffs are not rendered by default.

8 changes: 5 additions & 3 deletions synapse/events/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ def __init__(self, event_dict, signatures={}, unsigned={},
auth_events = _event_dict_property("auth_events")
depth = _event_dict_property("depth")
content = _event_dict_property("content")
event_id = _event_dict_property("event_id")
hashes = _event_dict_property("hashes")
origin = _event_dict_property("origin")
origin_server_ts = _event_dict_property("origin_server_ts")
Expand All @@ -88,8 +87,6 @@ def __init__(self, event_dict, signatures={}, unsigned={},
redacts = _event_dict_property("redacts")
room_id = _event_dict_property("room_id")
sender = _event_dict_property("sender")
state_key = _event_dict_property("state_key")
type = _event_dict_property("type")
user_id = _event_dict_property("sender")

@property
Expand Down Expand Up @@ -162,6 +159,11 @@ def __init__(self, event_dict, internal_metadata_dict={}, rejected_reason=None):
else:
frozen_dict = event_dict

self.event_id = event_dict["event_id"]
self.type = event_dict["type"]
if "state_key" in event_dict:
self.state_key = event_dict["state_key"]

super(FrozenEvent, self).__init__(
frozen_dict,
signatures=signatures,
Expand Down
6 changes: 5 additions & 1 deletion synapse/events/builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

from . import EventBase, FrozenEvent
from . import EventBase, FrozenEvent, _event_dict_property

from synapse.types import EventID

Expand All @@ -34,6 +34,10 @@ def __init__(self, key_values={}, internal_metadata_dict={}):
internal_metadata_dict=internal_metadata_dict,
)

event_id = _event_dict_property("event_id")
state_key = _event_dict_property("state_key")
type = _event_dict_property("type")

def build(self):
return FrozenEvent.from_event(self)

Expand Down
6 changes: 4 additions & 2 deletions synapse/federation/federation_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
from synapse.util.caches.expiringcache import ExpiringCache
from synapse.util.logutils import log_function
from synapse.util.logcontext import preserve_fn, preserve_context_over_deferred
from synapse.events import FrozenEvent
from synapse.events import FrozenEvent, builder
import synapse.metrics

from synapse.util.retryutils import get_retry_limiter, NotRetryingDestination
Expand Down Expand Up @@ -499,8 +499,10 @@ def make_membership_event(self, destinations, room_id, user_id, membership,
if "prev_state" not in pdu_dict:
pdu_dict["prev_state"] = []

ev = builder.EventBuilder(pdu_dict)

defer.returnValue(
(destination, self.event_from_pdu_json(pdu_dict))
(destination, ev)
)
break
except CodeMessageException as e:
Expand Down
4 changes: 2 additions & 2 deletions synapse/handlers/federation.py
Original file line number Diff line number Diff line change
Expand Up @@ -596,7 +596,7 @@ def try_backfill(domains):
preserve_fn(self.state_handler.resolve_state_groups)(room_id, [e])
for e in event_ids
]))
states = dict(zip(event_ids, [s[1] for s in states]))
states = dict(zip(event_ids, [s.state for s in states]))

state_map = yield self.store.get_events(
[e_id for ids in states.values() for e_id in ids],
Expand Down Expand Up @@ -1530,7 +1530,7 @@ def do_auth(self, origin, event, context, auth_events):
(d.type, d.state_key): d for d in different_events if d
})

new_state, prev_state = self.state_handler.resolve_events(
new_state = self.state_handler.resolve_events(
[local_view.values(), remote_view.values()],
event
)
Expand Down
Loading