)]}'
{
  "commit": "9bd2f039cdccd41b06e735404fcc3a13967c9024",
  "tree": "7355cf870bd926d4235522237a0b75a5d01bdcb6",
  "parents": [
    "f84156aa9c690d5ce5f473422deaba6ef441880c"
  ],
  "author": {
    "name": "bazel.build machine account",
    "email": "ci.bazel@gmail.com",
    "time": "Thu Oct 29 01:24:45 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Oct 29 01:24:45 2026 +0000"
  },
  "message": "[9.4.0] Don\u0027t release the repo contents cache lock that wasn\u0027t acquired (#31518) (#31674)\n\n### Description\n\n`BazelRepositoryModule.afterCommand` only releases the shared lock of\nthe local repo contents cache if the process holds it\n(`LocalRepoContentsCache#holdsSharedLock`), rather than whenever the\ncache is enabled.\n\n### Motivation\n\nIf `beforeCommand` rejected the cache path, e.g. because the output base\nlies inside it, it failed before acquiring the lock, and the release in\n`afterCommand` then crashed the server with an internal error (exit code\n37) instead of reporting the rejection. Reported in\nhttps://github.com/bazelbuild/bazel/pull/31452#issuecomment-5971506616.\n\nWork towards #31456\n\n### Build API Changes\n\nNo\n\n### Release Notes\n\nRELNOTES: None\n\nCloses #31518\n\n\nCOPYBARA_INTEGRATE_REVIEW\u003dhttps://github.com/bazelbuild/bazel/pull/31518\nfrom fmeum:repo-contents-cache-lock-release\n930b47a41d1cd32e7dee6c99ebd3db48c2bf335a\nPiperOrigin-RevId: 995832431\nChange-Id: I9807199432d7d243b6e6bb0affda025ccec47f1c\n\nCommit\nhttps://github.com/bazelbuild/bazel/commit/b3dbbc117475f91cc4dbb255a72aa8f648cc02d8\n\nCo-authored-by: Fabian Meumertzheim \u003cfabian@meumertzhe.im\u003e\nCo-authored-by: Ian (Hee) Cha \u003cheec@google.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6cc52401aac4fff2a30457125d8dd4e87538669e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java",
      "new_id": "8835aa2f2873d9944abee6ede48855a623f71b1e",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java"
    },
    {
      "type": "modify",
      "old_id": "1df4c5db479a932985b4740d1a8f0f3da7c3dac0",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/bazel/repository/cache/LocalRepoContentsCache.java",
      "new_id": "a44628526c1ead083bfb16feceafeebdcfc79efa",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/bazel/repository/cache/LocalRepoContentsCache.java"
    },
    {
      "type": "modify",
      "old_id": "204f676710c940fabfec50530498bb73814cd39d",
      "old_mode": 33188,
      "old_path": "src/test/py/bazel/bzlmod/repo_contents_cache_test.py",
      "new_id": "f2821172e747cffd491a589fb9c3840a498bd61a",
      "new_mode": 33188,
      "new_path": "src/test/py/bazel/bzlmod/repo_contents_cache_test.py"
    }
  ]
}
