Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: Network controller race condition after state update (#5122)
## Explanation Fixes a race condition where: - You update a network with a new endpoint. - In the `stateChange` subscription callback, call `getNetworkConfigurationByNetworkClientId` on the new endpoint. - It returns undefined. This occurs because the `network client id -> network configuration` map was being built *after* the state update, so it was not ready at the time of the `stateChange` event. The fix involves moving this map building inside the state update, so that its built by the time `stateChange` fires. But also requires deep cloning the state before building the map from it. Otherwise we get `Cannot perform 'get' on a proxy that has been revoked` when referencing the ephemeral `state` lambda. ## References <!-- Are there any issues that this pull request is tied to? Are there other links that reviewers should consult to understand these changes better? Are there client or consumer pull requests to adopt any breaking changes? For example: * Fixes #12345 * Related to #67890 --> ## Changelog <!-- If you're making any consumer-facing changes, list those changes here as if you were updating a changelog, using the template below as a guide. (CATEGORY is one of BREAKING, ADDED, CHANGED, DEPRECATED, REMOVED, or FIXED. For security-related issues, follow the Security Advisory process.) Please take care to name the exact pieces of the API you've added or changed (e.g. types, interfaces, functions, or methods). If there are any breaking changes, make sure to offer a solution for consumers to follow once they upgrade to the changes. Finally, if you're only making changes to development scripts or tests, you may replace the template below with "None". --> ### `@metamask/network-controller` - **FIXED**: A race condition when calling `getNetworkConfigurationByNetworkClientId` in response to a `stateChange` event adding a new endpoint to a network. ## 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 highlighted breaking changes using the "BREAKING" category above as appropriate - [ ] I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes
- Loading branch information