Explorar el Código

Fix a harmless exception when the staged events queue is empty. (#10592)

Patrick Cloke hace 2 años
padre
commit
c12b5577f2
Se han modificado 2 ficheros con 11 adiciones y 5 borrados
  1. 1 0
      changelog.d/10592.bugfix
  2. 10 5
      synapse/federation/federation_server.py

+ 1 - 0
changelog.d/10592.bugfix

@@ -0,0 +1 @@
+Fix a bug introduced in v1.37.1 where an error could occur in the asyncronous processing of PDUs when the queue was empty.

+ 10 - 5
synapse/federation/federation_server.py

@@ -972,13 +972,18 @@ class FederationServer(FederationBase):
         # the room, so instead of pulling the event out of the DB and parsing
         # the event we just pull out the next event ID and check if that matches.
         if latest_event is not None and latest_origin is not None:
-            (
-                next_origin,
-                next_event_id,
-            ) = await self.store.get_next_staged_event_id_for_room(room_id)
-            if next_origin != latest_origin or next_event_id != latest_event.event_id:
+            result = await self.store.get_next_staged_event_id_for_room(room_id)
+            if result is None:
                 latest_origin = None
                 latest_event = None
+            else:
+                next_origin, next_event_id = result
+                if (
+                    next_origin != latest_origin
+                    or next_event_id != latest_event.event_id
+                ):
+                    latest_origin = None
+                    latest_event = None
 
         if latest_origin is None or latest_event is None:
             next = await self.store.get_next_staged_event_for_room(