mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-12-11 09:32:42 -05:00
Add a class UnpersistedEventContext to allow for the batching up of storing state groups (#14675)
* add class UnpersistedEventContext * modify create new client event to create unpersistedeventcontexts * persist event contexts after creation * fix tests to persist unpersisted event contexts * cleanup * misc lints + cleanup * changelog + fix comments * lints * fix batch insertion? * reduce redundant calculation * add unpersisted event classes * rework compute_event_context, split into function that returns unpersisted event context and then persists it * use calculate_context_info to create unpersisted event contexts * update typing * $%#^&* * black * fix comments and consolidate classes, use attr.s for class * requested changes * lint * requested changes * requested changes * refactor to be stupidly explicit * clearer renaming and flow * make partial state non-optional * update docstrings --------- Co-authored-by: Erik Johnston <erik@matrix.org>
This commit is contained in:
parent
c1d2ce2901
commit
03bccd542b
14 changed files with 369 additions and 172 deletions
|
|
@ -949,10 +949,12 @@ class UserDirectoryTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = self.get_success(
|
||||
event, unpersisted_context = self.get_success(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
context = self.get_success(unpersisted_context.persist(event))
|
||||
|
||||
self.get_success(
|
||||
self.hs.get_storage_controllers().persistence.persist_event(event, context)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -2934,10 +2934,12 @@ class UserMembershipRestTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = self.get_success(
|
||||
event, unpersisted_context = self.get_success(
|
||||
event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
context = self.get_success(unpersisted_context.persist(event))
|
||||
|
||||
self.get_success(storage_controllers.persistence.persist_event(event, context))
|
||||
|
||||
# Now get rooms
|
||||
|
|
|
|||
|
|
@ -74,10 +74,12 @@ class RedactionTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = self.get_success(
|
||||
event, unpersisted_context = self.get_success(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
context = self.get_success(unpersisted_context.persist(event))
|
||||
|
||||
self.get_success(self._persistence.persist_event(event, context))
|
||||
|
||||
return event
|
||||
|
|
@ -96,10 +98,12 @@ class RedactionTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = self.get_success(
|
||||
event, unpersisted_context = self.get_success(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
context = self.get_success(unpersisted_context.persist(event))
|
||||
|
||||
self.get_success(self._persistence.persist_event(event, context))
|
||||
|
||||
return event
|
||||
|
|
@ -119,10 +123,12 @@ class RedactionTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = self.get_success(
|
||||
event, unpersisted_context = self.get_success(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
context = self.get_success(unpersisted_context.persist(event))
|
||||
|
||||
self.get_success(self._persistence.persist_event(event, context))
|
||||
|
||||
return event
|
||||
|
|
@ -259,7 +265,7 @@ class RedactionTestCase(unittest.HomeserverTestCase):
|
|||
def internal_metadata(self) -> _EventInternalMetadata:
|
||||
return self._base_builder.internal_metadata
|
||||
|
||||
event_1, context_1 = self.get_success(
|
||||
event_1, unpersisted_context_1 = self.get_success(
|
||||
self.event_creation_handler.create_new_client_event(
|
||||
cast(
|
||||
EventBuilder,
|
||||
|
|
@ -280,9 +286,11 @@ class RedactionTestCase(unittest.HomeserverTestCase):
|
|||
)
|
||||
)
|
||||
|
||||
context_1 = self.get_success(unpersisted_context_1.persist(event_1))
|
||||
|
||||
self.get_success(self._persistence.persist_event(event_1, context_1))
|
||||
|
||||
event_2, context_2 = self.get_success(
|
||||
event_2, unpersisted_context_2 = self.get_success(
|
||||
self.event_creation_handler.create_new_client_event(
|
||||
cast(
|
||||
EventBuilder,
|
||||
|
|
@ -302,6 +310,8 @@ class RedactionTestCase(unittest.HomeserverTestCase):
|
|||
)
|
||||
)
|
||||
)
|
||||
|
||||
context_2 = self.get_success(unpersisted_context_2.persist(event_2))
|
||||
self.get_success(self._persistence.persist_event(event_2, context_2))
|
||||
|
||||
# fetch one of the redactions
|
||||
|
|
@ -421,10 +431,12 @@ class RedactionTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
)
|
||||
|
||||
redaction_event, context = self.get_success(
|
||||
redaction_event, unpersisted_context = self.get_success(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
context = self.get_success(unpersisted_context.persist(redaction_event))
|
||||
|
||||
self.get_success(self._persistence.persist_event(redaction_event, context))
|
||||
|
||||
# Now lets jump to the future where we have censored the redaction event
|
||||
|
|
|
|||
|
|
@ -67,10 +67,12 @@ class StateStoreTestCase(HomeserverTestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = self.get_success(
|
||||
event, unpersisted_context = self.get_success(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
|
||||
context = self.get_success(unpersisted_context.persist(event))
|
||||
|
||||
assert self.storage.persistence is not None
|
||||
self.get_success(self.storage.persistence.persist_event(event, context))
|
||||
|
||||
|
|
|
|||
|
|
@ -92,8 +92,13 @@ async def create_event(
|
|||
builder = hs.get_event_builder_factory().for_room_version(
|
||||
KNOWN_ROOM_VERSIONS[room_version], kwargs
|
||||
)
|
||||
event, context = await hs.get_event_creation_handler().create_new_client_event(
|
||||
(
|
||||
event,
|
||||
unpersisted_context,
|
||||
) = await hs.get_event_creation_handler().create_new_client_event(
|
||||
builder, prev_event_ids=prev_event_ids
|
||||
)
|
||||
|
||||
context = await unpersisted_context.persist(event)
|
||||
|
||||
return event, context
|
||||
|
|
|
|||
|
|
@ -175,9 +175,10 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = self.get_success(
|
||||
event, unpersisted_context = self.get_success(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
context = self.get_success(unpersisted_context.persist(event))
|
||||
self.get_success(
|
||||
self._storage_controllers.persistence.persist_event(event, context)
|
||||
)
|
||||
|
|
@ -202,9 +203,10 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = self.get_success(
|
||||
event, unpersisted_context = self.get_success(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
context = self.get_success(unpersisted_context.persist(event))
|
||||
|
||||
self.get_success(
|
||||
self._storage_controllers.persistence.persist_event(event, context)
|
||||
|
|
@ -226,9 +228,10 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase):
|
|||
},
|
||||
)
|
||||
|
||||
event, context = self.get_success(
|
||||
event, unpersisted_context = self.get_success(
|
||||
self.event_creation_handler.create_new_client_event(builder)
|
||||
)
|
||||
context = self.get_success(unpersisted_context.persist(event))
|
||||
|
||||
self.get_success(
|
||||
self._storage_controllers.persistence.persist_event(event, context)
|
||||
|
|
|
|||
|
|
@ -335,6 +335,9 @@ async def create_room(hs: HomeServer, room_id: str, creator_id: str) -> None:
|
|||
},
|
||||
)
|
||||
|
||||
event, context = await event_creation_handler.create_new_client_event(builder)
|
||||
event, unpersisted_context = await event_creation_handler.create_new_client_event(
|
||||
builder
|
||||
)
|
||||
context = await unpersisted_context.persist(event)
|
||||
|
||||
await persistence_store.persist_event(event, context)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue