)]}'
{
  "commit": "76ea83db5c98449c761e041caa7f463ef515595d",
  "tree": "f3909d0d37b9d8604dc28937b694f988a8a5167f",
  "parents": [
    "cbd585b91e9bdab73a5779cbcc1f02b4855cc216"
  ],
  "author": {
    "name": "bor_p",
    "email": "36397564+bor-p-s@users.noreply.github.com",
    "time": "Wed Sep 09 16:11:26 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Sep 09 14:11:26 2026 +0000"
  },
  "message": "Bound the BEP artifact-upload wait with a timeout (#2843)\n\n### Description\n\nAdds a `timeout` parameter to `execute_command()`, passed through to\n`subprocess.run`. `upload_test_logs_from_bep()` uses it on the\n`bazelci-agent artifact upload` call with a 2 hour limit; on timeout the\nprocess is killed, the failure is logged, and the function returns\nwithout re-raising, since the build\u0027s pass/fail result is already\ndecided by `bazel test` before this step runs -- a killed upload only\nloses debug artifacts, not the build outcome. The same timeout is\napplied to the `java.log` upload in the same function, which had the\nsame unbounded `execute_command()` call.\n\nThe 2 hour value is an estimate, not a measurement. The only\nnormal-runtime data available is from rules_scala itself (macOS\n`test_rules_scala`: 40-55 min); other projects on this shared fleet may\nrun longer, worth confirming with maintainers before treating this as\nfinal. A real fix inside `bazelci-agent` itself (detecting that the\nwriter process died) needs a new agent release; out of scope here.\n\n### Motivation\n\n\n[rules_scala#1906](https://github.com/bazel-contrib/rules_scala/issues/1906)\nfound jobs that stall inside `upload_test_logs_from_bep()` until\nBuildkite\u0027s 8 hour step timeout kills them. This stays invisible because\nthe build still ends up green (a fast retry on some builds, `soft_fail`\non others), so the job burns most of 8 hours doing nothing and nobody\nnotices.\n\nThe exact hang mechanism inside `bazelci-agent` remains unverified --\nthe leading theory (bazel exits before writing `lastMessage`, so the\nagent waits forever) failed to reproduce with the real binaries. That\u0027s\nwhy this bounds the wait from the outside instead of targeting a\nspecific mechanism.\n\n---------\n\nCo-authored-by: bor-p-s \u003cbpapevis@virtusity.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1ca70dcc778e5b14d9e9d9cb728a811b54a10222",
      "old_mode": 33261,
      "old_path": "buildkite/bazelci.py",
      "new_id": "17c935220cf05db440acab248c9614c1d2ee40b5",
      "new_mode": 33261,
      "new_path": "buildkite/bazelci.py"
    },
    {
      "type": "modify",
      "old_id": "141d0552eba7de184b5bb02141140e2b6a2fc6d1",
      "old_mode": 33261,
      "old_path": "buildkite/bazelci_test.py",
      "new_id": "d3b7acae69d1d4e74c91d12c4b3a4a83e03b4129",
      "new_mode": 33261,
      "new_path": "buildkite/bazelci_test.py"
    }
  ]
}
