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

Commit fc9da2c

Browse files
committed
Merge tag 'v1.50.2' into dinsic
Synapse 1.50.2 (2022-01-24) =========================== Bugfixes -------- - Fix a bug introduced in Synapse 1.40.0 that caused Synapse to fail to process incoming federation traffic after handling a large amount of events in a v1 room. ([\#11806](matrix-org/synapse#11806))
2 parents 39e44da + 36f37ac commit fc9da2c

5 files changed

Lines changed: 42 additions & 8 deletions

File tree

CHANGES.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
Synapse 1.50.2 (2022-01-24)
2+
===========================
3+
4+
Bugfixes
5+
--------
6+
7+
- Fix a bug introduced in Synapse 1.40.0 that caused Synapse to fail to process incoming federation traffic after handling a large amount of events in a v1 room. ([\#11806](https://github.com/matrix-org/synapse/issues/11806))
8+
9+
110
Synapse 1.50.1 (2022-01-18)
211
===========================
312

debian/changelog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
matrix-synapse-py3 (1.50.2) stable; urgency=medium
2+
3+
* New synapse release 1.50.2.
4+
5+
-- Synapse Packaging team <packages@matrix.org> Mon, 24 Jan 2022 13:37:11 +0000
6+
17
matrix-synapse-py3 (1.50.1) stable; urgency=medium
28

39
* New synapse release 1.50.1.

synapse/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
except ImportError:
4848
pass
4949

50-
__version__ = "1.50.1"
50+
__version__ = "1.50.2"
5151

5252
if bool(os.environ.get("SYNAPSE_TEST_PATCH_LOG_CONTEXTS", False)):
5353
# We import here so that we don't have to install a bunch of deps when

synapse/storage/databases/main/event_federation.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1432,7 +1432,10 @@ async def prune_staged_events_in_room(
14321432

14331433
if room_version.event_format == EventFormatVersions.V1:
14341434
for prev_event_tuple in prev_events:
1435-
if not isinstance(prev_event_tuple, list) or len(prev_events) != 2:
1435+
if (
1436+
not isinstance(prev_event_tuple, list)
1437+
or len(prev_event_tuple) != 2
1438+
):
14361439
logger.info("Invalid prev_events for %s", event_id)
14371440
break
14381441

tests/storage/test_event_federation.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,16 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
from typing import Tuple, Union
16+
1517
import attr
1618
from parameterized import parameterized
1719

18-
from synapse.api.room_versions import RoomVersions
20+
from synapse.api.room_versions import (
21+
KNOWN_ROOM_VERSIONS,
22+
EventFormatVersions,
23+
RoomVersion,
24+
)
1925
from synapse.events import _EventInternalMetadata
2026
from synapse.util import json_encoder
2127

@@ -506,11 +512,21 @@ def insert_event(txn):
506512
)
507513
self.assertSetEqual(difference, set())
508514

509-
def test_prune_inbound_federation_queue(self):
510-
"Test that pruning of inbound federation queues work"
515+
@parameterized.expand(
516+
[(room_version,) for room_version in KNOWN_ROOM_VERSIONS.values()]
517+
)
518+
def test_prune_inbound_federation_queue(self, room_version: RoomVersion):
519+
"""Test that pruning of inbound federation queues work"""
511520

512521
room_id = "some_room_id"
513522

523+
def prev_event_format(prev_event_id: str) -> Union[Tuple[str, dict], str]:
524+
"""Account for differences in prev_events format across room versions"""
525+
if room_version.event_format == EventFormatVersions.V1:
526+
return prev_event_id, {}
527+
528+
return prev_event_id
529+
514530
# Insert a bunch of events that all reference the previous one.
515531
self.get_success(
516532
self.store.db_pool.simple_insert_many(
@@ -522,7 +538,7 @@ def test_prune_inbound_federation_queue(self):
522538
"received_ts": 0,
523539
"event_id": f"$fake_event_id_{i + 1}",
524540
"event_json": json_encoder.encode(
525-
{"prev_events": [f"$fake_event_id_{i}"]}
541+
{"prev_events": [prev_event_format(f"$fake_event_id_{i}")]}
526542
),
527543
"internal_metadata": "{}",
528544
}
@@ -535,12 +551,12 @@ def test_prune_inbound_federation_queue(self):
535551
# Calling prune once should return True, i.e. a prune happen. The second
536552
# time it shouldn't.
537553
pruned = self.get_success(
538-
self.store.prune_staged_events_in_room(room_id, RoomVersions.V6)
554+
self.store.prune_staged_events_in_room(room_id, room_version)
539555
)
540556
self.assertTrue(pruned)
541557

542558
pruned = self.get_success(
543-
self.store.prune_staged_events_in_room(room_id, RoomVersions.V6)
559+
self.store.prune_staged_events_in_room(room_id, room_version)
544560
)
545561
self.assertFalse(pruned)
546562

0 commit comments

Comments
 (0)