Skip to content

fix: Delete invalid SelectedNetworkController state #26428

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

Gudahtt
Copy link
Member

@Gudahtt Gudahtt commented Aug 14, 2024

Description

The SelectedNetworkController state is cleared if any invalid networkConfigurationIds are found in state. We are seeing reports of this happening in production in v12.0.1.

The suspected cause is NetworkController state corruption. We resolved a few cases of this in v12.0.1, but for users that were affected by this, the invalid IDs may have propogated to the SelectedNetworkController state already. That is what this migration intends to fix.

Open in GitHub Codespaces

Related issues

Fixes #26309

Manual testing steps

We don't have clear reproduction steps for the bug itself. To artificially reproduce the scenario by changing extension state, this should work:

  • Create a dev build from v12.0.2
  • Install the dev build from the dist/chrome directory and proceed through onboarding
  • Visit the test dapp, refresh, and connect to it.
  • Run this command in the background console:
    chrome.storage.local.get(
      null,
      (state) => {
        state.data.SelectedNetworkController.domains['https://metamask.github.io'] = '123';
        chrome.storage.local.set(state, () => chrome.runtime.reload());
      }
    );
    
    • The linked error should now appear in the console of the popup
  • Disable the extension
  • Switch to this branch and create a dev build
  • Enable and reload the extension
    • The error should no longer appear.

Screenshots/Recordings

N/A

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

@Gudahtt Gudahtt marked this pull request as ready for review August 14, 2024 20:28
@Gudahtt Gudahtt requested a review from a team as a code owner August 14, 2024 20:28
Copy link

codecov bot commented Aug 14, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 70.02%. Comparing base (c5c13d5) to head (70795ce).

Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #26428      +/-   ##
===========================================
+ Coverage    69.99%   70.02%   +0.03%     
===========================================
  Files         1424     1425       +1     
  Lines        49984    50028      +44     
  Branches     13872    13883      +11     
===========================================
+ Hits         34986    35031      +45     
+ Misses       14998    14997       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@Gudahtt Gudahtt marked this pull request as draft August 14, 2024 20:34
@metamaskbot
Copy link
Collaborator

Builds ready [70795ce]
Page Load Metrics (76 ± 16 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint732811104421
domContentLoaded98727178
load41197763416
domInteractive98727178
Bundle size diffs
  • background: 0 Bytes (0.00%)
  • ui: 0 Bytes (0.00%)
  • common: 0 Bytes (0.00%)

The `SelectedNetworkController` state is cleared if any invalid
`networkConfigurationId`s are found in state. We are seeing reports of
this happening in production in v12.0.1.

The suspected cause is `NetworkController` state corruption. We
resolved a few cases of this in v12.0.1, but for users that were
affected by this, the invalid IDs may have propogated to the
`SelectedNetworkController` state already. That is what this migration
intends to fix.

Fixes #26309
@Gudahtt Gudahtt force-pushed the delete-invalid-ids-from-selected-network-controller-state branch from 990b597 to 26f7fa1 Compare August 14, 2024 21:24
@Gudahtt Gudahtt marked this pull request as ready for review August 14, 2024 21:24
Copy link

@DDDDDanica
Copy link
Contributor

LGTM ! The tests are very solid

@Gudahtt Gudahtt merged commit e3144c5 into develop Aug 14, 2024
86 of 87 checks passed
@Gudahtt Gudahtt deleted the delete-invalid-ids-from-selected-network-controller-state branch August 14, 2024 21:48
@github-actions github-actions bot locked and limited conversation to collaborators Aug 14, 2024
@metamaskbot metamaskbot added the release-12.4.0 Issue or pull request that will be included in release 12.4.0 label Aug 14, 2024
@metamaskbot
Copy link
Collaborator

Builds ready [26f7fa1]
Page Load Metrics (144 ± 159 ms)
PlatformPageMetricMin (ms)Max (ms)Average (ms)StandardDeviation (ms)MarginOfError (ms)
ChromeHomefirstPaint731671042813
domContentLoaded97124126
load401582144331159
domInteractive97124126
Bundle size diffs
  • background: 0 Bytes (0.00%)
  • ui: 0 Bytes (0.00%)
  • common: 0 Bytes (0.00%)

@gauthierpetetin gauthierpetetin added release-12.3.0 Issue or pull request that will be included in release 12.3.0 and removed release-12.4.0 Issue or pull request that will be included in release 12.4.0 labels Sep 11, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
release-12.3.0 Issue or pull request that will be included in release 12.3.0 team-wallet-framework
Projects
None yet
5 participants