-
Notifications
You must be signed in to change notification settings - Fork 28.8k
Fix issue where DevTools would not be immediately available when using --start-paused #126698
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
…g --start-paused Service extensions are unable to handle requests when the isolate they were registered on is paused. The DevTools launcher logic was waiting for some service extension invocations to complete before advertising the already active DevTools instance, but when --start-paused was provided these requests would never complete, preventing users from using DevTools to resume the paused isolate. Fixes #126691
It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact Hixie on the #hackers channel in Chat (don't just cc him here, he won't see it! He's on Discord!). If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix? Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing. |
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.
This looks reasonable, can you add a test?
That's the plan, I just wanted to make sure the existing checks didn't blow up first. |
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.
LGTM, though we should find a way to test this so that it does not regress.
Sorry for the delay on this, totally forgot I had this draft. I've gone ahead and added a regression test so this is ready for review (FYI @christopherfujino). |
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.
LGTM
auto label is removed for flutter/flutter, pr: 126698, due to - The status or check suite Linux analyze has failed. Please fix the issues identified (or deflake) before re-applying this label. |
auto label is removed for flutter/flutter, pr: 126698, due to - The status or check suite Mac tool_integration_tests_4_4 has failed. Please fix the issues identified (or deflake) before re-applying this label. |
@@ -116,6 +112,10 @@ class FlutterResidentDevtoolsHandler implements ResidentDevtoolsHandler { | |||
// report their URLs yet. Do so now. | |||
_residentRunner.printDebuggerList(includeVmService: false); | |||
} | |||
|
|||
final List<FlutterDevice?> devicesWithExtension = await _devicesWithExtensions(flutterDevices); |
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.
Simply moving this seems to cause a race condition in flutter error messages include a DevTools link
in test/integration.shard/overall_experience_test.dart
. The test relies on the DevTools message to trigger a hot reload, which causes an overflow error that includes the DevTools URI. Unfortunately, the DevTools URI can only be output after the service extensions here have finished executing. Unless we want to put a delay in the test logic, we'll need to handle the --start-paused
case separately here.
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.
@christopherfujino can you take a look at the updated changes when you have a chance?
auto label is removed for flutter/flutter, pr: 126698, Mergeability of pull request flutter/flutter/126698 could not be determined at time of merge.. |
…hen using --start-paused" (#128117) Reverts #126698 There are a bunch of tool crashes on CI that start with this commit. I'm not sure this PR is the cause because there is no backtrace from the tool on the crashes. The only error message is `Oops; flutter has exited unexpectedly: "Null check operator used on a null value`.
…hen using --start-paused (flutter/flutter#126698)
Roll Flutter from 3db9504 to 0b74153 (108 revisions) flutter/flutter@3db9504...0b74153 2023-06-03 [email protected] Roll Flutter Engine from 54293721816a to c838a1b05924 (2 revisions) (flutter/flutter#128161) 2023-06-03 [email protected] Roll Flutter Engine from 8769e9ce3a90 to 54293721816a (8 revisions) (flutter/flutter#128158) 2023-06-03 [email protected] Prefix for dart:ui multiview change (flutter/flutter#128152) 2023-06-02 [email protected] Roll dds dependency to 2.8.3 for expression evaluation upcoming fixes. (flutter/flutter#128124) 2023-06-02 [email protected] Roll Flutter Engine from f3f6a020595d to 8769e9ce3a90 (3 revisions) (flutter/flutter#128149) 2023-06-02 [email protected] Roll Flutter Engine from b4250acbf3ca to f3f6a020595d (3 revisions) (flutter/flutter#128147) 2023-06-02 [email protected] Reland "Remove obsolete drawShadow bounds workaround (#127052)" (flutter/flutter#127231) 2023-06-02 [email protected] Roll Flutter Engine from c6e9383f2143 to b4250acbf3ca (8 revisions) (flutter/flutter#128142) 2023-06-02 [email protected] Pre-migration for dart:ui multi view changes (flutter/flutter#128092) 2023-06-02 [email protected] Remove LiveTestRenderView (flutter/flutter#127882) 2023-06-02 [email protected] Roll Flutter Engine from 02d6fbb68b69 to c6e9383f2143 (15 revisions) (flutter/flutter#128119) 2023-06-02 [email protected] Tiny remove unnecessary method in text_selection.dart (flutter/flutter#127480) 2023-06-02 [email protected] Workaround for Dart VM timeout (flutter/flutter#127875) 2023-06-02 [email protected] Make --flutter-repo analyze whole repo (flutter/flutter#127990) 2023-06-02 [email protected] Roll Packages from f0513ae to 75085ed (3 revisions) (flutter/flutter#128121) 2023-06-02 [email protected] [Refactor] fix quote style in template (flutter/flutter#127762) 2023-06-02 [email protected] Roll Flutter Engine from 3a453f2ccb77 to 02d6fbb68b69 (14 revisions) (flutter/flutter#128089) 2023-06-02 [email protected] Fix typos in labels (flutter/flutter#128093) 2023-06-02 [email protected] Revert "Fix issue where DevTools would not be immediately available when using --start-paused" (flutter/flutter#128117) 2023-06-02 [email protected] Sync Lints (flutter/flutter#127976) 2023-06-02 [email protected] Updated TabBar and ToggleButtons examples (flutter/flutter#128088) 2023-06-02 [email protected] Text should still be centered when search bar height is less than 48 (flutter/flutter#128068) 2023-06-02 [email protected] Roll pub packages (flutter/flutter#128053) 2023-06-01 [email protected] Add `FilterChip.elevated`, `ChoiceChip.elevated`, & `ActionChip.elevated` variants (flutter/flutter#128049) 2023-06-01 [email protected] Updated custom ListTile examples (flutter/flutter#128071) 2023-06-01 [email protected] Fix issue where DevTools would not be immediately available when using --start-paused (flutter/flutter#126698) 2023-06-01 [email protected] Add error message when sliver overlap absorber is missing (flutter/flutter#128075) 2023-06-01 [email protected] Updated Menu examples (flutter/flutter#128080) 2023-06-01 [email protected] Add retry flag to flutter_test (flutter/flutter#125851) 2023-06-01 [email protected] [flutter_tools] Use process matcher for multidex test (flutter/flutter#127996) 2023-06-01 [email protected] Updated InputDecoratorExamples for M3 (flutter/flutter#128065) 2023-06-01 [email protected] Roll Flutter Engine from 7c0a639efd0a to 3a453f2ccb77 (1 revision) (flutter/flutter#128064) 2023-06-01 [email protected] migrate the package_autoroller from querying by label to title (flutter/flutter#128066) 2023-06-01 [email protected] Revised Floating Action Button examples (flutter/flutter#128058) 2023-06-01 [email protected] Roll Flutter Engine from fdd39c421fb9 to 7c0a639efd0a (2 revisions) (flutter/flutter#128056) 2023-06-01 [email protected] Roll Flutter Engine from c8e1a8d6fb57 to fdd39c421fb9 (1 revision) (flutter/flutter#128050) 2023-06-01 [email protected] [labeler] Remove use of any (flutter/flutter#128011) 2023-06-01 [email protected] [framework] remove reference to closed issue. (flutter/flutter#128007) 2023-06-01 [email protected] Roll Packages from 95bb793 to f0513ae (3 revisions) (flutter/flutter#128045) 2023-06-01 [email protected] Add fallback font to IconData class (flutter/flutter#127269) 2023-06-01 [email protected] [web] Assert route names start with / if using PathUrlStrategy (flutter/flutter#127986) 2023-06-01 [email protected] [tool] In `flutter doctor -v`, warn when Android Studio version could not be detected. (flutter/flutter#126395) 2023-06-01 [email protected] Roll Flutter Engine from 8339c71a963c to c8e1a8d6fb57 (1 revision) (flutter/flutter#128035) 2023-06-01 [email protected] Roll Flutter Engine from bc81133892a6 to 8339c71a963c (1 revision) (flutter/flutter#128034) 2023-06-01 [email protected] Roll Flutter Engine from e235f47164fa to bc81133892a6 (1 revision) (flutter/flutter#128026) 2023-06-01 [email protected] Fixes in Cupertino translations (flutter/flutter#127872) ...
…hen using --start-paused (#126698)" (#129368) **Original Description:** > Service extensions are unable to handle requests when the isolate they were registered on is paused. The DevTools launcher logic was waiting for some service extension invocations to complete before advertising the already active DevTools instance, but when --start-paused was provided these requests would never complete, preventing users from using DevTools to resume the paused isolate. > > Fixes #126691 **Additional changes in this PR:** The failures listed in #128117 appear to be related to a shutdown race. It's possible for the test to complete while the tool is in the process of starting and advertising DevTools, so we need to perform a check of `_shutdown` in `FlutterResidentDevtoolsHandler` before advertising DevTools. Before the original fix, this check was being performed immediately after invoking the service extensions, which creates an asynchronous gap in execution. With #126698, the callsite of the service extensions was moved and the `_shutdown` check wasn't, allowing for the tool to attempt to advertise DevTools after the DevTools server had been cleaned up. --------- Co-authored-by: Zachary Anderson <[email protected]>
…hen using --start-paused (flutter/flutter#126698)
…hen using --start-paused (flutter/flutter#126698)
…hen using --start-paused (flutter/flutter#126698)
…hen using --start-paused (flutter/flutter#126698)
Service extensions are unable to handle requests when the isolate they were registered on is paused. The DevTools launcher logic was waiting for some service extension invocations to complete before advertising the already active DevTools instance, but when --start-paused was provided these requests would never complete, preventing users from using DevTools to resume the paused isolate.
Fixes #126691