)]}'
{
  "commit": "37e52ff6805565e0988be430f920c7d8650bbb73",
  "tree": "efb63e9a784d40f8e8197a30cbede3577a611456",
  "parents": [
    "1a90add1c7cfe5182daf1b89e2297e1dbb59151e"
  ],
  "author": {
    "name": "twerth CA",
    "email": "twerth@google.com",
    "time": "Thu Aug 27 00:20:13 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Thu Aug 27 00:21:54 2026 -0700"
  },
  "message": "Return REMOTE_CACHE_EVICTED exit code on ThinLTO imports cache eviction.\n\nThinLTO backend compilation reads `.imports` files during Skyframe input discovery prior to spawn execution. When remote cache eviction drops an imports file, `LtoBackendAction.computeImports` caught the cache miss as a generic `IMPORTS_READ_IO_EXCEPTION` (exit code 1). Because Bazel only triggers `--experimental_remote_cache_eviction_retries` when an action returns `REMOTE_CACHE_EVICTED` (exit code 39), builds fail permanently instead of retrying.\n\nIn `LtoBackendAction.computeImports`, check if an `IOException` reading the imports file is a `CacheNotFoundException` or `BulkTransferException` cache miss. If so, return `Spawn.Code.REMOTE_CACHE_EVICTED` so that input discovery failures from evicted cache entries trigger build retries.\n\nTested:\nAdded `discoverInputs_cacheNotFoundException_throwsRemoteCacheEvictedCode` and `discoverInputs_bulkTransferException_throwsRemoteCacheEvictedCode` in `LtoBackendActionTest`.\nPiperOrigin-RevId: 971771054\nChange-Id: I6c9b84c9a55d727cd930319178a946332df2d977\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5a2e91c3cb622369a097d17b29096f2caa14fa6d",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD",
      "new_id": "2e15200b5626caa9be93a9505a72c46c21f19355",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/BUILD"
    },
    {
      "type": "modify",
      "old_id": "b3291affde2f57d7b57cb77a67e334ffe82222a8",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java",
      "new_id": "4b7959f99e2944d42e730f5757c6b4392391b8f2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java"
    },
    {
      "type": "modify",
      "old_id": "092d71ce00b604c49e8093ea3b8ce867d2472a62",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD",
      "new_id": "a72fa10cd7f7c676029d1f3e33fe95b960433408",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD"
    },
    {
      "type": "modify",
      "old_id": "31b61b0dcf3c9d347af10faf0f4af1dd15e6db6e",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java",
      "new_id": "c84f964182754e2204e5a336cfdba09661250215",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java"
    }
  ]
}
