-
Notifications
You must be signed in to change notification settings - Fork 3.4k
[shared_preferences] Fix initialization race #4159
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
Conversation
During the NNBD transition, the structure of the completer logic in the initialization flow was incorrectly changed to set the field after an `await` instead of immediately. Fixes flutter/flutter#42407
Interesting. The setPrefix method is getting an unimplemented error on some tests now. |
I missed that only half of the tests were in the group that sets an instance during |
GitHub isn't showing my push here yet since it's having some kind of semi-outage at the moment, but it's up at main...stuartmorgan:packages:shared-prefs-init The test change looks enormous, but I just removed the generic group that most-but-not-all of the tests were in, so now they are all getting the same setup. (I'm not sure why the pattern in so many of our plugins is that there's a group containing all of the tests.) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm surprised this worked at all before.
Well, to hit this race you have to call I can't image that's a common use pattern. |
flutter/packages@a84b2c2...e13b8c4 2023-06-08 [email protected] [tool] Only run unit tests in Chrome for inline web (flutter/packages#4153) 2023-06-08 [email protected] [in_app_purchase] Make the _FeatureCard constructor const in the Android example app (flutter/packages#4162) 2023-06-08 [email protected] [shared_preferences] Fix initialization race (flutter/packages#4159) 2023-06-07 [email protected] [go_router] Refactors imperative APIs and browser history (flutter/packages#4134) 2023-06-07 [email protected] [various] Add `http` 1.0 compatibility (flutter/packages#4147) 2023-06-07 [email protected] [go_router_builder] Accept required parameters not in path (flutter/packages#4039) 2023-06-07 [email protected] Roll Flutter from 0b74153 to 8a5c22e (46 revisions) (flutter/packages#4160) 2023-06-07 [email protected] [pigeon] Require analyzer 5.13.0, prepare for NamedType refactoring. (flutter/packages#4127) 2023-06-07 [email protected] Roll Flutter (stable) from f92f441 to 682aa38 (1 revision) (flutter/packages#4157) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages-flutter-autoroll Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
During the NNBD transition, the structure of the completer logic in the initialization flow was incorrectly changed to set the field after an
await
instead of immediately.Also updates the error handling to handle
Error
the same way it currently handlesException
, which this change surfaced.Fixes flutter/flutter#42407
Pre-launch Checklist
dart format
.)[shared_preferences]
pubspec.yaml
with an appropriate new version according to the pub versioning philosophy, or this PR is exempt from version changes.CHANGELOG.md
to add a description of the change, following repository CHANGELOG style.///
).