)]}'
{
  "commit": "97b68a0bb62b7528bc3491c7949d6804223c2b82",
  "tree": "30aa4b653808ff809ec1870507bb980b5be2ea16",
  "parents": [
    "3f7fb0dd45372b97fa050df7b277e706595621f3"
  ],
  "author": {
    "name": "Andrew Grieve",
    "email": "agrieve@google.com",
    "time": "Tue Jun 17 18:19:06 2025 -0700"
  },
  "committer": {
    "name": "GN LUCI",
    "email": "gn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Thu Jun 19 05:26:06 2025 -0700"
  },
  "message": "Reland #2 \"Run Target::OnResolve() on background threads\"\n\nThis reverts commit 54169531ed6da64425ad6e8e9535945c8f6220d0.\n\nReason for reland: Removed the PointerSet that was triggering an\ninfinite loop in HashTableBase::NodeLookup(). I\u0027ll fix that bug\nseparately.\n\nBug: chromium:398002893\nOriginal change\u0027s description:\n\u003e Revert \"Reland \"Run Target::OnResolve() on background threads\"\"\n\u003e\n\u003e This reverts commit 0fcc64f7d006474a026d8f78f3a95dac84cd97ea.\n\u003e\n\u003e Reason for revert: Failing to roll into chromium:\n\u003e https://chromium-review.googlesource.com/c/chromium/src/+/6641508\n\u003e\n\u003e Bug: chromium:398002893\n\u003e Original change\u0027s description:\n\u003e \u003e Reland \"Run Target::OnResolve() on background threads\"\n\u003e \u003e\n\u003e \u003e This reverts commit 8ea3af9118a65387fe4d8428db6f59c5927dd55a.\n\u003e \u003e\n\u003e \u003e Reason for reland: Fixed test\n\u003e \u003e\n\u003e \u003e Bug: chromium:398002893\n\u003e \u003e Original change\u0027s description:\n\u003e \u003e \u003e Revert \"Run Target::OnResolve() on background threads\"\n\u003e \u003e \u003e\n\u003e \u003e \u003e This reverts commit 3ef7da38dcfb63212d97a987d5c60374134e1007.\n\u003e \u003e \u003e\n\u003e \u003e \u003e Reason for revert: Failing tests /w asan (and on release bots)\n\u003e \u003e \u003e\n\u003e \u003e \u003e Bug: chromium:398002893\n\u003e \u003e \u003e Original change\u0027s description:\n\u003e \u003e \u003e \u003e Run Target::OnResolve() on background threads\n\u003e \u003e \u003e \u003e\n\u003e \u003e \u003e \u003e OnResolve() is often trivial, but it can also not be, as there are a lot\n\u003e \u003e \u003e \u003e of possible checks that it can do.\n\u003e \u003e \u003e \u003e\n\u003e \u003e \u003e \u003e \"gn --tracelog gen\" now shows all threads being always busy.\n\u003e \u003e \u003e \u003e\n\u003e \u003e \u003e \u003e Hyperfine Benchmark from Chromium:\n\u003e \u003e \u003e \u003e Before:\n\u003e \u003e \u003e \u003e   Time (mean ± σ):      7.349 s ±  0.251 s    [User: 66.903 s, System: 50.486 s]\n\u003e \u003e \u003e \u003e   Range (min … max):    6.974 s …  7.655 s    10 runs\n\u003e \u003e \u003e \u003e\n\u003e \u003e \u003e \u003e After:\n\u003e \u003e \u003e \u003e   Time (mean ± σ):      6.563 s ±  0.313 s    [User: 67.873 s, System: 53.023 s]\n\u003e \u003e \u003e \u003e   Range (min … max):    6.186 s …  7.281 s    10 runs\n\u003e \u003e \u003e \u003e Bug: chromium:398002893\n\u003e \u003e \u003e \u003e Change-Id: I30bd9b7541a961b1d0cef80c229b0a3f24752d3e\n\u003e \u003e \u003e \u003e Reviewed-on: https://gn-review.googlesource.com/c/gn/+/19020\n\u003e \u003e \u003e \u003e Reviewed-by: David Turner \u003cdigit@google.com\u003e\n\u003e \u003e \u003e \u003e Commit-Queue: David Turner \u003cdigit@google.com\u003e\n\u003e \u003e \u003e \u003e Reviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\n\u003e \u003e \u003e\n\u003e \u003e \u003e # Not skipping CQ checks because original CL landed \u003e 1 day ago.\n\u003e \u003e \u003e\n\u003e \u003e \u003e Bug: chromium:398002893\n\u003e \u003e \u003e Change-Id: I4ca499e210288b46a91209967a635004c9d0ad68\n\u003e \u003e \u003e Reviewed-on: https://gn-review.googlesource.com/c/gn/+/19060\n\u003e \u003e \u003e Reviewed-by: Andrew Grieve \u003cagrieve@google.com\u003e\n\u003e \u003e \u003e Commit-Queue: Roland McGrath \u003cmcgrathr@google.com\u003e\n\u003e \u003e \u003e Reviewed-by: Roland McGrath \u003cmcgrathr@google.com\u003e\n\u003e \u003e\n\u003e \u003e # Not skipping CQ checks because this is a reland.\n\u003e \u003e\n\u003e \u003e Bug: chromium:398002893\n\u003e \u003e Change-Id: Ia052c4fb4182bf879e418effcf17f27868131be2\n\u003e \u003e Reviewed-on: https://gn-review.googlesource.com/c/gn/+/19080\n\u003e \u003e Commit-Queue: Andrew Grieve \u003cagrieve@google.com\u003e\n\u003e \u003e Reviewed-by: David Turner \u003cdigit@google.com\u003e\n\u003e\n\u003e TBR\u003dmcgrathr@google.com,tikuta@google.com,agrieve@google.com,digit@google.com,gn-scoped@luci-project-accounts.iam.gserviceaccount.com\n\u003e\n\u003e No-Presubmit: true\n\u003e No-Tree-Checks: true\n\u003e No-Try: true\n\u003e Bug: chromium:398002893\n\u003e Change-Id: I85d6f9b25463afddb8e9c31dd7568170c12c0232\n\u003e Reviewed-on: https://gn-review.googlesource.com/c/gn/+/19120\n\u003e Commit-Queue: Andrew Grieve \u003cagrieve@google.com\u003e\n\u003e Reviewed-by: Andrew Grieve \u003cagrieve@google.com\u003e\n\u003e Reviewed-by: David Turner \u003cdigit@google.com\u003e\n\n# Not skipping CQ checks because original CL landed \u003e 1 day ago.\n\nBug: chromium:398002893\nChange-Id: I7122869f620b2a9e8e9c8d5a224ee46431e3c9c2\nReviewed-on: https://gn-review.googlesource.com/c/gn/+/19140\nReviewed-by: Takuto Ikuta \u003ctikuta@google.com\u003e\nCommit-Queue: Andrew Grieve \u003cagrieve@google.com\u003e\nReviewed-by: David Turner \u003cdigit@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dfd14865b946358b625dd8373a5f56e83adc9c55",
      "old_mode": 33188,
      "old_path": "src/gn/analyzer_unittest.cc",
      "new_id": "5952562dd81c46f5b35656732c97779862cbde56",
      "new_mode": 33188,
      "new_path": "src/gn/analyzer_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "1f3ecd8ff50643f85e0e1ab3ca446c1e94982dfe",
      "old_mode": 33188,
      "old_path": "src/gn/builder.cc",
      "new_id": "17f5101c57804da7550755933bba286245c39d10",
      "new_mode": 33188,
      "new_path": "src/gn/builder.cc"
    },
    {
      "type": "modify",
      "old_id": "a9c01aa491dec9cc5e395a36fbb65406e35e4a71",
      "old_mode": 33188,
      "old_path": "src/gn/builder.h",
      "new_id": "67763630fa10eb4d47cb645a2e42812147d95fe2",
      "new_mode": 33188,
      "new_path": "src/gn/builder.h"
    },
    {
      "type": "modify",
      "old_id": "59068a6e8f14cc93d3167065eea8d1261418304a",
      "old_mode": 33188,
      "old_path": "src/gn/builder_unittest.cc",
      "new_id": "59b58f8130ffddc1512667386950f2ae7141d536",
      "new_mode": 33188,
      "new_path": "src/gn/builder_unittest.cc"
    },
    {
      "type": "modify",
      "old_id": "dd1a60662fbf1376025c50946693155313c81541",
      "old_mode": 33188,
      "old_path": "src/gn/item.h",
      "new_id": "4a6e193bfa8c1bf6061e36d0385d164fb7c35425",
      "new_mode": 33188,
      "new_path": "src/gn/item.h"
    },
    {
      "type": "modify",
      "old_id": "6525f33ec3ae8601f978c9a96b8fef14aeb7c253",
      "old_mode": 33188,
      "old_path": "src/gn/scheduler.cc",
      "new_id": "9265b517929c6f9ef44007cefd499c3dc011f2f3",
      "new_mode": 33188,
      "new_path": "src/gn/scheduler.cc"
    },
    {
      "type": "modify",
      "old_id": "cf29fe86ddc2c8900ea1a7b8888f178f3eb11f6e",
      "old_mode": 33188,
      "old_path": "src/gn/scheduler.h",
      "new_id": "b90814f29170f9ed024f25be9cb79d63bfd9ac8d",
      "new_mode": 33188,
      "new_path": "src/gn/scheduler.h"
    }
  ]
}
