)]}'
{
  "commit": "10d795c8503a00b216eb0027d5362720787958b5",
  "tree": "a977556ee5a83996a1be39072115304aeafaf2a6",
  "parents": [
    "146c7de7473132601f2eed711f9af878252b10fe"
  ],
  "author": {
    "name": "Fabian Meumertzheim",
    "email": "fabian@meumertzhe.im",
    "time": "Wed Oct 14 15:02:41 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Wed Oct 14 15:04:39 2026 -0700"
  },
  "message": "Let the remote branch finish when the local branch lost an input (#31536)\n\n### Description\n\nWhen the local branch fails with a `LostInputsExecException`, which arises while its execution is set up, before a spawn runs or the output lock is taken, it no longer cancels the remote branch. `DynamicSpawnStrategy.waitBranches` awaits the remote branch in that case and returns its result; the lost input is reported, with the remote branch\u0027s failure attached as a suppressed exception, only if the remote branch doesn\u0027t produce a result either.\n\n### Motivation\n\nWith dynamic execution, a source file of a repository that was lost from the remote cache made the local branch fail during input prefetching, which cancelled a remote branch that had a valid action result for the same spawn and needed none of the file\u0027s bytes. That forced a repository refetch, which fails when the file\u0027s origin is unavailable, although remote-only execution succeeds. Reported in https://github.com/bazelbuild/bazel/pull/31452#issuecomment-5974592151.\n\nWork towards #31456\n\n### Build API Changes\n\nNo\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #31536\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/bazel/pull/31536 from fmeum:dynamic-lost-inputs-remote-branch d99ccd91413c64a7c1c8bffc1a8d2643a79b8422\nPiperOrigin-RevId: 999646410\nChange-Id: I0aa9159a5b1ef68201055f1c03d2828348f75513\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b36839c4a0f5139ba6c9a6a0f31941e086812265",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/dynamic/Branch.java",
      "new_id": "cf53737aa46e7ad8839c7d932b70cda1c67a49a4",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/dynamic/Branch.java"
    },
    {
      "type": "modify",
      "old_id": "0020b2f417c6d90cde65371cf9c6e6a3b34b5876",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategy.java",
      "new_id": "565ca85b4d78c67cbc0bc04b8ed3807489769a78",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategy.java"
    },
    {
      "type": "modify",
      "old_id": "b56b39cce3cb23b712b0cac19988a238472d04d3",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/dynamic/BUILD",
      "new_id": "122475fc5f81ec87a412431671e8b5402c725c85",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/dynamic/BUILD"
    },
    {
      "type": "modify",
      "old_id": "a82fb4a4d9bde6d59d9ed95c90d308b39f111675",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategyUnitTest.java",
      "new_id": "cdae5de296b4fe78144da57ad8bf90993b389ded",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/dynamic/DynamicSpawnStrategyUnitTest.java"
    }
  ]
}
