Skip to content

fix(profile-sync-controller): coalesce concurrent performSignIn calls - #10646

Merged
ccharly merged 3 commits into
mainfrom
fix/coalesce-auth-sign-in
Oct 1, 2026
Merged

ccharly merged 3 commits into
mainfrom
fix/coalesce-auth-sign-in

Conversation

@mathieuartu

@mathieuartu mathieuartu commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Explanation

References

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

Medium Risk
Changes concurrent behavior in the authentication sign-in path; coalescing is straightforward and covered by tests, but callers now share one in-flight outcome including errors.

Overview
AuthenticationController.performSignIn now deduplicates overlapping calls: a private #ongoingSignIn promise is shared by concurrent callers, and the previous sign-in body lives in #runPerformSignIn, which clears the slot in finally when that run finishes.

That stops duplicate unlock/auto-sign-in triggers from running parallel full sign-in flows (multiple SRP logins and pairing). A new test asserts overlapping callers resolve to the same token array and a call after completion gets a new result. The unreleased changelog records the fix.

Reviewed by Cursor Bugbot for commit 576eebc. Bugbot is set up for automated code reviews on this repo. Configure here.

@mathieuartu mathieuartu self-assigned this Oct 1, 2026
@mathieuartu
mathieuartu requested review from a team as code owners October 1, 2026 08:53
@mathieuartu
mathieuartu deployed to default-branch October 1, 2026 08:54 — with GitHub Actions Active
@mathieuartu mathieuartu changed the title fix: coalesce sign ins fix: coalesce concurrent performSignIn calls Oct 1, 2026
@mathieuartu

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@11.0.0-preview-576eebcfe
@metamask-previews/accounts-controller@40.0.0-preview-576eebcfe
@metamask-previews/address-book-controller@8.0.0-preview-576eebcfe
@metamask-previews/advanced-chart-core@1.0.0-preview-576eebcfe
@metamask-previews/ai-controllers@2.0.0-preview-576eebcfe
@metamask-previews/analytics-controller@3.2.0-preview-576eebcfe
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-576eebcfe
@metamask-previews/announcement-controller@9.0.0-preview-576eebcfe
@metamask-previews/app-metadata-controller@3.0.0-preview-576eebcfe
@metamask-previews/approval-controller@10.0.0-preview-576eebcfe
@metamask-previews/assets-controller@17.0.0-preview-576eebcfe
@metamask-previews/assets-controllers@112.1.0-preview-576eebcfe
@metamask-previews/authenticated-user-storage@4.1.0-preview-576eebcfe
@metamask-previews/base-controller@10.0.0-preview-576eebcfe
@metamask-previews/base-data-service@2.1.0-preview-576eebcfe
@metamask-previews/bitcoin-regtest-up@2.0.0-preview-576eebcfe
@metamask-previews/bridge-controller@82.0.0-preview-576eebcfe
@metamask-previews/bridge-status-controller@76.3.4-preview-576eebcfe
@metamask-previews/build-utils@4.0.0-preview-576eebcfe
@metamask-previews/chain-agnostic-permission@2.0.0-preview-576eebcfe
@metamask-previews/chomp-api-service@6.0.1-preview-576eebcfe
@metamask-previews/claims-controller@1.0.2-preview-576eebcfe
@metamask-previews/client-controller@2.0.0-preview-576eebcfe
@metamask-previews/client-utils@3.0.3-preview-576eebcfe
@metamask-previews/compliance-controller@3.0.0-preview-576eebcfe
@metamask-previews/composable-controller@13.0.0-preview-576eebcfe
@metamask-previews/config-registry-controller@4.0.0-preview-576eebcfe
@metamask-previews/connectivity-controller@1.0.0-preview-576eebcfe
@metamask-previews/controller-utils@13.0.0-preview-576eebcfe
@metamask-previews/core-backend@11.0.0-preview-576eebcfe
@metamask-previews/cryptography@1.0.0-preview-576eebcfe
@metamask-previews/delegation-controller@4.0.0-preview-576eebcfe
@metamask-previews/earn-controller@13.0.2-preview-576eebcfe
@metamask-previews/eip-5792-middleware@4.0.1-preview-576eebcfe
@metamask-previews/eip-7702-internal-rpc-middleware@1.0.0-preview-576eebcfe
@metamask-previews/eip1193-permission-middleware@3.0.0-preview-576eebcfe
@metamask-previews/eth-block-tracker@16.0.0-preview-576eebcfe
@metamask-previews/eth-json-rpc-middleware@25.0.0-preview-576eebcfe
@metamask-previews/eth-json-rpc-provider@7.0.0-preview-576eebcfe
@metamask-previews/foundryup@2.0.0-preview-576eebcfe
@metamask-previews/gas-fee-controller@27.0.0-preview-576eebcfe
@metamask-previews/gator-permissions-controller@6.0.1-preview-576eebcfe
@metamask-previews/geolocation-controller@2.0.0-preview-576eebcfe
@metamask-previews/java-tron-up@2.0.0-preview-576eebcfe
@metamask-previews/json-rpc-engine@11.0.0-preview-576eebcfe
@metamask-previews/json-rpc-middleware-stream@9.0.0-preview-576eebcfe
@metamask-previews/keyring-controller@28.1.0-preview-576eebcfe
@metamask-previews/kyc-controller@0.6.0-preview-576eebcfe
@metamask-previews/local-node-utils@2.0.0-preview-576eebcfe
@metamask-previews/logging-controller@10.0.0-preview-576eebcfe
@metamask-previews/message-manager@15.0.0-preview-576eebcfe
@metamask-previews/messenger@3.0.0-preview-576eebcfe
@metamask-previews/messenger-cli@1.0.0-preview-576eebcfe
@metamask-previews/money-account-api-data-service@2.1.0-preview-576eebcfe
@metamask-previews/money-account-balance-service@3.1.2-preview-576eebcfe
@metamask-previews/money-account-controller@2.0.0-preview-576eebcfe
@metamask-previews/money-account-upgrade-controller@5.1.0-preview-576eebcfe
@metamask-previews/money-account-utils@2.1.0-preview-576eebcfe
@metamask-previews/multichain-account-service@14.1.0-preview-576eebcfe
@metamask-previews/multichain-api-middleware@5.0.0-preview-576eebcfe
@metamask-previews/multichain-network-controller@4.0.0-preview-576eebcfe
@metamask-previews/multichain-transactions-controller@8.0.0-preview-576eebcfe
@metamask-previews/name-controller@10.0.0-preview-576eebcfe
@metamask-previews/network-connection-banner-controller@1.0.0-preview-576eebcfe
@metamask-previews/network-controller@37.0.0-preview-576eebcfe
@metamask-previews/network-enablement-controller@7.0.1-preview-576eebcfe
@metamask-previews/notification-services-controller@29.0.2-preview-576eebcfe
@metamask-previews/passkey-controller@4.1.0-preview-576eebcfe
@metamask-previews/permission-controller@14.0.0-preview-576eebcfe
@metamask-previews/permission-log-controller@6.0.0-preview-576eebcfe
@metamask-previews/perps-controller@19.0.0-preview-576eebcfe
@metamask-previews/phishing-controller@18.2.0-preview-576eebcfe
@metamask-previews/platform-api-docs@0.2.1-preview-576eebcfe
@metamask-previews/polling-controller@17.0.0-preview-576eebcfe
@metamask-previews/preferences-controller@24.0.0-preview-576eebcfe
@metamask-previews/profile-controller@1.0.0-preview-576eebcfe
@metamask-previews/profile-metrics-controller@5.1.2-preview-576eebcfe
@metamask-previews/profile-sync-controller@33.0.0-preview-576eebcfe
@metamask-previews/ramps-controller@26.1.0-preview-576eebcfe
@metamask-previews/rate-limit-controller@8.0.0-preview-576eebcfe
@metamask-previews/react-data-query@2.0.0-preview-576eebcfe
@metamask-previews/remote-feature-flag-controller@7.0.0-preview-576eebcfe
@metamask-previews/sample-controllers@6.0.0-preview-576eebcfe
@metamask-previews/seedless-onboarding-controller@11.0.1-preview-576eebcfe
@metamask-previews/selected-network-controller@27.0.0-preview-576eebcfe
@metamask-previews/sentinel-api-service@2.0.0-preview-576eebcfe
@metamask-previews/shield-controller@7.0.3-preview-576eebcfe
@metamask-previews/signature-controller@40.0.0-preview-576eebcfe
@metamask-previews/smart-transactions-controller@27.0.3-preview-576eebcfe
@metamask-previews/snap-account-service@4.0.0-preview-576eebcfe
@metamask-previews/social-controllers@3.4.0-preview-576eebcfe
@metamask-previews/solana-test-validator-up@2.0.0-preview-576eebcfe
@metamask-previews/stellar-quickstart-up@0.0.0-preview-576eebcfe
@metamask-previews/storage-service@2.0.0-preview-576eebcfe
@metamask-previews/subscription-controller@11.0.0-preview-576eebcfe
@metamask-previews/transaction-controller@72.0.1-preview-576eebcfe
@metamask-previews/transaction-pay-controller@30.0.0-preview-576eebcfe
@metamask-previews/user-operation-controller@42.0.1-preview-576eebcfe
@metamask-previews/utils@12.0.0-preview-576eebcfe
@metamask-previews/wallet@15.1.0-preview-576eebcfe
@metamask-previews/wallet-cli@0.0.0-preview-576eebcfe

@mathieuartu mathieuartu changed the title fix: coalesce concurrent performSignIn calls fix(profile-sync-controller): coalesce concurrent performSignIn calls Oct 1, 2026
@mathieuartu
mathieuartu enabled auto-merge October 1, 2026 09:46
@mathieuartu
mathieuartu added this pull request to the merge queue Oct 1, 2026
@ccharly
ccharly removed this pull request from the merge queue due to a manual request Oct 1, 2026
@ccharly
ccharly added this pull request to the merge queue Oct 1, 2026
@ccharly

ccharly commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Removed from queue cause I was not sure if this was a fix or not, but we can amend that later or during the next release if needed

Merged via the queue into main with commit 62c1bbd Oct 1, 2026
142 checks passed
@ccharly
ccharly deleted the fix/coalesce-auth-sign-in branch October 1, 2026 09:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants