)]}'
{
  "commit": "438a6240cdc5cc5a27a107177a85338edc3f1a6a",
  "tree": "107c230742e69b3a335b29cc0c715dd774b6682b",
  "parents": [
    "1433a9f19f1c038fa8133d81e61c93e58bc1b32a"
  ],
  "author": {
    "name": "shahan",
    "email": "shahan@google.com",
    "time": "Fri Sep 11 12:36:16 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Fri Sep 11 12:38:02 2026 -0700"
  },
  "message": "Remove isFailed shadow state, using Future as the single source of truth.\n\nPreviously, SkyframeLookup tracked failure using a separate isFailed boolean\nupdated after AbstractFuture.setException(). This introduced a TOCTOU race\nwindow, did not reflect cancellation status, and caused IllegalStateException\nin throwDependencyExceptionIfFailed() when abandon() raced with completed\nlookups.\n\nThis change:\n1. Removes isFailed from SkyframeLookup entirely.\n2. Evaluates lookup status directly via Futures.getDone() in\n   throwDependencyExceptionIfFailed(), handling ExecutionException and\n   CancellationException.\n\nPiperOrigin-RevId: 979961181\nChange-Id: Ia530a6cf9942e32adbc645c8e1b8b875fbe97876\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7e50be2b8108144457df47601edb837df2026633",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/SharedValueDeserializationContext.java",
      "new_id": "8ec9244b894a9528191a9b5e0501999550d46187",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/SharedValueDeserializationContext.java"
    },
    {
      "type": "modify",
      "old_id": "8836a97409f11ea808753206725e63082aff2060",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/SkyframeLookupContinuation.java",
      "new_id": "53566b374260f5602f1cc89add4246a690ad6eb1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skyframe/serialization/SkyframeLookupContinuation.java"
    },
    {
      "type": "modify",
      "old_id": "0dc66f7c1fa4b47edaef54366730714f47c6b96f",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/SkyValueRetrieverTest.java",
      "new_id": "c4460162e0ca2370ad9275886f3c71a8c9dd44e6",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/SkyValueRetrieverTest.java"
    },
    {
      "type": "modify",
      "old_id": "8b4be93052763cb37fdbf75e49a996be6415ef5e",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/SkyframeLookupCollectorTest.java",
      "new_id": "d2b5e1606bd05295f66e2701714090d4fa2a349f",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skyframe/serialization/SkyframeLookupCollectorTest.java"
    }
  ]
}
