)]}'
{
  "commit": "3c2e8cc8c76a6024341f14f3a5afc6ba2de7d392",
  "tree": "faed9c6929803eb3ee914f6bd4b403240d8f639d",
  "parents": [
    "e928e4fcc0f929cbe97ad497124094698183756d"
  ],
  "author": {
    "name": "Kaushik Lingarkar",
    "email": "klingarkar@nvidia.com",
    "time": "Thu Aug 06 17:39:33 2026 -0700"
  },
  "committer": {
    "name": "Kaushik Lingarkar",
    "email": "klingarkar@nvidia.com",
    "time": "Fri Aug 14 10:49:30 2026 -0700"
  },
  "message": "ProjectRepairer: Report an interrupted copy as InterruptedIOException\n\ncopy() declares InterruptedException, but the only one that escapes\ncomes from the halt() call in its own catch block, leaving copyInOrder()\nto catch an interrupt it takes no part in. The interrupt copy() does\ntake part in becomes a -1 exit code, and as throwing\nInterruptedException clears the interrupt status, nothing above can tell\nan interrupted transfer from a failed one, or that the repair was\ncancelled at all.\n\nAbsorb the halt() interrupt where it happens, and report the copy\u0027s own\ninterrupt as InterruptedIOException, which is what java.io raises when\nan interrupt terminates a transfer. It unwinds the repair, so the copies\nand destinations left after a cancel are skipped instead of running to\ncompletion.\n\nThe SSH command lets it escape, which BaseCommand already treats as the\nclient having dropped off, exiting 127 without logging. Auto-repair logs\nthe interrupt and skips its follow-up replication.\n\nChange-Id: Ie61e0329aaa3131c8ac1f8b4932e57e48c5e5e0b\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1be875898069d9d18b25a843caa8b0c2456ba35a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/AutoRepairHandler.java",
      "new_id": "b1462c4f9d601356fac107f8ff4f44e9d613df57",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/AutoRepairHandler.java"
    },
    {
      "type": "modify",
      "old_id": "669a37479bc988246bba20bc73c7d17ae4bdeb46",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/ProjectRepairer.java",
      "new_id": "b9b8f82f2e9ae71c980c04d9db9f548012863761",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/ProjectRepairer.java"
    },
    {
      "type": "modify",
      "old_id": "dd5e5064fe8630e786810d21e473e2eb492acefc",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/RepairCommand.java",
      "new_id": "ad6648a67fc69344dba6d80cb7a4ba8aec2f475b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/RepairCommand.java"
    }
  ]
}
