From 1053c6f26c8fcfd81e7abb84a852b39799a46eb3 Mon Sep 17 00:00:00 2001 From: Daniel Holmgren Date: Tue, 12 Sep 2023 12:37:36 -0500 Subject: [PATCH] Prevent user pref races (#1576) prevent user pref races --- packages/pds/src/services/account/index.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/pds/src/services/account/index.ts b/packages/pds/src/services/account/index.ts index dd28af01df5..8173d9160af 100644 --- a/packages/pds/src/services/account/index.ts +++ b/packages/pds/src/services/account/index.ts @@ -590,6 +590,15 @@ export class AccountService { `Some preferences are not in the ${namespace} namespace`, ) } + // short-held row lock to prevent races + if (this.db.dialect === 'pg') { + await this.db.db + .selectFrom('user_account') + .selectAll() + .forUpdate() + .where('did', '=', did) + .executeTakeFirst() + } // get all current prefs for user and prep new pref rows const allPrefs = await this.db.db .selectFrom('user_pref')