)]}'
{
  "commit": "3b1b656d09eb2dd73f94f50772bbeb39d167b540",
  "tree": "51153b659f080a95ba95fd704958a6a31bca5fd7",
  "parents": [
    "0df288afccb53b7abbe4f2ee90f68c80e9dcd2c7"
  ],
  "author": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Thu Jul 18 14:52:48 2019 +0000"
  },
  "committer": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Thu Jul 18 23:45:24 2019 +0000"
  },
  "message": "Revert \"Remove replication event from pending when runway is allowed\"\n\nThis reverts commit e780ae61cbbba3f88558a3620065d1fcdc0768c8.\n\nReason for revert: Creates potentially infinite Heap consumption and\nJVM crash when a PushOp is denied to use the runway.\n\nThe problem is caused by the late removal of the PushOp from the\nlist of pending operations, which causes the subsequent reschedule\nto find the same operation and double the number of replication states\nassociated with it. If the loop happens multiple times, the generated\nconsumption grows exponentially causing the JVM to enter a series\nof continuous stop-the-world GC that eventually lead to complete\nblock of the JVM activity.\n\nThe method `requestRunway` is thus not telling the truth because\nit is actually relying on the fact that the PushOne operation is\nremoved also from the pending list, independently from its runway\nconcession status.\n\nChange-Id: I6097bc7ad16c8bcc86a7d30af7d2ad331728712d\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "895e1acbe3e4de91d9b7ee68f54bf020bdff639a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java",
      "new_id": "0a06093efc5f44a20822cbb5f2bef85a710adf84",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java"
    }
  ]
}
