)]}'
{
  "commit": "becf2f8b18c581e7c4403274911e3e6a25e9c603",
  "tree": "02c953f97afa8b1dac8c816534ec8e82babb3c8f",
  "parents": [
    "e490c2778bde2de9de8f0ef67b16f1d5440f0d93"
  ],
  "author": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Mon Oct 09 23:32:27 2023 +0100"
  },
  "committer": {
    "name": "Luca Milanesio",
    "email": "luca.milanesio@gmail.com",
    "time": "Mon Oct 16 15:12:37 2023 +0100"
  },
  "message": "Do not rely on async/wait for synchronous fetch replication\n\nBefore this change, the request for a sync FetchAction was triggering\nan async schedule of a replication task, with a replication delay of\nzero.\n\nThe consequence was the blocking of the client thread for an async\nreplication that, potentially, could have been stuck in the queue\nwaiting for other async replication to complete.\nScheduling a replication task does not guarantee that the fetch will\nstart immediately because it is influenced by the whole logic behind the\nreplication queue mechanism:\n- waiting for the runway\n- being aggregated with an existing pending task\n- appended to the bottom of the replication queue\n\nWhen the client requests a sync replication, it typically has other\nclient resources associated and locked that won\u0027t tolerate the async\nexecution. Faking a sync execution with async/wait for a Future to\ncomplete would not allow the client resources to be released.\n\nSkip the replication queue altogether and rely on the direct\nFetchOp execution when the client REST-API FetchAction call has\nrequested synchronous execution.\n\nBug: Issue 304123378\nChange-Id: Ia9171dc9525f2543ba16b1eb78308b0580839cbf\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "42310ffe906eebe4115e07df6eef9b772cd46f18",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/FetchAll.java",
      "new_id": "5a7362aaf6e9064d67a047c4c004c2395548fd64",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/FetchAll.java"
    },
    {
      "type": "modify",
      "old_id": "3cd1271cf6c81cb787cf06a69e5dfb3100e00ea4",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/FetchOne.java",
      "new_id": "370f2fb034072f58e337b546295c37b1c1f2282f",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/FetchOne.java"
    },
    {
      "type": "modify",
      "old_id": "5cf8bb615442839b1c548c0e263f53de96bb9344",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/OnStartStop.java",
      "new_id": "d8c4a8df832eb056b2ad2493a912db7ccb308de1",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/OnStartStop.java"
    },
    {
      "type": "modify",
      "old_id": "a62f369543fddb7969476d08d6f00a725a9a19ab",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationStateLogger.java",
      "new_id": "6fa96b4ab94e72254cbc0149496e254463193ea2",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationStateLogger.java"
    },
    {
      "type": "modify",
      "old_id": "5e4314df4918e453887b9b048ec69351ffda8c73",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java",
      "new_id": "f37b77cebe097011fb395ebe4ab39961636e283a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java"
    },
    {
      "type": "modify",
      "old_id": "97f8e9ec479a04318a89860d901e0524ce99a028",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/StartFetchCommand.java",
      "new_id": "fed33d73f834147ad8becf9d84e288f0d4fc2b2a",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/StartFetchCommand.java"
    },
    {
      "type": "modify",
      "old_id": "fdb4f8fb42fa016a1d3f0d71f799d208702fc7be",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchAction.java",
      "new_id": "04797bd5f6968bb0bc569bbabf2e9a1c18be37cc",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchAction.java"
    },
    {
      "type": "modify",
      "old_id": "3a502ef76e44b5daee061a99c5962005357c7c87",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchCommand.java",
      "new_id": "1e119875907b20bfd8f8cfeb9adff54ddb935a03",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchCommand.java"
    },
    {
      "type": "modify",
      "old_id": "e15dd685810a721a1bc33633ce261035e9baa6ec",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchJob.java",
      "new_id": "a613c0ee4cda181fe21f5f30bac9830b14530d0b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchJob.java"
    },
    {
      "type": "modify",
      "old_id": "da7be9f46997248ea01ae8b69f8e42c1af46422c",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationITAbstract.java",
      "new_id": "81603048c96b8b0c93e3ee64487ef5000c64b78a",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/PullReplicationITAbstract.java"
    },
    {
      "type": "modify",
      "old_id": "156481b6bb9ae72c429f7313075afc3666aee729",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchCommandTest.java",
      "new_id": "12999053bcc027d853a168e54de7bad0f25c733c",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchCommandTest.java"
    }
  ]
}
