)]}'
{
  "commit": "ee867cafde59ff6e02c2a1cef07a5fb82423e9ac",
  "tree": "8896ed4e21bc91610ac97f2a2fc2b89c8c6a779e",
  "parents": [
    "aba8c72aaf29d0ece59779dc59e4ed6e97c401a0"
  ],
  "author": {
    "name": "Saša Živkov",
    "email": "sasa.zivkov@sap.com",
    "time": "Fri Oct 12 16:24:03 2018 +0200"
  },
  "committer": {
    "name": "David Pursehouse",
    "email": "dpursehouse@collab.net",
    "time": "Wed Jul 31 23:54:10 2019 +0000"
  },
  "message": "Remove the NewProjectCreatedListener implementation\n\nInitial version of this plugin implemented the NewProjectCreatedListener\nin order to create missing repositories in the replication targets. This\nwas the only way how replication plugin created missing repositories.\n\nSince I4e587cdfca09445c9b1c528b2f1edae0944aec68, if during the\nreplication of a ref it is found that the repository missing on the\nremote site it will be automatically created. This means, that since\nthat change there are two ways a repository is created on the remote\nsite:\n1: from the NewProjectCreatedListener.onNewProjectCreated\n2: during ref replication when the repository is missing\n\nThere are two major differences in how cases 1 and 2 are invoked. In the\ncase 1 the remote repository creation is performed from the calling\nthread, which means from the Gerrit core thread which invokes\nNewProjectCreatedListener(s). In the case 2, the creation of the remote\nrepository is done from the replication queue thread which was\nprocessing the ref replication. Note that replication tasks are created\nwith an additional child injector [1] which provides additional bindings\navailable for injection into the classes implementing the replication\nand repository creation.  These binding are, however, not available when\nthe repository creation is processed from the Gerrit core thread\ninvoking NewProjectCreatedListener(s).\n\nRemoving the NewProjectCreatedListener implementation removes this\nasymmetry and makes sure that all replication relevant steps, including\nrepository creation, are processed from replication queue threads.\n\n[1] https://gerrit.googlesource.com/plugins/replication/+/871da5aa023bdfd03a3b943f7f6b82c7e0f16341/src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java#189\n\nChange-Id: I32e7aa632ffe0e94eb525f7f2c007fbb88569004\n(cherry picked from commit c16fe9c5a6da6c23dbf45a533f788dcc527e209c)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1405a12348a160948dc977ccf8f1c967f678cab9",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationModule.java",
      "new_id": "464e37a4e1d51965fba6c7aae94a0b04f3022925",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationModule.java"
    },
    {
      "type": "modify",
      "old_id": "03b7ad2087cbc04599ccdfb2dceb509c706e10a3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java",
      "new_id": "2c62b4e7e5ed4a7a49e929c60e2f4c2dcf1fb5a8",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/ReplicationQueue.java"
    }
  ]
}
