From 114541e9f8131fd81ff6fdbef016a8b1301ba0c8 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Tue, 19 Aug 2025 12:00:24 +0100 Subject: [PATCH] Test for simple case --- synapse/storage/controllers/persist_events.py | 4 +- tests/storage/test_events.py | 49 +++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/synapse/storage/controllers/persist_events.py b/synapse/storage/controllers/persist_events.py index 8f09903a27..ca49391709 100644 --- a/synapse/storage/controllers/persist_events.py +++ b/synapse/storage/controllers/persist_events.py @@ -687,8 +687,8 @@ class EventsPersistenceStorageController: await self.persist_events_store.get_room_max_stitched_ordering(room_id) or 0 ) - for _event, context in events_and_contexts: - current_max_stream_ordering += 1 + for _event, context in remaining_batch: + current_max_stream_ordering += 2**16 context.stitched_ordering = current_max_stream_ordering async def _calculate_new_forward_extremities_and_state_delta( diff --git a/tests/storage/test_events.py b/tests/storage/test_events.py index 6d2e4e4bbe..9aa52e579e 100644 --- a/tests/storage/test_events.py +++ b/tests/storage/test_events.py @@ -519,3 +519,52 @@ class InvalideUsersInRoomCacheTestCase(HomeserverTestCase): users = self.get_success(self.store.get_users_in_room(room_id)) self.assertEqual(users, []) + + +class AssignStitchedOrderingTestCase(HomeserverTestCase): + servlets = [ + admin.register_servlets, + room.register_servlets, + login.register_servlets, + ] + + def prepare( + self, reactor: MemoryReactor, clock: Clock, homeserver: HomeServer + ) -> None: + self.state = self.hs.get_state_handler() + persistence = self.hs.get_storage_controllers().persistence + assert persistence is not None + self._persistence = persistence + self.store = self.hs.get_datastores().main + + def test_insert_events(self) -> None: + # Create a room + self.register_user("user", "pass") + token = self.login("user", "pass") + room_id = self.helper.create_room_as( + "user", room_version=RoomVersions.V12.identifier, tok=token + ) + + # Build a test event + test_event = event_from_pdu_json( + { + "type": EventTypes.Message, + "content": {"body": "blah"}, + "room_id": room_id, + "sender": "@user:other", + "depth": 5, + "prev_events": [], + "auth_events": [], + "origin_server_ts": self.clock.time_msec(), + }, + RoomVersions.V12, + ) + + context = self.get_success(self.state.compute_event_context(test_event)) + self.get_success( + self._persistence._assign_stitched_orders( + room_id, [(test_event, context)] + ) + ) + + self.assertEqual(context.stitched_ordering, 6 * 2**16)