)]}'
{
  "commit": "f237141d2ea295bee091c5e33991bfa01d28ba2a",
  "tree": "44f273d3aecda894c7f04befc909617193ceb450",
  "parents": [
    "3bfdf3b354ae822628647997e43015744a7acda6"
  ],
  "author": {
    "name": "Ian (Hee) Cha",
    "email": "heec@google.com",
    "time": "Mon Nov 02 23:36:21 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Nov 02 23:36:21 2026 +0000"
  },
  "message": "[8.9.0] Add --experimental_max_repeated_lost_inputs to make the action-rewind… (#32354)\n\n…ing lost-input limit configurable\n(https://github.com/bazelbuild/bazel/pull/30164)\n\n## Problem\n\nAction rewinding gives up — failing the build with\n`LOST_INPUT_TOO_MANY_TIMES` / `LOST_OUTPUT_TOO_MANY_TIMES` — once the\nsame action loses the same input/output more than a hardcoded\n`MAX_REPEATED_LOST_INPUTS \u003d 20` times (`ActionRewindStrategy`).\n\nWe\u0027re rolling out `--rewind_lost_inputs`, and when the remote cache is\nunstable, spending up to 20 rewind cycles per lost input is the wrong\ntradeoff: we\u0027d rather **give up early and re-run the build without the\ncache** than grind against a cache that keeps evicting intermediate\nblobs (the \"20× slower\" path). Today the give-up threshold is hardcoded,\nso there is no way to fail fast short of patching Bazel.\n\n## Change\n\nAdds `--experimental_max_repeated_lost_inputs` (default `20`,\nbehavior-preserving), threaded through `BuildRequestOptions` →\n`SkyframeActionExecutor` (cached per build in `prepareForExecution`,\nexposed via `maxRepeatedLostInputs()`) → `ActionRewindStrategy`,\nmirroring the existing `--rewind_lost_inputs` wiring. Lower it to give\nup sooner — `0` fails on the first lost input. It governs both the\nlost-input and lost-top-level-output give-up checks. The\n`MAX_REPEATED_LOST_INPUTS` constant is retained as the default and test\nanchor.\n\n## Test\n\nThe existing `ineffectiveRewindingResultsInLostInputTooManyTimes`\n`RewindingTest` case is now parameterized with `@TestParameter({\"2\",\n\"20\"})`: it sets `--experimental_max_repeated_lost_inputs` to each value\nand asserts the same repeatedly-lost input causes give-up on attempt\nN+1, covering both a lowered limit and the default.\n\nCloses #30164.\n\nPiperOrigin-RevId: 950819794\nChange-Id: Ic3c34c791aec8f1944691fb4d609a9913d942297\n\n\u003c!--\nThank you for contributing to Bazel!\nPlease read the contribution guidelines: https://bazel.build/contribute\nand guidelines for AI-assisted contributions:\nhttps://bazel.build/contribute/ai-assisted-contributions\n--\u003e\n\n### Description\n\u003c!--\nPlease provide a brief summary of the changes in this PR.\n--\u003e\n\n### Motivation\n\u003c!--\nWhy is this change important? Does it fix a specific bug or add a new\nfeature?\nIf this PR fixes an existing issue, please link it here (e.g. \"Fixes\n#1234\").\n--\u003e\n\n### Build API Changes\n\u003c!--\nDoes this PR affect the Build API? (e.g. Starlark API, providers,\ncommand-line flags, native rules)\nIf yes, please answer the following:\n1. Has this been discussed in a design doc or issue? (Please link it)\n2. Is the change backward compatible?\n3. If it\u0027s a breaking change, what is the migration plan?\n--\u003e\n\nNo\n\n### Checklist\n\n- [ ] I have added tests for the new use cases (if any).\n- [ ] I have updated the documentation (if applicable).\n\n### Release Notes\n\n\u003c!--\nIf this is a new feature, please add \u0027RELNOTES[NEW]: \u003cdescription\u003e\u0027\nhere.\nIf this is a breaking change, please add \u0027RELNOTES[INC]: \u003creason\u003e\u0027 here.\nIf this change should be mentioned in release notes, please add\n\u0027RELNOTES: \u003creason\u003e\u0027 here.\n--\u003e\n\nRELNOTES: None\n\nCommit\nhttps://github.com/bazelbuild/bazel/commit/33a59c4ecbd526619a46487c59af83e349e2246f\n\nCo-authored-by: teaugene \u003cteaugene@uber.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a76e088eda46ce71d7013ef2d246be0940e2203a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/buildtool/BuildRequestOptions.java",
      "new_id": "db631b42f585bc6bfd1cee1c5eae57031e03fc26",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/buildtool/BuildRequestOptions.java"
    },
    {
      "type": "modify",
      "old_id": "9424270db2784ec9b7f76d0b10945ce551f36247",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java",
      "new_id": "af3d64ca82f6af8599409e53897678d41f1f5a67",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/SkyframeActionExecutor.java"
    },
    {
      "type": "modify",
      "old_id": "91267662651f8a78a639870fad4196b0f4229a46",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/rewinding/ActionRewindStrategy.java",
      "new_id": "6a3902615d027e9402a1a7e084bfbfd3f21e2f25",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/rewinding/ActionRewindStrategy.java"
    },
    {
      "type": "modify",
      "old_id": "ca28c0da953a90c11d2d24d00d1d666ff89ccd48",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/rewinding/BUILD",
      "new_id": "6e02f15b0b58ec7d91935a4d147a228e91af69f7",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/rewinding/BUILD"
    },
    {
      "type": "modify",
      "old_id": "7dd0c94b16d01e210fc854a4826b62b10004d0e8",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/rewinding/RewindingTest.java",
      "new_id": "d4a32693fb17a8a3579a50aaac432383e46b2fdd",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/rewinding/RewindingTest.java"
    },
    {
      "type": "modify",
      "old_id": "30ace25ee1365ff5ae8fd9bad9c1d936bf578c0f",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/rewinding/RewindingTestsHelper.java",
      "new_id": "e3bacd58e81740510da650d60d78e028f966254f",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/rewinding/RewindingTestsHelper.java"
    }
  ]
}
