Skip to content
Merged
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 change: 1 addition & 0 deletions changelog.d/18680.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Change default room version to 11, implementing [MSC4239](https://github.com/matrix-org/matrix-spec-proposals/pull/4239) as part of Matrix v1.14.
Comment thread
ShadowRZ marked this conversation as resolved.
3 changes: 2 additions & 1 deletion docs/usage/configuration/config_documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -363,8 +363,9 @@ Known room versions are listed [here](https://spec.matrix.org/latest/rooms/#comp
For example, for room version 1, `default_room_version` should be set to "1".

_Changed in Synapse 1.76:_ the default version room version was increased from [9](https://spec.matrix.org/v1.5/rooms/v9/) to [10](https://spec.matrix.org/v1.5/rooms/v10/).
_Changed in Synapse 1.157:_ the default version room version was increased from [10](https://spec.matrix.org/v1.12/rooms/v10/) to [11](https://spec.matrix.org/v1.12/rooms/v11/).

Defaults to `"10"`.
Defaults to `"11"`.

Example configuration:
```yaml
Expand Down
6 changes: 5 additions & 1 deletion schema/synapse-config.schema.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,11 @@ properties:
_Changed in Synapse 1.76:_ the default version room version was increased
from [9](https://spec.matrix.org/v1.5/rooms/v9/) to
[10](https://spec.matrix.org/v1.5/rooms/v10/).
default: "10"

_Changed in Synapse 1.157:_ the default version room version was increased
from [10](https://spec.matrix.org/v1.12/rooms/v10/) to
[11](https://spec.matrix.org/v1.12/rooms/v11/).
default: "11"
examples:
- "8"
gc_thresholds:
Expand Down
2 changes: 1 addition & 1 deletion synapse/config/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ def generate_ip_set(
"fec0::/10",
]

DEFAULT_ROOM_VERSION = "10"
DEFAULT_ROOM_VERSION = "11"

# Defaults for the presence state machine timers, in milliseconds. Overridden
# by the corresponding options in the `presence` config section.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ def _invite_local_user_to_remote_room_and_join(self) -> RemoteRoomJoinResult:
# Create a remote room
room_creator_user_id = f"@remote-user:{self.OTHER_SERVER_NAME}"
remote_room_id = f"!remote-room:{self.OTHER_SERVER_NAME}"
room_version = RoomVersions.V10
room_version = RoomVersions.V11

room_create_event = make_test_event(
self.add_hashes_and_signatures_from_other_server(
Expand All @@ -201,9 +201,6 @@ def _invite_local_user_to_remote_room_and_join(self) -> RemoteRoomJoinResult:
"type": EventTypes.Create,
"state_key": "",
"content": {
# The `ROOM_CREATOR` field could be removed if we used a room
# version > 10 (in favor of relying on `sender`)
EventContentFields.ROOM_CREATOR: room_creator_user_id,
EventContentFields.ROOM_VERSION: room_version.identifier,
},
"auth_events": [],
Expand Down
19 changes: 0 additions & 19 deletions tests/module_api/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -743,23 +743,13 @@ def test_create_room(self) -> None:

# Now do the happy path.
user_id = self.register_user("user", "password")
access_token = self.login(user_id, "password")

room_id, room_alias = self.get_success(
self.module_api.create_room(
user_id=user_id, config={"room_alias_name": "foo-bar"}, ratelimit=False
)
)

# Check room creator.
channel = self.make_request(
"GET",
f"/_matrix/client/v3/rooms/{room_id}/state/m.room.create",
access_token=access_token,
)
self.assertEqual(channel.code, 200, channel.result)
self.assertEqual(channel.json_body["creator"], user_id)

# Check room alias.
self.assertEqual(room_alias, f"#foo-bar:{self.module_api.server_name}")

Expand All @@ -768,15 +758,6 @@ def test_create_room(self) -> None:
self.module_api.create_room(user_id=user_id, config={}, ratelimit=False)
)

# Check room creator.
channel = self.make_request(
"GET",
f"/_matrix/client/v3/rooms/{room_id}/state/m.room.create",
access_token=access_token,
)
self.assertEqual(channel.code, 200, channel.result)
self.assertEqual(channel.json_body["creator"], user_id)

# Check room alias.
self.assertIsNone(room_alias)

Expand Down
8 changes: 4 additions & 4 deletions tests/rest/client/sliding_sync/test_rooms_invites.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ def test_rooms_invite_shared_history_initial_sync(self) -> None:
response_body["rooms"][room_id1]["invite_state"],
[
{
"content": {"creator": user2_id, "room_version": "10"},
"content": {"room_version": "11"},
"sender": user2_id,
"state_key": "",
"type": "m.room.create",
Expand Down Expand Up @@ -253,7 +253,7 @@ def test_rooms_invite_shared_history_incremental_sync(self) -> None:
response_body["rooms"][room_id1]["invite_state"],
[
{
"content": {"creator": user2_id, "room_version": "10"},
"content": {"room_version": "11"},
"sender": user2_id,
"state_key": "",
"type": "m.room.create",
Expand Down Expand Up @@ -374,7 +374,7 @@ def test_rooms_invite_world_readable_history_initial_sync(self) -> None:
response_body["rooms"][room_id1]["invite_state"],
[
{
"content": {"creator": user2_id, "room_version": "10"},
"content": {"room_version": "11"},
"sender": user2_id,
"state_key": "",
"type": "m.room.create",
Expand Down Expand Up @@ -500,7 +500,7 @@ def test_rooms_invite_world_readable_history_incremental_sync(self) -> None:
response_body["rooms"][room_id1]["invite_state"],
[
{
"content": {"creator": user2_id, "room_version": "10"},
"content": {"room_version": "11"},
"sender": user2_id,
"state_key": "",
"type": "m.room.create",
Expand Down
7 changes: 6 additions & 1 deletion tests/rest/client/test_redactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,12 @@ def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:

# Create a room
self.room_id = self.helper.create_room_as(
self.mod_user_id, tok=self.mod_access_token
self.mod_user_id,
tok=self.mod_access_token,
# FIXME: Using room version 10 here as using later version requires
# https://github.com/element-hq/synapse/pull/19782
# Remove the override when the above PR is merged.
room_version="10",
Comment thread
ShadowRZ marked this conversation as resolved.
)

# Invite the other user
Expand Down
38 changes: 19 additions & 19 deletions tests/rest/client/test_rooms.py
Original file line number Diff line number Diff line change
Expand Up @@ -4916,15 +4916,15 @@ def test_banning_remote_member_with_flag_redacts_their_events(self) -> None:
bad_user = "@remote_bad_user:" + self.OTHER_SERVER_NAME
channel = self.make_signed_federation_request(
"GET",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=10",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=11",
)
self.assertEqual(channel.code, HTTPStatus.OK, channel.json_body)
join_result = channel.json_body

join_event_dict = join_result["event"]
self.add_hashes_and_signatures_from_other_server(
join_event_dict,
RoomVersions.V10,
RoomVersions.V11,
)
channel = self.make_signed_federation_request(
"PUT",
Expand Down Expand Up @@ -4959,7 +4959,7 @@ def test_banning_remote_member_with_flag_redacts_their_events(self) -> None:
"prev_events": auth_ids,
}
),
room_version=RoomVersions.V10,
room_version=RoomVersions.V11,
)

self.get_success(
Expand Down Expand Up @@ -5010,7 +5010,7 @@ def test_banning_remote_member_with_flag_redacts_their_events(self) -> None:
"prev_events": auth_ids,
}
),
room_version=RoomVersions.V10,
room_version=RoomVersions.V11,
)

self.get_success(
Expand All @@ -5035,15 +5035,15 @@ def test_unbanning_remote_user_stops_redaction_action(self) -> None:
bad_user = "@remote_bad_user:" + self.OTHER_SERVER_NAME
channel = self.make_signed_federation_request(
"GET",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=10",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=11",
)
self.assertEqual(channel.code, HTTPStatus.OK, channel.json_body)
join_result = channel.json_body

join_event_dict = join_result["event"]
self.add_hashes_and_signatures_from_other_server(
join_event_dict,
RoomVersions.V10,
RoomVersions.V11,
)
channel = self.make_signed_federation_request(
"PUT",
Expand Down Expand Up @@ -5078,7 +5078,7 @@ def test_unbanning_remote_user_stops_redaction_action(self) -> None:
"prev_events": auth_ids,
}
),
room_version=RoomVersions.V10,
room_version=RoomVersions.V11,
)

self.get_success(
Expand Down Expand Up @@ -5119,7 +5119,7 @@ def test_unbanning_remote_user_stops_redaction_action(self) -> None:
# user should be able to join again
channel = self.make_signed_federation_request(
"GET",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=10",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=11",
)
self.assertEqual(channel.code, HTTPStatus.OK, channel.json_body)
join_result = channel.json_body
Expand Down Expand Up @@ -5167,7 +5167,7 @@ def test_unbanning_remote_user_stops_redaction_action(self) -> None:
"prev_events": auth_ids,
}
),
room_version=RoomVersions.V10,
room_version=RoomVersions.V11,
)

self.get_success(
Expand Down Expand Up @@ -5281,15 +5281,15 @@ def test_kicking_remote_member_with_flag_redacts_their_events(self) -> None:
bad_user = "@remote_bad_user:" + self.OTHER_SERVER_NAME
channel = self.make_signed_federation_request(
"GET",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=10",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=11",
)
self.assertEqual(channel.code, HTTPStatus.OK, channel.json_body)
join_result = channel.json_body

join_event_dict = join_result["event"]
self.add_hashes_and_signatures_from_other_server(
join_event_dict,
RoomVersions.V10,
RoomVersions.V11,
)
channel = self.make_signed_federation_request(
"PUT",
Expand Down Expand Up @@ -5324,7 +5324,7 @@ def test_kicking_remote_member_with_flag_redacts_their_events(self) -> None:
"prev_events": auth_ids,
}
),
room_version=RoomVersions.V10,
room_version=RoomVersions.V11,
)

self.get_success(
Expand Down Expand Up @@ -5375,7 +5375,7 @@ def test_kicking_remote_member_with_flag_redacts_their_events(self) -> None:
"prev_events": auth_ids,
}
),
room_version=RoomVersions.V10,
room_version=RoomVersions.V11,
)

self.get_success(
Expand All @@ -5397,15 +5397,15 @@ def test_rejoining_kicked_remote_user_stops_redaction_action(self) -> None:
bad_user = "@remote_bad_user:" + self.OTHER_SERVER_NAME
channel = self.make_signed_federation_request(
"GET",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=10",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=11",
)
self.assertEqual(channel.code, HTTPStatus.OK, channel.json_body)
join_result = channel.json_body

join_event_dict = join_result["event"]
self.add_hashes_and_signatures_from_other_server(
join_event_dict,
RoomVersions.V10,
RoomVersions.V11,
)
channel = self.make_signed_federation_request(
"PUT",
Expand Down Expand Up @@ -5440,7 +5440,7 @@ def test_rejoining_kicked_remote_user_stops_redaction_action(self) -> None:
"prev_events": auth_ids,
}
),
room_version=RoomVersions.V10,
room_version=RoomVersions.V11,
)

self.get_success(
Expand Down Expand Up @@ -5476,15 +5476,15 @@ def test_rejoining_kicked_remote_user_stops_redaction_action(self) -> None:
# user re-joins after kick
channel = self.make_signed_federation_request(
"GET",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=10",
f"/_matrix/federation/v1/make_join/{self.room_id}/{bad_user}?ver=11",
)
self.assertEqual(channel.code, HTTPStatus.OK, channel.json_body)
join_result = channel.json_body

join_event_dict = join_result["event"]
self.add_hashes_and_signatures_from_other_server(
join_event_dict,
RoomVersions.V10,
RoomVersions.V11,
)
channel = self.make_signed_federation_request(
"PUT",
Expand Down Expand Up @@ -5524,7 +5524,7 @@ def test_rejoining_kicked_remote_user_stops_redaction_action(self) -> None:
"prev_events": auth_ids,
}
),
room_version=RoomVersions.V10,
room_version=RoomVersions.V11,
)

self.get_success(
Expand Down
21 changes: 18 additions & 3 deletions tests/storage/databases/main/test_room.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#

import json
from typing import Optional

from twisted.internet.testing import MemoryReactor

Expand All @@ -45,9 +46,13 @@ def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
self.user_id = self.register_user("foo", "pass")
self.token = self.login("foo", "pass")

def _generate_room(self) -> str:
def _generate_room(self, room_version: Optional[str] = None) -> str:
"""Create a room and return the room ID."""
return self.helper.create_room_as(self.user_id, tok=self.token)
return self.helper.create_room_as(
self.user_id,
tok=self.token,
room_version=room_version,
)
Comment thread
ShadowRZ marked this conversation as resolved.

def run_background_updates(self, update_name: str) -> None:
"""Insert and run the background update."""
Expand All @@ -70,7 +75,17 @@ def test_background_populate_rooms_creator_column(self) -> None:
"""

# Insert a room without the creator
room_id = self._generate_room()
room_id = self._generate_room(
# Create the room as v10, because the `POPULATE_ROOMS_CREATOR_COLUMN`
# background update assumes that the room `creator` field is available
# in the `m.room.create` event content, which was removed in room
# version 11. That assumption is safe as the background update only
# backfills rooms whose `creator` column is unset, which can only be
# rooms created before Synapse started populating the column at room
# creation time (Synapse 1.43, 2021), all of which predate room version
# 11 (2023).
room_version="10"
)
self.get_success(
self.store.db_pool.simple_update(
table="rooms",
Expand Down
Loading