Fix group update deadlock inside conversation queue

Co-authored-by: Jamie Kyle <113370520+jamiebuilds-signal@users.noreply.github.com>
This commit is contained in:
automated-signal 2024-10-22 16:11:29 -05:00 committed by GitHub
parent afe727af7d
commit 6ad1b91a8c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -30,7 +30,7 @@ import { isTestOrMockEnvironment } from '../environment';
import { isAlpha } from './version';
import { parseStrict } from './schemas';
import { DataReader } from '../sql/Client';
import { waitThenMaybeUpdateGroup } from '../groups';
import { maybeUpdateGroup } from '../groups';
import { isGroupV2 } from './whatTypeOfConversation';
export function decodeGroupSendEndorsementResponse({
@ -364,7 +364,8 @@ export async function maybeCreateGroupSendEndorsementState(
if (conversation.isMember(ourAci)) {
if (!alreadyRefreshedGroupState) {
log.info(`${logId}: Missing endorsements for group, refreshing group`);
await waitThenMaybeUpdateGroup({ conversation, force: true });
await window.waitForEmptyEventQueue();
await maybeUpdateGroup({ conversation, force: true });
return { state: null, didRefreshGroupState: true };
}
@ -399,7 +400,8 @@ export async function maybeCreateGroupSendEndorsementState(
log.info(
`${logId}: Endorsements are expired (${result.reason}), refreshing group`
);
await waitThenMaybeUpdateGroup({ conversation, force: true });
await window.waitForEmptyEventQueue();
await maybeUpdateGroup({ conversation, force: true });
return { state: null, didRefreshGroupState: true };
}