diff --git a/rust/src/room_versions.rs b/rust/src/room_versions.rs index 3e0f73257b..dbc962174d 100644 --- a/rust/src/room_versions.rs +++ b/rust/src/room_versions.rs @@ -769,7 +769,6 @@ static KNOWN_ROOM_VERSIONS: LazyLock = LazyLock::new(| ROOM_VERSION_MSC3757V10, ROOM_VERSION_MSC3757V11, ROOM_VERSION_HYDRA_V11, - ROOM_VERSION_MSC4242V12, ]; KnownRoomVersionsMapping { diff --git a/synapse/config/experimental.py b/synapse/config/experimental.py index e77412a797..fc04486f76 100644 --- a/synapse/config/experimental.py +++ b/synapse/config/experimental.py @@ -479,6 +479,11 @@ class ExperimentalConfig(Config): # Enable room version (and thus applicable push rules from MSC3931/3932) KNOWN_ROOM_VERSIONS.add_room_version(RoomVersions.MSC1767v10) + self.msc4242_enabled: bool = experimental.get("msc4242_enabled", False) + if self.msc4242_enabled: + # Enable the room version + KNOWN_ROOM_VERSIONS.add_room_version(RoomVersions.MSC4242v12) + # MSC3391: Removing account data. self.msc3391_enabled = experimental.get("msc3391_enabled", False) diff --git a/tests/storage/test_msc4242_state_dag.py b/tests/storage/test_msc4242_state_dag.py index 4a1e91461f..8775e5c8eb 100644 --- a/tests/storage/test_msc4242_state_dag.py +++ b/tests/storage/test_msc4242_state_dag.py @@ -25,7 +25,7 @@ from synapse.rest.client import room from synapse.server import HomeServer from synapse.util.clock import Clock -from tests.unittest import HomeserverTestCase +from tests.unittest import HomeserverTestCase, override_config class MSC4242StateDagsTests(HomeserverTestCase): @@ -51,6 +51,7 @@ class MSC4242StateDagsTests(HomeserverTestCase): assert prev_state_events is not None return prev_state_events + @override_config({"experimental_features": {"msc4242_enabled": True}}) def test_forward_extremities_are_calculated(self) -> None: """ Check that forward extremities are set as prev_state_events and that they don't change @@ -202,6 +203,7 @@ class MSC4242EventPersistenceStateDagsStoreTestCase(HomeserverTestCase): message=f"want_new_extrems={want_new_extrems} got={new_extrems}", ) + @override_config({"experimental_features": {"msc4242_enabled": True}}) def test_calculate_new_state_dag_extremities_simple(self) -> None: # Simple linear chain self._test( @@ -215,6 +217,7 @@ class MSC4242EventPersistenceStateDagsStoreTestCase(HomeserverTestCase): want_new_extrems={"$4"}, ) + @override_config({"experimental_features": {"msc4242_enabled": True}}) def test_calculate_new_state_dag_extremities_fork(self) -> None: # Simple fork so we end up with two forward extrems self._test( @@ -228,6 +231,7 @@ class MSC4242EventPersistenceStateDagsStoreTestCase(HomeserverTestCase): want_new_extrems={"$3", "$4"}, ) + @override_config({"experimental_features": {"msc4242_enabled": True}}) def test_calculate_new_state_dag_extremities_merge(self) -> None: # Simple fork so we end up with two forward extrems self._test( @@ -241,6 +245,7 @@ class MSC4242EventPersistenceStateDagsStoreTestCase(HomeserverTestCase): want_new_extrems={"$4"}, ) + @override_config({"experimental_features": {"msc4242_enabled": True}}) def test_calculate_new_state_dag_extremities_fork_on_existing(self) -> None: # Fork where we are adding to older events self.seen_event_ids = {"$1", "$2", "$3"} @@ -253,6 +258,7 @@ class MSC4242EventPersistenceStateDagsStoreTestCase(HomeserverTestCase): want_new_extrems={"$4", "$5"}, ) + @override_config({"experimental_features": {"msc4242_enabled": True}}) def test_calculate_new_state_dag_extremities_merge_on_existing(self) -> None: # Merge where we are merging to older events self.seen_event_ids = {"$1", "$2", "$3"} @@ -264,6 +270,7 @@ class MSC4242EventPersistenceStateDagsStoreTestCase(HomeserverTestCase): want_new_extrems={"$4"}, ) + @override_config({"experimental_features": {"msc4242_enabled": True}}) def test_calculate_new_state_dag_extremities_merge_on_not_current(self) -> None: # Merge where we are merging to older events self.seen_event_ids = {"$1", "$2", "$3"} @@ -275,6 +282,7 @@ class MSC4242EventPersistenceStateDagsStoreTestCase(HomeserverTestCase): want_new_extrems={"$3", "$4"}, ) + @override_config({"experimental_features": {"msc4242_enabled": True}}) def test_calculate_new_state_dag_extremities_append_with_rejected(self) -> None: # rejected events cannot be forward extremities self.seen_event_ids = {"$1", "$2", "$3"} @@ -295,6 +303,7 @@ class MSC4242EventPersistenceStateDagsStoreTestCase(HomeserverTestCase): want_new_extrems={"$3"}, ) + @override_config({"experimental_features": {"msc4242_enabled": True}}) def test_calculate_new_state_dag_extremities_append_with_rejected_in_chain( self, ) -> None: @@ -311,6 +320,7 @@ class MSC4242EventPersistenceStateDagsStoreTestCase(HomeserverTestCase): want_new_extrems={"$5"}, ) + @override_config({"experimental_features": {"msc4242_enabled": True}}) def test_calculate_new_state_dag_extremities_missing_prevs_raises(self) -> None: self._test( current_fwds=[], @@ -324,6 +334,7 @@ class MSC4242EventPersistenceStateDagsStoreTestCase(HomeserverTestCase): want_raises=True, ) + @override_config({"experimental_features": {"msc4242_enabled": True}}) def test_calculate_new_state_dag_extremities_complex(self) -> None: """ 1