diff --git a/src/service/rooms/roles/mod.rs b/src/service/rooms/roles/mod.rs index a1b1e48f..1e3238c6 100644 --- a/src/service/rooms/roles/mod.rs +++ b/src/service/rooms/roles/mod.rs @@ -47,13 +47,12 @@ pub async fn flush_space_from_cache(&self, space_id: &RoomId) { self.roles.write().await.remove(space_id); self.user_roles.write().await.remove(space_id); self.room_requirements.write().await.remove(space_id); - { - let mut room_to_space = self.room_to_space.write().await; - room_to_space.retain(|_, parents| { - parents.remove(space_id); - !parents.is_empty() - }); - } + let mut room_to_space = self.room_to_space.write().await; + room_to_space.retain(|_, parents| { + parents.remove(space_id); + !parents.is_empty() + }); + drop(room_to_space); self.space_to_rooms.write().await.remove(space_id); } @@ -767,7 +766,9 @@ pub async fn validate_pl_change( return Ok(()); } - let space_data: Vec<(Vec<(OwnedUserId, HashSet)>, BTreeMap)> = { + type SpaceEnforcementData = + (Vec<(OwnedUserId, HashSet)>, BTreeMap); + let space_data: Vec = { let roles_guard = self.roles.read().await; let user_roles_guard = self.user_roles.read().await; parent_spaces