)]}'
{
  "commit": "c2a4f8e7ebcceeb40048f1102bb383e3bfae3821",
  "tree": "8f4ddcd525c27398dcfbb3cc4cd4dd316663b4ae",
  "parents": [
    "7f2e70ec5af66aab9147004a3257717d4d83ec90"
  ],
  "author": {
    "name": "Danny Tuppeny",
    "email": "danny@tuppeny.com",
    "time": "Thu Jun 22 16:36:55 2023 +0000"
  },
  "committer": {
    "name": "Commit Queue",
    "email": "dart-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Jun 22 16:36:55 2023 +0000"
  },
  "message": "[dds/dap] Ensure breakpoint modifications do not drop resolution events\n\nWhen adding new breakpoints, DAP clients send a full new set of breakpoints which results in us removing and re-adding all breakpoints (for a file).\n\nWhen we re-add a breakpoint that already existed, we would sometimes get the BreakpointAdded event _before_ the addBreakpointWithScriptUri request completed. We couldn\u0027t process the event because without the original request completing we could not map the VM breakpoint back to the clients breakpoint to generate the event.\n\nThis could result in resolution events being lost, and breakpoints becoming unresolved when you modified them (depending on timing).\n\nThis change collects queues and replays any BreakpointAdded/BreakpointResolved events that arrived when the breakpoint ID is unknown, and when `addBreakpointWithScriptUri` completes, it immediately processes any items in this queue.\n\nFixes https://github.com/Dart-Code/Dart-Code/issues/4599\n\nChange-Id: I11daaf99b786ab94f1cc93f9fd38a4f1e241320f\nReviewed-on: https://dart-review.googlesource.com/c/sdk/+/310620\nCommit-Queue: Ben Konyi \u003cbkonyi@google.com\u003e\nReviewed-by: Ben Konyi \u003cbkonyi@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1661f3a7650b9d3dfe9cd381f8c4122ce4a2ce0b",
      "old_mode": 33188,
      "old_path": "pkg/dds/CHANGELOG.md",
      "new_id": "65125f17fd3dd875a76e27dc15cbc38bacc8c725",
      "new_mode": 33188,
      "new_path": "pkg/dds/CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "4f5da44a432c9a11467fb81c8ebb5adcf989f087",
      "old_mode": 33188,
      "old_path": "pkg/dds/lib/src/dap/isolate_manager.dart",
      "new_id": "4011ac940cd43c59049308490289a3658a60b9d8",
      "new_mode": 33188,
      "new_path": "pkg/dds/lib/src/dap/isolate_manager.dart"
    },
    {
      "type": "modify",
      "old_id": "e65118beb612a3435cf0b7f65f1b096e4de4344c",
      "old_mode": 33188,
      "old_path": "pkg/dds/test/dap/integration/debug_breakpoints_test.dart",
      "new_id": "e37a70ac4ba97a101046e0bdaec927823c47af56",
      "new_mode": 33188,
      "new_path": "pkg/dds/test/dap/integration/debug_breakpoints_test.dart"
    },
    {
      "type": "modify",
      "old_id": "98ab4f89059b43ffd0ffcaf536d329144d38c737",
      "old_mode": 33188,
      "old_path": "pkg/dds/test/dap/integration/test_client.dart",
      "new_id": "5edf2e16e946a9e981c1bd79af7c19fa9323a44d",
      "new_mode": 33188,
      "new_path": "pkg/dds/test/dap/integration/test_client.dart"
    },
    {
      "type": "modify",
      "old_id": "ee197f7dd25c8c6921105f2cafb23a38296aefdf",
      "old_mode": 33188,
      "old_path": "pkg/dds/test/dap/integration/test_scripts.dart",
      "new_id": "d0bdb888bc1348d81cf54fac1579c6c96478bd65",
      "new_mode": 33188,
      "new_path": "pkg/dds/test/dap/integration/test_scripts.dart"
    }
  ]
}
