)]}'
{
  "commit": "cd1173f1483e5cfc9cf679be9d4f2be0ffe69340",
  "tree": "aafa3f8ee5178beb28c6ef1043f1fb45011a6168",
  "parents": [
    "288da6c0b1f8b375939719112b3050d7148385ea"
  ],
  "author": {
    "name": "Fabian Meumertzheim",
    "email": "fabian@meumertzhe.im",
    "time": "Tue Sep 22 20:25:06 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 22 11:25:06 2026 -0700"
  },
  "message": "[8.8.1] Look up directory input children in the input metadata cache again (#31178)\n\n\u003c!--\nThank you for contributing to Bazel!\nPlease read the contribution guidelines: https://bazel.build/contribute\n--\u003e\n\n### Description\nThe 8.x adaptation in #30353 made `DirectoryTreeBuilder` bypass the\nper-build `SingleBuildFileCache`, which means that every each Merkle\ntree computation now stat\u0027ed and looked up the digest of every file in\nthe directory again, possibly recomputing the digest if the digest cache\nwasn\u0027t sufficiently large. Builds with large source directories shared\nby many actions became noticeably slower in 8.8.0 compared to 8.7.0.\n\n`DirectoryTreeBuilder` now consults the input metadata provider first\nand only falls back to digesting the file directly when the lookup\nfails, which is the case for repos that are only available in the remote\nrepo contents cache\u0027s overlay file system.\n\n`master` is not affected as `MerkleTreeComputer` caches the subtree of a\nsource directory keyed by its metadata.\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- [x] 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: Fixed a regression that caused source directories to be slower\nto digest for remote execution and cache lookups.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "615893cce2c16de71f58b14fa34e26f7d331e759",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeBuilder.java",
      "new_id": "d8aa0dc1bc33e4e092c032abc63d34ab077a9e11",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeBuilder.java"
    },
    {
      "type": "modify",
      "old_id": "0bb68de76d8ae15f75bb346658535ea20d5ffa3c",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/remote/merkletree/ActionInputDirectoryTreeTest.java",
      "new_id": "ea2863751fbdb5b1c41159667257a99ff40cacd7",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/remote/merkletree/ActionInputDirectoryTreeTest.java"
    },
    {
      "type": "modify",
      "old_id": "fe0d91a5faf6c4dc1ca2ba217e9d85463b24e887",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/remote/merkletree/BUILD",
      "new_id": "e0a865bc61bb94ae44e0efe509db1e06fb10623c",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/remote/merkletree/BUILD"
    }
  ]
}
