)]}'
{
  "commit": "95a5b4ef90f9f7e1ab315a5a73135f2e6b09c929",
  "tree": "7a0b3b873540d3520830ec76911ca2d5354533de",
  "parents": [
    "829165e5e422ff2ac4dab99be81616f511ad3ae7"
  ],
  "author": {
    "name": "Fabio Ponciroli",
    "email": "Ponch78@gmail.com",
    "time": "Thu Apr 03 18:49:58 2025 +0200"
  },
  "committer": {
    "name": "Fabio Ponciroli",
    "email": "Ponch78@gmail.com",
    "time": "Thu Apr 03 18:55:44 2025 +0200"
  },
  "message": "Ensure failures are only incremented in RunnableWithMetrics\n\nTo maintain consistency, task and fetch ref failure counters should\nonly be incremented within RunnableWithMetrics.\n\nThe Runnable::run() method is the only place with visibility into the\nfinal outcome of a task, which can either complete successfully\nor fail.\n\nThe following metric should always converge to zero:\n\nplugins_pull_replication_tasks_started_total -\nplugins_pull_replication_tasks_completed_total -\nplugins_pull_replication_tasks_failed_total\n\nIntermediate statuses should continue to be handled outside the\nRunnable implementation, but final state metrics must be updated\nonly from within it.\n\nChange-Id: I2f07a12b7afca32d3d222d1c06262e4d34ae003f\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b1d553d3a2489c9373efd172e88fc83fe68ab379",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java",
      "new_id": "a5d1e9ea8136bc711df32a9ed3606283304c9236",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java"
    }
  ]
}
