Skip to content

Conversation

srujzs
Copy link
Contributor

@srujzs srujzs commented Aug 11, 2025

Like #2640, we should wait until scripts are parsed before continuing a hot restart. Otherwise, metadata can be stale and breakpoints may be placed in the wrong files.

For now, we only do this in the DDC library bundle format as we don't have a way to fetch the changed libraries in the AMD format.

  • hotReloadSourcesUri is repurposed to be reloadedSourcesUri, which is a breaking change. This file is now used for both hot restart and hot reload to detail the changed files across either.
  • Injected client is changed to return the mapping within this uri when a hot reload is executed.
  • Completer is added to ChromeProxyService to wait until all scripts are parsed before recreating the isolate, which will reinitialize all metadata.
  • Fix a preexisting race condition where we don't listen for a kIsolateStart event early enough.

This should help fix the Windows flakes for hot_restart_breakpoints_test.dart.

srujzs added 2 commits August 11, 2025 14:17
…S 25.0.0

Like dart-lang#2640, we
should wait until scripts are parsed before continuing a hot restart.
Otherwise, metadata can be stale and breakpoints may be placed in the
wrong files.

For now, we only do this in the DDC library bundle format as we don't
have a way to fetch the changed libraries in the AMD format.

- hotReloadSourcesUri is repurposed to be reloadedSourcesUri, which is
a breaking change. This file is now used for both hot restart and hot
reload to detail the changed files across either.
- Injected client is changed to return the mapping within this uri when
a hot reload is executed.
- Completer is added to ChromeProxyService to wait until all scripts are
parsed before recreating the isolate, which will reinitialize all metadata.
- Fix a preexisting race condition where we don't listen for a kIsolateStart
event early enough.

This should help fix the Windows flakes for hot_restart_breakpoints_test.dart.
Copy link
Contributor

@jyameo jyameo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Thanks Srujan

Copy link
Contributor

@nshahan nshahan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's coordinate on publishing because I have some changes I want in v25.0.0 as well.

@nshahan
Copy link
Contributor

nshahan commented Aug 12, 2025

FYI my change that I want to include in v25.0.0: #2660

@srujzs srujzs merged commit c0492f1 into dart-lang:main Aug 13, 2025
85 of 86 checks passed
copybara-service bot pushed a commit to dart-lang/sdk that referenced this pull request Aug 14, 2025
Revisions updated by `dart tools/rev_sdk_deps.dart`.

ai (https://github.com/dart-lang/ai/compare/6b4b2bc..ee5b2b2):
  ee5b2b2  2025-08-13  Greg Spencer  Stop reporting errors for non-zero exits (dart-lang/ai#262)

protobuf (https://github.com/dart-lang/protobuf/compare/0b73b0d..6e9c9f4):
  6e9c9f4  2025-08-12  Ömer Sinan Ağacan  Improve clone and deepCopy tests (google/protobuf.dart#1039)
  086dfab  2025-08-12  Ömer Sinan Ağacan  Make proto3_json.dart aware of well known types (google/protobuf.dart#1037)
  277b45a  2025-08-12  Ömer Sinan Ağacan  Release protobuf 4.2.0 (google/protobuf.dart#1038)

shelf (https://github.com/dart-lang/shelf/compare/2a46b4f..400fc39):
  400fc39  2025-08-11  Kevin Moore  [shelf_router_generator] latest deps, prepare release (dart-lang/shelf#480)

web (https://github.com/dart-lang/web/compare/72cdd84..4310354):
  4310354  2025-08-12  Nikechukwu  [interop] Add Support for JSDoc Documentation (dart-lang/web#435)

webdev (https://github.com/dart-lang/webdev/compare/94c172c..c0492f1):
  c0492f1b  2025-08-13  Srujan Gaddam  [dwds] Wait for scripts to be parsed on a hot restart and publish DWDS 25.0.0 (dart-lang/webdev#2667)
  595f8768  2025-08-13  Nicholas Shahan  [dwds] Cleanup unused null safety related fields (dart-lang/webdev#2660)
  b43030e2  2025-08-12  Jessy Yameogo  Implemented hot restart over websocket (dart-lang/webdev#2666)

Change-Id: I1cb2a0c2ed693bb740ab4c40ea70678b03eec596
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/445340
Auto-Submit: Devon Carew <[email protected]>
Commit-Queue: Konstantin Shcheglov <[email protected]>
Reviewed-by: Konstantin Shcheglov <[email protected]>
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.

3 participants