diff --git a/changelog.d/+sync-wake-ordering.bugfix.md b/changelog.d/+sync-wake-ordering.bugfix.md new file mode 100644 index 000000000..13bb89c27 --- /dev/null +++ b/changelog.d/+sync-wake-ordering.bugfix.md @@ -0,0 +1 @@ +Fixed sync loops being woken before membership changes are fully committed. diff --git a/src/service/rooms/state_cache/mod.rs b/src/service/rooms/state_cache/mod.rs index 40464049a..5c64ce04c 100644 --- a/src/service/rooms/state_cache/mod.rs +++ b/src/service/rooms/state_cache/mod.rs @@ -16,9 +16,7 @@ serde::Raw, }; -use crate::{ - Dep, account_data, appservice::RegistrationInfo, config, globals, rooms, sync, users, -}; +use crate::{Dep, account_data, appservice::RegistrationInfo, config, globals, rooms, users}; pub struct Service { appservice_in_room_cache: AppServiceInRoomCache, @@ -33,7 +31,6 @@ struct Services { metadata: Dep, state: Dep, state_accessor: Dep, - sync: Dep, users: Dep, } @@ -70,7 +67,6 @@ fn build(args: crate::Args<'_>) -> Result> { state: args.depend::("rooms::state"), state_accessor: args .depend::("rooms::state_accessor"), - sync: args.depend::("sync"), users: args.depend::("users"), }, db: Data { diff --git a/src/service/rooms/state_cache/update.rs b/src/service/rooms/state_cache/update.rs index 1988ee015..d70bd9e88 100644 --- a/src/service/rooms/state_cache/update.rs +++ b/src/service/rooms/state_cache/update.rs @@ -133,13 +133,6 @@ pub async fn update_membership( self.update_joined_count(room_id).await; } - // Kick the target user's sync loop if they're local and this isn't a join to - // make sure that membership changes like invites or invite rejections get - // synced - if is_local && !matches!(membership.membership, MembershipState::Join) { - self.services.sync.wake(user_id).await; - } - Ok(()) }