)]}'
{
  "log": [
    {
      "commit": "91fb0217d2ec4d31500076ac9b2f0e5d511646d9",
      "tree": "2ff3ec59175fc0d8b533c2968be72156df8fc87b",
      "parents": [
        "c6d5659eeeade264fdd844394ea80047a87ef953"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Oct 02 12:32:55 2025 -0700"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Oct 03 00:29:11 2025 -0700"
      },
      "message": "Add deprecation notice\n\nChange-Id: I449fc60b61670ea133cf4d497541bb0ec9cd88c3\n"
    },
    {
      "commit": "c6d5659eeeade264fdd844394ea80047a87ef953",
      "tree": "ed4717adc6d8dab8f208c3ba0590ef01e883983b",
      "parents": [
        "f380e2fde4a29ac1470616ae08567df3caf5d10b"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Sep 08 12:34:49 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Sep 08 06:56:00 2025 -0700"
      },
      "message": "Use Java 21 instanceof match whenever possible\n\nGerrit master is now on Java 21 and it is therefore\npossible to use a simpler form to cast an object\nto a subtype with instanceof, see [1].\n\n[1] https://docs.oracle.com/en/java/javase/21/language/pattern-matching-instanceof.html\n\nChange-Id: I72a1357ed0a1cfe62d77f501f423152f5c463ed9\n"
    },
    {
      "commit": "f380e2fde4a29ac1470616ae08567df3caf5d10b",
      "tree": "a4a8ffe8a57abe8ab1b2f395549b120234a97da3",
      "parents": [
        "03f2dd3fc79981487333bec9d3cb8489da21d011",
        "be4e7baed853476b35eb4255af71a8bf64b2639d"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Sep 08 08:55:45 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Sep 08 14:48:36 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.12\u0027\n\n* stable-3.12:\n  Forward project-wide change index deletions\n  Rename ForwardedEventHandler to ForwardedEventDispatcher\n\nChange-Id: If57c8501581a4503eb308e95f9cd89e76a137edb\n"
    },
    {
      "commit": "be4e7baed853476b35eb4255af71a8bf64b2639d",
      "tree": "59fbf57ce3ce72ce7de16fdf50c7525b85902c1d",
      "parents": [
        "67c3e7833c7247afccea553c5e5accea17e4db18"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 02 21:47:53 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 03 12:29:40 2025 +0200"
      },
      "message": "Forward project-wide change index deletions\n\nWhen a project is deleted, all of its changes are removed from the\nindex.\n\nListen to the core onAllChangesDeletedForProject hook and forward a\nsingle project-scoped change-index event so peers can delete all change\ndocuments for that project in one operation.\n\nKey changes:\n- Add handling of onAllChangesDeletedForProject in IndexEventHandler and\n  enqueue a task that emits a consolidated change-index event.\n- Extend ChangeIndexEvent with an \"all deleted for project\" marker\n  (deleted\u003dtrue, changeId\u003d0), plus helpers to create/detect it.\n- Teach IndexEventRouter to route the special event to a new\n  ForwardedIndexChangeHandler.deleteAllForProject path.\n- Implement deleteAllForProject in the handler, invoking\n  ChangeIndexer.deleteAllForProject(Project.NameKey) under a forwarded\n  context to avoid echo loops.\n\nBug: Issue 440670678\nChange-Id: I933a06bf9ce75eb6998f828425234f4677e5bcd7\n"
    },
    {
      "commit": "67c3e7833c7247afccea553c5e5accea17e4db18",
      "tree": "e574a9d8fb59bfaf72cd31a141e2b1f4857389de",
      "parents": [
        "cef1fb41014b4acf96b5695032fbed9d443fbdc6"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 02 11:05:51 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 02 11:51:24 2025 +0200"
      },
      "message": "Rename ForwardedEventHandler to ForwardedEventDispatcher\n\nRenames the `ForwardedEventHandler` class and all of its usages to\n`ForwardedEventDispatcher` to better reflect its actual responsibility.\n\nDespite its previous name, the class does not handle stream events but\ninstead dispatches them to the internal Gerrit event bus.\n\nThis renaming improves code clarity by aligning the class name with its\ntrue role, as described in its documentation. It also prepares the\ncodebase for the introduction of new handler classes that will take on\nactual event handling responsibilities, separate from internal\ndispatching.\n\nAll relevant imports, variables, and test cases have been updated to use\nthe new class name.\n\nChange-Id: Ib52857c06051d4d789e6b939ce8e3691979035db\n"
    },
    {
      "commit": "03f2dd3fc79981487333bec9d3cb8489da21d011",
      "tree": "1f7226c3c6bb881f71e8b6004546a81fefd1ba4f",
      "parents": [
        "f291df92cf14c89286bc1b8ec5c0aed374119003",
        "cef1fb41014b4acf96b5695032fbed9d443fbdc6"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Aug 26 13:46:07 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Aug 26 13:46:07 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.12\u0027\n\n* stable-3.12:\n  Properly cleanup site3\n\nChange-Id: Ie2b1634a1978153092c6f564ef868e08455f3577\n"
    },
    {
      "commit": "cef1fb41014b4acf96b5695032fbed9d443fbdc6",
      "tree": "33ad088647aca4934e42960f3bd1ccae7e4979e9",
      "parents": [
        "a343076fc0cfb20bb8871de6da904af496dd3819",
        "42eef5375bbdc4693c5054cb5d2c545ee4e11651"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Aug 26 13:45:45 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Aug 26 13:45:45 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.11\u0027 into stable-3.12\n\n* stable-3.11:\n  Properly cleanup site3\n\nChange-Id: I6e2a52d2038ce67a0d11c82edc9e60ac3aff3379\n"
    },
    {
      "commit": "42eef5375bbdc4693c5054cb5d2c545ee4e11651",
      "tree": "807aba4f5ee2a21f1ea31b4968ec528aa38ef431",
      "parents": [
        "08ad640d485cb5cdbd5ca3d3d22af3a9ea3f82ef",
        "014c232fa47860bedb8b1a0702d6cbb78d860bb2"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Aug 26 13:45:19 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Aug 26 13:45:19 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Properly cleanup site3\n\nChange-Id: I2f4ee4c6d740a11828706ddc53fc4655452e5354\n"
    },
    {
      "commit": "014c232fa47860bedb8b1a0702d6cbb78d860bb2",
      "tree": "0ef785ad0110de1d336576429181853e02fc0ade",
      "parents": [
        "2f428baa1389bb820c4378f3ca2bb4112deffa03"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Aug 26 10:57:10 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Aug 26 10:59:35 2025 +0200"
      },
      "message": "Properly cleanup site3\n\nWhen cleaning up multi-site environment, site3 was never included by the\nclean up phase.\n\nChange-Id: I257bcce9442caff4f5ca30c4d6b6ed201e7d7da9\n"
    },
    {
      "commit": "f291df92cf14c89286bc1b8ec5c0aed374119003",
      "tree": "763cc883bda509eedf114306fda221550c855959",
      "parents": [
        "6ef8cbaf83e3bbcb0b034e0bdd1cd76f3f2e2a08",
        "a343076fc0cfb20bb8871de6da904af496dd3819"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Aug 21 15:40:44 2025 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Aug 21 15:40:44 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.12\u0027\n\n* stable-3.12:\n  Throw lockFailureException when RefDBLock occurs\n  Add 3rd site in the local test environment\n  Use fanout replication config for the local test environment\n  Sort ref-names before locking them in filterAndLock\n  Manage change deletion performed by pull-replication\n\nChange-Id: Id8ac6c552a56e79638a29185f35cd7bd54ca3599\n"
    },
    {
      "commit": "a343076fc0cfb20bb8871de6da904af496dd3819",
      "tree": "c7549a2daff77d338b22459853501cb47b757537",
      "parents": [
        "84d25c6a34ba543b1d765ee6be4f92de15cb39b9",
        "08ad640d485cb5cdbd5ca3d3d22af3a9ea3f82ef"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Aug 18 11:57:10 2025 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Aug 21 13:15:19 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.11\u0027 into stable-3.12\n\n* stable-3.11:\n  Throw lockFailureException when RefDBLock occurs\n  Add 3rd site in the local test environment\n  Use fanout replication config for the local test environment\n  Sort ref-names before locking them in filterAndLock\n  Manage change deletion performed by pull-replication\n\nChange-Id: If9a6f1e37e61fa42d024183c17b73e0e51f3d6e9\n"
    },
    {
      "commit": "08ad640d485cb5cdbd5ca3d3d22af3a9ea3f82ef",
      "tree": "a82de00befffc632b47fb5177ddd8ea5d872cd3a",
      "parents": [
        "e60dc7bcac8dd17607b82e95ad11ea3db31b9275",
        "2f428baa1389bb820c4378f3ca2bb4112deffa03"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Wed Aug 13 11:34:04 2025 -0600"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Wed Aug 13 11:34:04 2025 -0600"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Throw lockFailureException when RefDBLock occurs\n  Add 3rd site in the local test environment\n  Use fanout replication config for the local test environment\n  Sort ref-names before locking them in filterAndLock\n\nChange-Id: Ie85b9562c46a99722979174d66ba393d77d16618\n"
    },
    {
      "commit": "2f428baa1389bb820c4378f3ca2bb4112deffa03",
      "tree": "5f03a8257eeef3480f668ff9f41e2e294eb4c78a",
      "parents": [
        "906a43c050c0c5434f0ea74a6c96b61eb0f8c124"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Aug 11 15:53:39 2025 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Aug 12 16:09:13 2025 +0100"
      },
      "message": "Throw lockFailureException when RefDBLock occurs\n\nCurrently we only retry for lockFailureException, throwing a\nRefDbLockException will cause the batch to not be retried.\n\nBug: Issue 437621330\nChange-Id: Ic2e619ce22b09c991e58a23e4ef5b227f2f6e8dd\n"
    },
    {
      "commit": "906a43c050c0c5434f0ea74a6c96b61eb0f8c124",
      "tree": "cee8358c7046d7232e24f22b76c0e834d3ae8bb7",
      "parents": [
        "e6ca52bfda1cbd8b605b19c69792c3a014f3e16c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Aug 11 19:34:50 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Aug 11 22:51:29 2025 +0100"
      },
      "message": "Add 3rd site in the local test environment\n\nChange-Id: I1157d2457a9d0a110938309fb4b4074addef5c9d\n"
    },
    {
      "commit": "e6ca52bfda1cbd8b605b19c69792c3a014f3e16c",
      "tree": "28dc8228e4f8b8295c8c13d1dfa49b4a6a8edbd2",
      "parents": [
        "eb85a5f8b50dd40b02a414e9cb978c9f3d139b44"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Aug 11 18:06:28 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Aug 11 22:46:45 2025 +0100"
      },
      "message": "Use fanout replication config for the local test environment\n\nIn preparation to have more than two Gerrit primary nodes,\ndo not use replicas remote definition in replication.config anymore\nand rely on fanout configuration style.\n\nChange-Id: I4d99c941e573b1d7cf0fd41f792313f01ea09e94\n"
    },
    {
      "commit": "eb85a5f8b50dd40b02a414e9cb978c9f3d139b44",
      "tree": "ec7538b096d135e3da6ef3d5d17e6a89fa192bc6",
      "parents": [
        "b4e6c902183b65b9f9d826278fc71c890d9f52e7"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Aug 11 11:59:45 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Aug 11 13:19:44 2025 +0100"
      },
      "message": "Sort ref-names before locking them in filterAndLock\n\nIt is a common practise to avoid locking a set of resources in an\nunpredictable order, because it would be subject to deadlocks.\n\nExample of a possible deadlock is when two replication tasks are trying\nto fetch two refs but in different order, e.g. refs/heads/branch1 and\nrefs/heads/branch2.\n\nBy locking the two refs in the same ordering, make sure that you never\nhave a situation whilst one task locks refs/heads/branch1 and the other\ntask locks refs/heads/branch2 and they both are stuck in trying each\nother branches, when the task one tries to lock refs/heads/branch2 (lock\nheld by task two) and the task two tries to lock refs/heads/branch1\n(lock held by task one).\n\nBug: Issue 437805590\nChange-Id: I7fdb072e30e2313415c58e8c8dd39dd1a1f9f6e4\n"
    },
    {
      "commit": "6ef8cbaf83e3bbcb0b034e0bdd1cd76f3f2e2a08",
      "tree": "73d51359141947bbee9d12df7151f2baa93517dc",
      "parents": [
        "4d92862b8a4cb04c83cb1ac502980550b5bb5c1f"
      ],
      "author": {
        "name": "Wendy",
        "email": "wendy.wang10@sap.com",
        "time": "Wed Jul 30 10:21:02 2025 +0200"
      },
      "committer": {
        "name": "Wendy",
        "email": "wendy.wang10@sap.com",
        "time": "Wed Jul 30 10:21:02 2025 +0200"
      },
      "message": "Adapt bindings to updated global-refdb API\n\nChange-Id: I217b4e966a9a460c62497558b112fc54d5a16aab\n"
    },
    {
      "commit": "4d92862b8a4cb04c83cb1ac502980550b5bb5c1f",
      "tree": "8d087d4d3e03363851d2fb639e36427d8803066b",
      "parents": [
        "a2a727e5e9abeb50c8c585d352a0f86d7ac87374"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Mon Jun 23 22:38:21 2025 +0200"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Tue Jun 24 15:58:34 2025 +0200"
      },
      "message": "Make index synchronization configurable per index type\n\nAllow configuring which index types should be synchronized across sites\nin a multi-primary setup. Supported types are: change, account, group,\nand project.\n\nThe `index.synchronize` setting accepts a list of types:\n  - `change-index`\n  - `account-index`\n  - `group-index`\n  - `project-index`\n\nTo disable synchronization entirely set to `false` and\nto enable all set to `true`.\n\nThis enables finer-grained control on pull-replication and\nmulti-site indexing mechanism.\n\nFor example it will be possible to disable redundant change\nindexing retries on fetch-ref-replicated when using pull-replication\nin a multi-primary Gerrit setup.\n\nBug: Issue 425113249\nChange-Id: I15fbf51e9814364cf624f251544164ec340ac225\n"
    },
    {
      "commit": "a2a727e5e9abeb50c8c585d352a0f86d7ac87374",
      "tree": "88f3a30e1f2e7d2b48981b4b4fa8a8cb9f785866",
      "parents": [
        "a53f05824b656e10ecb882de37dcb0982202204e"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Jun 23 19:58:48 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Jun 23 21:18:45 2025 +0100"
      },
      "message": "Use DynamicMap\u003c\u003e for registering a routing events handler\n\nRefactoring to reduce the coupling of the event router receiving\nevents from the events-broker or Gerrit event-bus to the associated\nregistered handler.\n\nThe overall logic and configuration remain unchanged; however, this\nchange helps decouple the routing mechanism from the associated\nimplementation logic, opening the door to a conditional registration of\nthe events handlers based on configuration.\n\nChange-Id: I194e5571923400ec2755365e5ac9d233ae688dd9\n"
    },
    {
      "commit": "a53f05824b656e10ecb882de37dcb0982202204e",
      "tree": "8c443b8200e29b87e7f5b43cad441f42cb22650b",
      "parents": [
        "e34c029aca68e85d47a44c2baaf0f85366353256"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Jun 23 20:08:17 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Jun 23 20:08:34 2025 +0100"
      },
      "message": "Set development branch for E2E tests to master\n\nChange-Id: Ic480f03312d33243d0b998ace7950d14a43e59f1\n"
    },
    {
      "commit": "e60dc7bcac8dd17607b82e95ad11ea3db31b9275",
      "tree": "66eb63dbdd938b2d290b308af2d3f39faf397a85",
      "parents": [
        "adac979185fcbe8bcb22450ceb0b9f5fc27450f7",
        "b4e6c902183b65b9f9d826278fc71c890d9f52e7"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 20 14:45:51 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 20 14:45:51 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Manage change deletion performed by pull-replication\n\nChange-Id: I6670127cca44c2f937659b9fff5ee9fb973e85a5\n"
    },
    {
      "commit": "b4e6c902183b65b9f9d826278fc71c890d9f52e7",
      "tree": "1fd740634a7bdbba3559b4e228d581b15899fd4f",
      "parents": [
        "36eff93f31746eb1df6b0267d7a624730b7ec3a2"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jun 19 23:57:07 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 20 14:32:28 2025 +0100"
      },
      "message": "Manage change deletion performed by pull-replication\n\nWhen a delete change is replicated through the pull-replication plugin,\nthe fetch-ref-replicated event contains the ref-name of the change /meta\nwith a FORCED|NO_CHANGE result and an inexistent ref on the repository.\n\nLeverage the event in the FetchRefReplicatedEventHandler and delete also\nthe change from the index.\n\nDepends-On: https://gerrit-review.googlesource.com/c/plugins/replication/+/480184?\nChange-Id: I8567a583fc149eb630c72eb45084a5e7b423decb\n"
    },
    {
      "commit": "e34c029aca68e85d47a44c2baaf0f85366353256",
      "tree": "7c3de71a761179c5ca128eee76857cf3182f7a8b",
      "parents": [
        "140e4cf05ae646633986823c4a26276f458a9fbe",
        "84d25c6a34ba543b1d765ee6be4f92de15cb39b9"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jun 17 11:43:43 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jun 17 11:43:43 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.12\u0027\n\n* stable-3.12:\n  Do not fail reindexing changes when the patch-sets aren\u0027t replicated yet\n  Set GERRIT_BRANCH to stable-3.12 for local E2E test environment\n  Set GERRIT_BRANCH to stable-3.11 for local E2E test environment\n\nChange-Id: I33231eceb492cd18b12b6b782b879673d77648d7\n"
    },
    {
      "commit": "84d25c6a34ba543b1d765ee6be4f92de15cb39b9",
      "tree": "cafa6688d5256cd0eff11f48be531ac038d4a00a",
      "parents": [
        "37ca1e1fdc374f56de7387ef00ab1909d0a0fa6d"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Jun 15 11:03:45 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jun 17 03:26:09 2025 -0700"
      },
      "message": "Do not fail reindexing changes when the patch-sets aren\u0027t replicated yet\n\nDepending on how replication is configured, the changes\u0027 /meta refs\ncould be replicated before their associated patch sets. Every time a\nchange is replicated, the pull-replication plugin emits a\nfetch-ref-replicated event related to the change\u0027s refs.\n\nWhen creating a new change, two refs are replicated:\n1. refs/changes/\u003cNN\u003e/\u003cNNNN\u003e/1 (first patch-set of the change)\n2. refs/changes/\u003cNN\u003e/\u003cNNNN\u003e/meta (change meta-ref)\n\nWhen the above refs are replicated out of order, with 2. replicated\nbefore 1., then the multi-site plugin tried to reindex the change in an\ninconsistent state, throwing a \"missing unknown\" error and resulting\nwith a stale index.\n\nInstead of reacting only to \u0027meta\u0027 refs replication, consider all the\nrefs\u0027 replications events associated with a change and ignore the\nIndexing errors associated with a missing or unknown SHA1.\n\nBug: Issue 425059627\nChange-Id: I9a6337c1cecb52df832d64b2c7bb30e97ba7916a\n"
    },
    {
      "commit": "140e4cf05ae646633986823c4a26276f458a9fbe",
      "tree": "cea753b75e03e89effa5e1c3910130c8d7828e80",
      "parents": [
        "ad4e75a1643f569c2c07b3f54b0b55dc1eb3d6d0"
      ],
      "author": {
        "name": "Wendy Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Fri Jul 19 11:45:58 2024 +0200"
      },
      "committer": {
        "name": "Wendy Wen Wang",
        "email": "wendy.wang10@sap.com",
        "time": "Thu May 08 22:10:13 2025 -0700"
      },
      "message": "Adapt bindings for global-refdb API changes\n\nLegacy enforcement rules configuration deprecated:\nhttps://gerrit-review.googlesource.com/c/modules/global-refdb/+/425506\n\nChange-Id: I996ac571e899c6b0080cf73e5e2955cbd94e8ea3\n"
    },
    {
      "commit": "37ca1e1fdc374f56de7387ef00ab1909d0a0fa6d",
      "tree": "e55274903d795b5cae2f53eaa04ee1fc92233bc7",
      "parents": [
        "bf8a3c598b45cf7a17a6a33cccd7ae3a42701c43"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Apr 28 11:20:08 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Apr 28 11:20:08 2025 +0100"
      },
      "message": "Set GERRIT_BRANCH to stable-3.12 for local E2E test environment\n\nChange-Id: I3a6ca4b54b7f1b63d42ff4c5c4eb894e4da558f6\n"
    },
    {
      "commit": "bf8a3c598b45cf7a17a6a33cccd7ae3a42701c43",
      "tree": "770a218a545a7dfdb832c4bcdbf6f111b9503e1a",
      "parents": [
        "17bdf14e7d3e1355d9cbb6b970ab3ff849685d14",
        "adac979185fcbe8bcb22450ceb0b9f5fc27450f7"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Apr 28 11:19:40 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Apr 28 11:19:40 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.11\u0027 into stable-3.12\n\n* stable-3.11:\n  Set GERRIT_BRANCH to stable-3.11 for local E2E test environment\n\nChange-Id: Id11f3258a7c31310ed56a8313f2c5f9df468f526\n"
    },
    {
      "commit": "adac979185fcbe8bcb22450ceb0b9f5fc27450f7",
      "tree": "3bab1d0e67fbf198e4c680b620829b8344255c4a",
      "parents": [
        "4d1d936845a75404042058d6bc3e06e98aea60e0"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Apr 28 11:19:17 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Apr 28 11:19:17 2025 +0100"
      },
      "message": "Set GERRIT_BRANCH to stable-3.11 for local E2E test environment\n\nChange-Id: Iedbb0aa91e1d56c74350b90293e3c6614b4cdc3f\n"
    },
    {
      "commit": "ad4e75a1643f569c2c07b3f54b0b55dc1eb3d6d0",
      "tree": "3a45aa94554f5517f04ad4799c009bea4c6cdbd6",
      "parents": [
        "1b06a16632a9c91a6d2c94ed7995413e8e2145e4"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Apr 03 11:01:25 2025 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Fri Apr 04 02:41:59 2025 -0700"
      },
      "message": "Disable replicationLag if pullReplicationFilter is enabled\n\nBug: Issue 408010451\nChange-Id: I921cc752d15c0189c154ea0ccfea1bb01a786551\n"
    },
    {
      "commit": "1b06a16632a9c91a6d2c94ed7995413e8e2145e4",
      "tree": "477dfbaceec22132647fbf994142e64dd31546b0",
      "parents": [
        "c351873d848e531476adf5cbaf34c0ffdbe14f1f"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Apr 03 22:57:39 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Apr 04 00:35:40 2025 -0700"
      },
      "message": "Fix typo in ref-database.*ReplicationFilterEnabled config\n\nChange-Id: I675b09dd0aa63394dc737f38a70ec2e150c393e9\n"
    },
    {
      "commit": "c351873d848e531476adf5cbaf34c0ffdbe14f1f",
      "tree": "f43f82b1dced4d702da9e3163fa5b2512c9af0a2",
      "parents": [
        "949c191ad6afa61aeda8a7d7252093ec44e13449"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Apr 03 23:22:33 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Apr 04 08:35:06 2025 +0100"
      },
      "message": "Fix typo in config.pullReplicationFilterEnabled()\n\nChange-Id: I56878951222d58dd4d74d68fe10b4ecf39fd614e\n"
    },
    {
      "commit": "949c191ad6afa61aeda8a7d7252093ec44e13449",
      "tree": "08226d6f38b6a4ff56d7283f41a21bc6e5ab288d",
      "parents": [
        "69504b764d8888aeb557da0d7702593bd68dfe8a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Apr 03 23:19:48 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Apr 04 00:32:04 2025 -0700"
      },
      "message": "Reset *ReplicationFilterEnabled automatically at startup\n\nWhen the push/pull-replication plugin is not available, the filtering of\nrefs should also be automatically disabled. That was happening before\nthis change, but the associated property was not reset in the in-memory\nconfiguration object, leading other parts of the codebase assume that\nthe filter was enabled when it wasn\u0027t.\n\nFor example, when the multi-site.config looks like\n\n[ref-database]\n pullReplicationFilterClassEnabled \u003d true\n\nbut there is no pull-replication.jar in the $GERRIT_SITE/plugins then\nthe pullReplicationFilterEnabled() was returning true whilst that wasn\u0027t\nthe case, as the pull-replication plugin is not loaded and therefore the\nfilter isn\u0027t active and enabled either.\n\nChange-Id: I5a19d23f75d0b9e2cb4c19705bd2a043f73ff25d\n"
    },
    {
      "commit": "69504b764d8888aeb557da0d7702593bd68dfe8a",
      "tree": "cfdb3c2797c1a2620a1f105e3c1df8acd247e63c",
      "parents": [
        "17bdf14e7d3e1355d9cbb6b970ab3ff849685d14"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Apr 03 22:40:47 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Apr 03 23:24:47 2025 +0100"
      },
      "message": "Assume replication lag is enabled with ReplicationStatusServletIT\n\nThe ReplicationStatusServletIT tests are implicitly assuming that the\nreplication lag is enabled in the multi-site configuration.\n\nMake the assumption explicit so that if that\u0027s not the case, the tests\nare not failing because of the lack of the replication status servlet\nregistration.\n\nChange-Id: Ia594884ccb17e9995bf967a97d7c0dd6436f9bd8\n"
    },
    {
      "commit": "17bdf14e7d3e1355d9cbb6b970ab3ff849685d14",
      "tree": "c20d01a0a98fb602243235bdfa19df76b7c962e6",
      "parents": [
        "ae86555e4922709bb7b2f14d8dc06e0de9c1c4fd",
        "4d1d936845a75404042058d6bc3e06e98aea60e0"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Mar 22 10:54:28 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Mar 22 10:54:28 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.11\u0027\n\n* stable-3.11:\n  Implement filterAndLock in ReplicationFetchFilter\n  Delete duplicate DisabledSharedRefLogger class\n  Reformat with GJF 1.24.0\n  Remove obsolete LockWrapper.Factory\n  Adding the pull-replication extension for multi-site\n\nChange-Id: I3966257f45792768543b30cf974f1ab637a073bf\n"
    },
    {
      "commit": "4d1d936845a75404042058d6bc3e06e98aea60e0",
      "tree": "ba915a65f60bf74989afd288f8a907310a5cc2bb",
      "parents": [
        "ad09e0a25eb4d996c74f8094cd8942a2c98492b0",
        "36eff93f31746eb1df6b0267d7a624730b7ec3a2"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Mar 22 10:09:32 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Mar 22 10:35:38 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Implement filterAndLock in ReplicationFetchFilter\n  Delete duplicate DisabledSharedRefLogger class\n  Reformat with GJF 1.24.0\n  Remove obsolete LockWrapper.Factory\n  Adding the pull-replication extension for multi-site\n\nChange-Id: I30e306c2f4dc017842137615083cc760d26c3e7c\n"
    },
    {
      "commit": "36eff93f31746eb1df6b0267d7a624730b7ec3a2",
      "tree": "3ee69605cc264ffee2e7fb460a5ca150fb3f4ed5",
      "parents": [
        "ac443f88d002711ff838891d10ae1f484e2d3599"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sun Mar 16 11:58:30 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Mar 21 17:41:28 2025 +0000"
      },
      "message": "Implement filterAndLock in ReplicationFetchFilter\n\nThe ReplicationFetchFilter allows to also lock refs whilst filtering\nthem, which is paramount for preventing the refs to be fetch from being\nmutated and therefore causing potential split-brains.\n\nLock local refs locally for allowing concurrent access to happen on\nother nodes that are not impacted by the local replication tasks.\n\nChange-Id: I0f8778dee71b3e3963403541b212058cdd42c784\n"
    },
    {
      "commit": "ac443f88d002711ff838891d10ae1f484e2d3599",
      "tree": "8c866dd7612df55a5d977d74ae1be6ae4caa5495",
      "parents": [
        "8fb36f1a2c1466414ea9df89cf08ef19d9bb33fc"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 19 11:29:00 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Mar 19 19:15:57 2025 +0000"
      },
      "message": "Delete duplicate DisabledSharedRefLogger class\n\nThe DisabledSharedRefLogger was duplicated between the global-refdb\nlibrary and the multi-site plugin.\n\nAlso adapt the SharedRefDatabaseWrapper constructor to restore a green\nbuild on the CI.\n\nChange-Id: Ide10917a5647e2b1e3939f635638196c7fbd9732\n"
    },
    {
      "commit": "8fb36f1a2c1466414ea9df89cf08ef19d9bb33fc",
      "tree": "b344c525a700a71f09a2aee60be242f6e7552957",
      "parents": [
        "ce8b58fcd6e4f96cec62121899ae07dc28a773d3"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Mar 18 20:54:44 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Mar 18 20:54:44 2025 +0000"
      },
      "message": "Reformat with GJF 1.24.0\n\nChange-Id: Ifa25a2aaeb43f69ddc0fa25b69fc4a17cbdf2b84\n"
    },
    {
      "commit": "ce8b58fcd6e4f96cec62121899ae07dc28a773d3",
      "tree": "d410b5d471db66144b6bd220006c6d08d670f205",
      "parents": [
        "34ebb1eae28df1376b35eb26782ba602701a6b7d"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Mar 17 19:55:14 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Mar 17 20:28:31 2025 +0000"
      },
      "message": "Remove obsolete LockWrapper.Factory\n\nChange-Id: Ibdf6b9ad0e85c659fec84dbe742893f2c64658ab\n"
    },
    {
      "commit": "ae86555e4922709bb7b2f14d8dc06e0de9c1c4fd",
      "tree": "73709a570825ee74fe370d01219cb549cb45fb4e",
      "parents": [
        "798e4cf8968882c9e899e58bfecd5b926d8b0ca4"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Mar 13 20:59:35 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Mar 14 01:49:34 2025 -0700"
      },
      "message": "Allow to enable/disable push/pull replication filters\n\nThe multi-site plugin had always enabled all replication filtering with\nthe checking of their global-refdb status. Although it is a good default\nto have, the lack of flexibility brought some additional performance\nissues when running unneeded checks of hundreds of thousands of refs\nagainst the global-refdb. Example: the replication endpoint is not\nGerrit or is a Gerrit replica, therefore there is no need to integrate\nand check with the global-refdb consistency, because the endpoint won\u0027t\nbe tracked under it anyway.\n\nOn Cloud environments where the global-refdb is provided as a service,\nthe consumption of the APIs is very expensive and can also be capped or\nrate-limited, causing potential outages due to unneeded calls.\n\nIntroduce two new settings for enabling/disabling the filtering\nindividually for the push or pull-replication plugins.\n\nExample:\n\n[ref-database]\n  pushReplicationFilterClassEnabled \u003d false\n\nChange-Id: I1989f3bbc8c257f9bb5847e7d3c7755464e2cf3a\n"
    },
    {
      "commit": "34ebb1eae28df1376b35eb26782ba602701a6b7d",
      "tree": "6780e6aceba70d20740473e354d683706172a919",
      "parents": [
        "79eb98ddddae1d238ee2efa058554dec1fddb92d"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Mar 11 17:30:31 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Mar 11 17:31:34 2025 +0000"
      },
      "message": "Adding the pull-replication extension for multi-site\n\nThe multi-site test environment should verify E2E that the\nconnectivity between pull-replication and the refs filtering\nworks as expected.\n\nChange-Id: Ib31e3f17dbc17267f8a06602433a1341cd4a996d\n"
    },
    {
      "commit": "798e4cf8968882c9e899e58bfecd5b926d8b0ca4",
      "tree": "80cea278c910061ab0142589b3fdc1e01b89a37b",
      "parents": [
        "784463e233b9b15df3e23a962b2e2bf84d453315"
      ],
      "author": {
        "name": "Álvaro Vilaplana García",
        "email": "alvaro.vilaplana@gmail.com",
        "time": "Thu Mar 06 08:16:46 2025 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 06 08:16:46 2025 -0800"
      },
      "message": "Revert \"Don\u0027t install ReplicationStatusModule when replication lag is disabled\"\n\nThis reverts commit 784463e233b9b15df3e23a962b2e2bf84d453315.\n\nReason for revert: With this change the multisite plugin is not loaded.\n\nChange-Id: I29b74ad73bbfe95530c6c7abe86ebed70fae89fc\n"
    },
    {
      "commit": "784463e233b9b15df3e23a962b2e2bf84d453315",
      "tree": "427e74c386450cfa80cb13dff3875aa89db7d087",
      "parents": [
        "0f19b3d1acfabe177b9f541b461b4298989ddf6f"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Mar 06 14:03:48 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Mar 06 06:13:29 2025 -0800"
      },
      "message": "Don\u0027t install ReplicationStatusModule when replication lag is disabled\n\nThe ReplicationStatusModule is responsible for scanning *all* the\nprojects and checking their replication lag \u0027refs/multi-site/version\u0027\nagainst the global-refdb.\n\nIf the replication lag isn\u0027t enabled, there is no point to run the\nexpensive job of scanning all repos, saving precious CPU cycles and\navoiding the associated disk I/O and global-refdb calls.\n\nChange-Id: Ib8be7d3fc14cb319d395d6ba676c2254edb1cdf5\n"
    },
    {
      "commit": "0f19b3d1acfabe177b9f541b461b4298989ddf6f",
      "tree": "80cea278c910061ab0142589b3fdc1e01b89a37b",
      "parents": [
        "14da74c4cfb00ce8c8f18f7892b859e7c15873ab",
        "ad09e0a25eb4d996c74f8094cd8942a2c98492b0"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jan 30 15:27:40 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jan 30 15:27:40 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.11\u0027\n\n* stable-3.11:\n  Disable replication lag tracking by configuration\n\nChange-Id: I1c32657335b5aea1def4de7c866008d7b80d80f2\n"
    },
    {
      "commit": "ad09e0a25eb4d996c74f8094cd8942a2c98492b0",
      "tree": "88f614ee2259456023d997b67c5765ca56149042",
      "parents": [
        "dfcee56656c4125196037b85895b37374210e59f",
        "79eb98ddddae1d238ee2efa058554dec1fddb92d"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jan 30 15:27:17 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jan 30 15:27:17 2025 +0000"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Disable replication lag tracking by configuration\n\nChange-Id: I4084093a503f3035ba415c18ec9b511da76cb886\n"
    },
    {
      "commit": "79eb98ddddae1d238ee2efa058554dec1fddb92d",
      "tree": "d0f3891449445f8669e0af011bee0165744cf197",
      "parents": [
        "7428ee32b13ca6e35244993d9a2f0d259141174e"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jan 30 09:05:07 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jan 30 15:15:12 2025 +0000"
      },
      "message": "Disable replication lag tracking by configuration\n\nIntroduce the new configuration settings\nref-database.replicationLagEnabled for disabling the metric to trace\nthe auto-replication lag between sites.\n\nThe rationale for disabling this metric lies in the use of\nmono-repos with very frequent updates which would cause the ref\nrefs/multi-site/version/* to be continuously updated causing\npacked-refs locks and consuming precious resources on the\nglobal-refdb.\n\nWhen using pull-replication and apply-object, the value of using the\nrefs/multi-site/version/* for tracking is not very useful anyway\nbecause it gets replicated outside the batch.\n\nBug: Issue 313856493\nChange-Id: I6b32e0423ed894793f55ed57c60cc356ebe2a31a\n"
    },
    {
      "commit": "14da74c4cfb00ce8c8f18f7892b859e7c15873ab",
      "tree": "5797e6637f7d140d70fadf5212ff13268baab22f",
      "parents": [
        "9486ce69456d03ad4e9e6bbf7b77782d34ddf3c2"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Sep 24 21:06:13 2024 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Tue Jan 07 15:19:15 2025 +0100"
      },
      "message": "Update build instructions\n\n- use the latest maintenance branch stable-3.11\n- add option --recurse-submodules to the clone command for the gerrit\n  repository since the pull-replication plugin depends on the\n  replication plugin\n- add additional plugins required to build the multi-site plugin\n- mention that docker-compose is required to run some of the tests\n- use `bazel test plugins/multi-site/...` to run plugin tests, this\n  doesn\u0027t require to know the name of the test target and hence\n  works for all plugins\n- use bazelisk to run the build and tests to ensure we use the correct\n  bazel version\n\nChange-Id: Ib29c15bad424deb81561ac2ab88af955f94cceb1\n"
    },
    {
      "commit": "9486ce69456d03ad4e9e6bbf7b77782d34ddf3c2",
      "tree": "3177eb81d4ee3d3f0d098e52fe6a968ccb0cb542",
      "parents": [
        "4c48e14b3456d724d90371cdc6ecb0f47c1eaf2c",
        "dfcee56656c4125196037b85895b37374210e59f"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Dec 31 11:07:33 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Dec 31 11:07:33 2024 +0000"
      },
      "message": "Merge branch \u0027stable-3.11\u0027\n\n* stable-3.11:\n  Do not throw an exception when refs/multi-site/version lock fails\n  Reformat with GJF 1.24.0\n\nChange-Id: I7220719b6bbebd93d3e57f7a10967f3d97ee6879\n"
    },
    {
      "commit": "dfcee56656c4125196037b85895b37374210e59f",
      "tree": "3177eb81d4ee3d3f0d098e52fe6a968ccb0cb542",
      "parents": [
        "4c48e14b3456d724d90371cdc6ecb0f47c1eaf2c",
        "7428ee32b13ca6e35244993d9a2f0d259141174e"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Dec 31 10:31:19 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Dec 31 11:06:28 2024 +0000"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Do not throw an exception when refs/multi-site/version lock fails\n  Reformat with GJF 1.24.0\n\nChange-Id: Ibb362977f4f938457b3915d01a24d93a598726b8\n"
    },
    {
      "commit": "7428ee32b13ca6e35244993d9a2f0d259141174e",
      "tree": "e34bb9a6091c12ddd8248c3e935d8267fb9c87d3",
      "parents": [
        "19bc5eae64e5282338e339f2e43cfe81444b14f0"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Dec 30 16:17:55 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Dec 30 08:38:20 2024 -0800"
      },
      "message": "Do not throw an exception when refs/multi-site/version lock fails\n\nBusy repositories may have a lot of concurrency on the updates of\nrefs/multi-site/version: the failure to run the update is not a critical\nissue and should not create and log any exception.\n\nUpdating the refs/multi-site/version multiple times with the same\ntimestamp won\u0027t make any sense anyway, so the lock failure is expected.\n\nChange-Id: Ib48d0596444103bc11be9233306312f4b27a7067\n"
    },
    {
      "commit": "19bc5eae64e5282338e339f2e43cfe81444b14f0",
      "tree": "736103fcc63b56fbd975bd58743983257d4d3ce4",
      "parents": [
        "05960652371637b0e33ddae4005b1149bed5667a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Dec 30 16:37:39 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Dec 30 16:37:39 2024 +0000"
      },
      "message": "Reformat with GJF 1.24.0\n\nChange-Id: Ia38272d0e79e6fdf696e0a99ab80dc7dce4eda7c\n"
    },
    {
      "commit": "4c48e14b3456d724d90371cdc6ecb0f47c1eaf2c",
      "tree": "7ddf3441392642298af19888bcf32971fb38df21",
      "parents": [
        "dd2e98af00a0d5074c500e66b6ff6703b5d1ac6f",
        "05960652371637b0e33ddae4005b1149bed5667a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Oct 31 03:41:24 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Oct 31 03:41:24 2024 +0000"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  Do not filter out refs removals when filtering pull-replication fetches\n\nChange-Id: I54676700198f1b40d57e30e22760c4902fd0d68a\n"
    },
    {
      "commit": "05960652371637b0e33ddae4005b1149bed5667a",
      "tree": "bb056c4ad5dfd8bcd8256248427a53b84b04540b",
      "parents": [
        "bf54b794918bd17ab119d0c9292c6c5e304c1f85"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Oct 31 03:18:51 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Oct 31 03:40:01 2024 +0000"
      },
      "message": "Do not filter out refs removals when filtering pull-replication fetches\n\nSince the support of the fetching of refs removals with I3b43c0c,\nthe async fetch can manage the deletion of refs as part of the replication\ntask.\n\nThe previous assumption that async tasks should not deal with refs\ndeletions when the global-refdb has a deleted ref isn\u0027t valid anymore.\n\nChange-Id: I368e64c47d2cf3b4a74c7054ccb1f06143204d93\n"
    },
    {
      "commit": "dd2e98af00a0d5074c500e66b6ff6703b5d1ac6f",
      "tree": "a9f81d0d093d6e827e5c4cd60a1470568dfd608b",
      "parents": [
        "49ef6e0e53210cc478e60bec4e2f21ee03f9cdad",
        "1fbc1c27a1729b5f04ba37f675a1d94ac8a8462a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Sep 19 21:04:03 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 19 21:04:03 2024 +0000"
      },
      "message": "Merge \"Update multi-site docs to resemble current state of the project\""
    },
    {
      "commit": "49ef6e0e53210cc478e60bec4e2f21ee03f9cdad",
      "tree": "fb493499313d0955fb66c930a56a57f1a11aaf3a",
      "parents": [
        "d19aa6893d1759dc6b908ad8e13cc9f6210d3d3e",
        "bf54b794918bd17ab119d0c9292c6c5e304c1f85"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Sep 19 15:04:13 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Sep 19 15:04:13 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  Don\u0027t consider drafts for the up-to-date check on changes\n\nChange-Id: Iffcd2b3763d070e7f3ce65d9a17a3dd07663706a\n"
    },
    {
      "commit": "bf54b794918bd17ab119d0c9292c6c5e304c1f85",
      "tree": "13e8c9f8de0e62b35895333582f4b8d99ab998b8",
      "parents": [
        "9952d29e32f546023d8a402ba174f48ddc4c7ead",
        "13ad2e7d8f81aefd02e9c1c051ebb646987fbf6e"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Sep 19 15:03:00 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Sep 19 15:03:00 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Don\u0027t consider drafts for the up-to-date check on changes\n\nChange-Id: I660a5c9409a39f07b43b5843ce2effa12ace3b2c\n"
    },
    {
      "commit": "13ad2e7d8f81aefd02e9c1c051ebb646987fbf6e",
      "tree": "59051542006ba005f1db25f21ec3d01f43a556ff",
      "parents": [
        "1b7601e409dca7cd678e0985e1ab459cde418918"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 12:25:24 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Sep 19 13:48:53 2024 +0000"
      },
      "message": "Don\u0027t consider drafts for the up-to-date check on changes\n\nThis is based on the following two Gerrit core changes:\nI36c1e2f56127a7e5a11769bf36daf586e32d8bcf\nIe66138180f3df65c82624905ecdab915992b381b\n\nWith those changes, draft and stars are not any more part of the\nchange\u0027s state and existence of draft comments doesn\u0027t have any effect\non changes staleness check.\n\nThis change is based on Saša\u0027s equivalent fix on the high-availability\nplugin I88eadaa4.\n\nChange-Id: I9644fbdce5104d1a2a9f84a53fce085f0f80d4de\n(cherry picked from commit 3ad0638ded6acb5c2fe9232b31879f80261caaf8)\n"
    },
    {
      "commit": "1fbc1c27a1729b5f04ba37f675a1d94ac8a8462a",
      "tree": "a9f81d0d093d6e827e5c4cd60a1470568dfd608b",
      "parents": [
        "d19aa6893d1759dc6b908ad8e13cc9f6210d3d3e"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Wed Aug 14 18:06:12 2024 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Thu Aug 15 10:04:09 2024 +0100"
      },
      "message": "Update multi-site docs to resemble current state of the project\n\nChange-Id: I176348daf31af20cef3d6178c602c8999b8248cc\n"
    },
    {
      "commit": "d19aa6893d1759dc6b908ad8e13cc9f6210d3d3e",
      "tree": "fb493499313d0955fb66c930a56a57f1a11aaf3a",
      "parents": [
        "7fcbc9c31480372c3aa16a90025483dc398db7a6",
        "9952d29e32f546023d8a402ba174f48ddc4c7ead"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 04 23:00:12 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 04 23:00:12 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  Add acceptance test for change up-to-date checker\n  Indexing retries: lower normal condition logs to debug\n  Check for existence of change\u0027s target SHA1 for reindexing\n\nChange-Id: I1b7dc06bf8d91c4da12685483f529ba1cdc74481\n"
    },
    {
      "commit": "9952d29e32f546023d8a402ba174f48ddc4c7ead",
      "tree": "026c526139e7aa07f82a44c133addb0245e7f868",
      "parents": [
        "890f1e707c002f44e11dd78e90f80235b6e9d8f7",
        "1b7601e409dca7cd678e0985e1ab459cde418918"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 04 22:59:23 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 04 22:59:23 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Add acceptance test for change up-to-date checker\n  Indexing retries: lower normal condition logs to debug\n  Check for existence of change\u0027s target SHA1 for reindexing\n\nChange-Id: Icc40af87479ed79ac784f909570492011d323ef1\n"
    },
    {
      "commit": "1b7601e409dca7cd678e0985e1ab459cde418918",
      "tree": "fe4e5e5be63a06919fbf7677a025b3f76fa763e2",
      "parents": [
        "a85cee8bb4bfb298fbc47dea5516c6b569086540",
        "06211a09e2300f6c7a9117b9ca5709d1aa155468"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 04 22:58:34 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 04 22:58:43 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Add acceptance test for change up-to-date checker\n  Indexing retries: lower normal condition logs to debug\n  Check for existence of change\u0027s target SHA1 for reindexing\n\nChange-Id: I93b55dc97518657f522e2fc030fd938ac329f0e5\n"
    },
    {
      "commit": "06211a09e2300f6c7a9117b9ca5709d1aa155468",
      "tree": "27a6c8c5ac15ce20949e4201e07cfd9023ef2e26",
      "parents": [
        "e485d28b226db707999cf393d19d54adb8eea020",
        "492ff1e6a3221e8a4c39129ff02b68cc9ccca582"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 04 22:57:26 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 04 22:57:26 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Add acceptance test for change up-to-date checker\n  Indexing retries: lower normal condition logs to debug\n  Check for existence of change\u0027s target SHA1 for reindexing\n\nChange-Id: Iaf0ea1830e70b0ed61745c1a84b4ccb7d7ba2f7d\n"
    },
    {
      "commit": "492ff1e6a3221e8a4c39129ff02b68cc9ccca582",
      "tree": "1146de3e749c531c999c4f26db94abaaa3428f1d",
      "parents": [
        "9504e0f57cbfcdba43a32fa22434f1206c66bae3"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Apr 22 22:27:56 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 04 22:44:31 2024 +0100"
      },
      "message": "Add acceptance test for change up-to-date checker\n\nAdd an E2E acceptance test for making sure that the change\nchecker respect its up-to-date contract and returns true only\nwhen the target SHA1 exists in the repository.\n\nThis is a follow-up of Ife361ec3378 where the up-to-date logic\nwas fixed to prevent an indexing event to stall because of its\ntarget branch advancing rapidly.\n\nAlso move the setup of the ChangeCheckerImpl factory into\nan utility module, for reuse in the new test suite introduced.\n\nBug: Issue 335353379\nChange-Id: I0c094f97093dce8c7fce91908b6a8df097e3f509\n(cherry picked from commit 78116a9e50d1aa5ebef2266d96989c6c83004808)\n"
    },
    {
      "commit": "9504e0f57cbfcdba43a32fa22434f1206c66bae3",
      "tree": "c2b7f904c2b0c76965da0526b0a62878090d2dc6",
      "parents": [
        "afb24239828efefbd08c04197c00e4b3b406de7a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 20 22:26:12 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 04 21:21:46 2024 +0000"
      },
      "message": "Indexing retries: lower normal condition logs to debug\n\nWhen the retry of indexing encounters normal conditions that\ndo not denote any issue, the logs should not emit anything for\nnot spamming the output and distracting the Gerrit admin.\n\nChange-Id: I33fad03cab1c897f8db0645d3e3a0aa956844610\n(cherry picked from commit 5bd23e89f90b9d23c5ff8d68c7935404fe5b535d)\n"
    },
    {
      "commit": "afb24239828efefbd08c04197c00e4b3b406de7a",
      "tree": "3bbd49af38463b9dd46de123b6c4cf691efa81dd",
      "parents": [
        "85b5558531b11399139c1ed3b897c6d8bb7df7a7"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 20 22:24:08 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 04 21:21:08 2024 +0000"
      },
      "message": "Check for existence of change\u0027s target SHA1 for reindexing\n\nWhen the target branch of a change was advancing rapidly,\nthe reindexing retries applied by the ForwardedIndexingHandlerWithRetries\nwere continuing potentially forever as they were waiting to\nsee the target branch\u0027s expected SHA1 for the event.\n\nWhilst it is vital to wait for a target branch SHA1 to appear before\nreindexing a change on a remote site, it isn\u0027t essential to have\nthat SHA1 being *exactly* the tip of the target branch, as that\nmoment can be easily missed.\n\nExample:\n- Create two changes C1 and C2 in parallel and push them with\n  %submit option\n- The changes C1 and C2 will trigger the rapid advance of their\n  target SHA1\n- The other nodes may reindex C1 but not C2 because the target branch\n  has advanced more than expected\n\nChecking simply the existence of the target SHA1 in the repository\nis enough to satisfy the conditions for the change being reindexed.\n\nBug: Issue 335353379\nChange-Id: Ife361ec3378a60c0d1eb15df0f9570d569adc07a\n(cherry picked from commit 89d497605c85b3422f2b6958cca1df3fc2dd532f)\n"
    },
    {
      "commit": "7fcbc9c31480372c3aa16a90025483dc398db7a6",
      "tree": "fb493499313d0955fb66c930a56a57f1a11aaf3a",
      "parents": [
        "3ad0638ded6acb5c2fe9232b31879f80261caaf8",
        "c38c15462ad24773a4507dc8e20ecd11ff23dbaa"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 23:33:27 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 03 23:33:27 2024 +0000"
      },
      "message": "Merge \"Merge branch \u0027stable-3.10\u0027\""
    },
    {
      "commit": "c38c15462ad24773a4507dc8e20ecd11ff23dbaa",
      "tree": "026c526139e7aa07f82a44c133addb0245e7f868",
      "parents": [
        "26b8fa2ed5f0bd44fd5795b1c9a67c2bfa6fb5b3",
        "890f1e707c002f44e11dd78e90f80235b6e9d8f7"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:56:31 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:56:31 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  DRY out shouldNotBeTrackedAnymoreOnGlobalRefDb\n  Ignore refs/multi-site/version on global-refdb in push replication filter\n  Make the local test environment more realistic\n  Make the local test environment more realistic\n  Add acceptance test for change up-to-date checker\n  Move replication.jar and delete-project.jar to /lib for testing\n  Indexing retries: lower normal condition logs to debug\n  Check for existence of change\u0027s target SHA1 for reindexing\n  Do not remove replication.jar from multi-site test sites\n  Update local setup script to stable-3.10\n  Adapt to replication api changes on stable-3.10\n  Adapt BrokerApiWrapper to the newest BrokerApi interface\n  Avoid duplicate indexing tasks for the same id\n  Refactor help information with additional detail for setup.sh script\n  When enabled use draft comments for change up-to-date calculation\n  Ignore new project created events which originate from a different node\n  Do not propagate internal indexing operations\n  Update the refs/multi-site/version/value once per batch-refupdate\n  Update refs/multi-site/version for starred changes and sequences\n  Remove dead code when updating project version meta-ref\n  Fix merge Ib6aa8adbd causing 2x updates of refs/multi-site/version/*\n  Fix target branch for the local environment\n  Do not take draft comments into account for change index up-to-date\n  Update Kafka container to bitnami/kafka:3.6.0\n  Remove unused docker compose\n  Update Zookeeper container to bitnami/zookeeper:3.8.3\n  Remove double-binding of the ProjectVersionRefUpdateImpl to EventListener\n  Enhance indexing logging\n  Specify cache.threads \u003d 0 in the multi-site config documentation\n\nChange-Id: Ic3b8a892b6481f32391b592b292fe38a8baab023\n"
    },
    {
      "commit": "890f1e707c002f44e11dd78e90f80235b6e9d8f7",
      "tree": "026c526139e7aa07f82a44c133addb0245e7f868",
      "parents": [
        "383b7666aae38562b0cb24db88655eb9b9cac943",
        "a85cee8bb4bfb298fbc47dea5516c6b569086540"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:56:01 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:56:01 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  DRY out shouldNotBeTrackedAnymoreOnGlobalRefDb\n  Ignore refs/multi-site/version on global-refdb in push replication filter\n\nChange-Id: Iceda3bbc67b2b8d6a729eb6bdb4f92cc5f6f553f\n"
    },
    {
      "commit": "a85cee8bb4bfb298fbc47dea5516c6b569086540",
      "tree": "a9f4c68410ccefd65aa799580e9b5b7a1683fe27",
      "parents": [
        "ffd6b3b73b81b424c2d3da0612e9d5565fe9d7b7",
        "e485d28b226db707999cf393d19d54adb8eea020"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:55:36 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:55:36 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  DRY out shouldNotBeTrackedAnymoreOnGlobalRefDb\n  Ignore refs/multi-site/version on global-refdb in push replication filter\n\nChange-Id: I783c2204945743d5c95b0acd713bf232231014a5\n"
    },
    {
      "commit": "e485d28b226db707999cf393d19d54adb8eea020",
      "tree": "1675ce885f8e39e4fdc81056aa548ecae1a1f89a",
      "parents": [
        "e316fa63d6a121d15400df21dfac82cf35c8290a",
        "85b5558531b11399139c1ed3b897c6d8bb7df7a7"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:52:48 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:52:48 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  DRY out shouldNotBeTrackedAnymoreOnGlobalRefDb\n  Ignore refs/multi-site/version on global-refdb in push replication filter\n\nChange-Id: Ib12d6918a3d2a6492282fb12289091ad031db0be\n"
    },
    {
      "commit": "85b5558531b11399139c1ed3b897c6d8bb7df7a7",
      "tree": "384fda5745b3da39580acc2be5b35c587a756846",
      "parents": [
        "77bb8025f229b8dc293fbd4277c3f260fc286bf8",
        "413dadaaaaf6508dbebe702213ed4bf5db49bc87"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:52:20 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:52:20 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  DRY out shouldNotBeTrackedAnymoreOnGlobalRefDb\n  Ignore refs/multi-site/version on global-refdb in push replication filter\n\nChange-Id: Ic2a71064715ec71c1975cfb18b583bb29fc3fc4c\n"
    },
    {
      "commit": "413dadaaaaf6508dbebe702213ed4bf5db49bc87",
      "tree": "97f2aa17bb482df4acb7e79140cf6dc6f680f4e8",
      "parents": [
        "1302ee461be2a17507f0b9293b3525eabc090ba5",
        "63064727d6e98564599a79b3335aa9f1b7d0c432"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:51:58 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:51:58 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.5\u0027 into stable-3.6\n\n* stable-3.5:\n  DRY out shouldNotBeTrackedAnymoreOnGlobalRefDb\n  Ignore refs/multi-site/version on global-refdb in push replication filter\n\nChange-Id: I2ef34f2bad8d0c63124cbb5ea42ec1d129b0663e\n"
    },
    {
      "commit": "63064727d6e98564599a79b3335aa9f1b7d0c432",
      "tree": "faede9cc3a0d39e8e272ed0d3ff0ea251efd52b7",
      "parents": [
        "2509cfd84eb9734ab1cde5321d6c736450711f01",
        "ed4e1aa544cf3eec31f1e6682e31721f46a0ada0"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:50:55 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 22:50:55 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.4\u0027 into stable-3.5\n\n* stable-3.4:\n  DRY out shouldNotBeTrackedAnymoreOnGlobalRefDb\n  Ignore refs/multi-site/version on global-refdb in push replication filter\n\nChange-Id: Ic624ff6b90c0b585a60b2e28d3a524e49389be24\n"
    },
    {
      "commit": "ed4e1aa544cf3eec31f1e6682e31721f46a0ada0",
      "tree": "28aed5317098988ecdf6c2607d8c16099b43cbb9",
      "parents": [
        "ed1d7069d296cfa4965d44bf0d1b5b3289f2606a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 18:21:49 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 18:24:24 2024 +0100"
      },
      "message": "DRY out shouldNotBeTrackedAnymoreOnGlobalRefDb\n\nThe method shouldNotBeTrackedAnymoreOnGlobalRefDb() is to be shared\nacross replication filters: DRY the method and introduce a common\npackage-protected abstract class AbstractMultisiteRepicationFilter\nto share the method between the two filters.\n\nThis is a follow-up of changes I83313884 and I8b938675f.\n\nChange-Id: Ic83f1979a10d7b2c1a57dcafa892b7de49fba40d\n"
    },
    {
      "commit": "ed1d7069d296cfa4965d44bf0d1b5b3289f2606a",
      "tree": "0e7b351785040674ca8357a97accb41eb2f159d5",
      "parents": [
        "8a6ab2b83af0e3cc87e82e504b1148d55eb9b1de"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 18:05:30 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 18:07:24 2024 +0100"
      },
      "message": "Ignore refs/multi-site/version on global-refdb in push replication filter\n\nWhen I509dd7075b0 stopped updating the SHA1 for refs/multi-site/version\nin global-refdb in this stable-3.4 branch, it did not take into\nconsideration that existing setups may have plenty of\nrefs/multi-site/version already stored on them.\n\nStopping the update of those refs on the global-refdb had a negative\nimpact on the consistency of the replication of refs/multi-site/version\nacross the multi-site clusters, causing missed replication events.\n\nConsider the refs/multi-site/version on global-refdb as non-existent\nand skip altogether the associated checks if the associated local refs\nwere already up-to-date.\nThis change effectively ignores weather the local refs/multi-site/version\nis up-to-date or not and always pushes the refs to replication remotes.\n\nThis is the completion of the similar fix performed on the\nMultisiteReplicationFetchFilter in I8b938675.\n\nChange-Id: I833138849807475a7aed308d8703bb7e16728d2d\n"
    },
    {
      "commit": "3ad0638ded6acb5c2fe9232b31879f80261caaf8",
      "tree": "65ff8265f67f9c15f2303b7adb25d8f22b85d50e",
      "parents": [
        "1b9bfe04cebcd27fcfcbdb9f104ffc1ac016fe70"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 12:25:24 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 12:25:24 2024 +0100"
      },
      "message": "Don\u0027t consider drafts for the up-to-date check on changes\n\nThis is based on the following two Gerrit core changes:\nI36c1e2f56127a7e5a11769bf36daf586e32d8bcf\nIe66138180f3df65c82624905ecdab915992b381b\n\nWith those changes, draft and stars are not any more part of the\nchange\u0027s state and existence of draft comments doesn\u0027t have any effect\non changes staleness check.\n\nThis change is based on Saša\u0027s equivalent fix on the high-availability\nplugin I88eadaa4.\n\nChange-Id: I9644fbdce5104d1a2a9f84a53fce085f0f80d4de\n"
    },
    {
      "commit": "1b9bfe04cebcd27fcfcbdb9f104ffc1ac016fe70",
      "tree": "2eccfda05f81a9c2560555464a3858702e6debe2",
      "parents": [
        "18defe3651469c4c6c037165169b2723689a94ba"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 12:19:25 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 03 12:19:25 2024 +0100"
      },
      "message": "Remove all public modifiers to ChangeChecker interface\n\nInterfaces have all methods public by definition, the \u0027public\u0027\nmodifier is therefore redundant and can be removed.\n\nChange-Id: If3691cda262ffdde5dec0aa2c22fb5aa3d88d274\n"
    },
    {
      "commit": "18defe3651469c4c6c037165169b2723689a94ba",
      "tree": "fd8b05a4441bcbde11fa98bc1f2ce868a4c093ca",
      "parents": [
        "6d5136e0ace08bb587853c13c4c8d7ada0297fe0",
        "383b7666aae38562b0cb24db88655eb9b9cac943"
      ],
      "author": {
        "name": "Alvaro Vilaplana Garcia",
        "email": "alvaro.vilaplana@gmail.com",
        "time": "Wed May 01 17:52:46 2024 +0100"
      },
      "committer": {
        "name": "Alvaro Vilaplana Garcia",
        "email": "alvaro.vilaplana@gmail.com",
        "time": "Wed May 01 17:53:19 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  Make the local test environment more realistic\n  Make the local test environment more realistic\n  Add acceptance test for change up-to-date checker\n  Move replication.jar and delete-project.jar to /lib for testing\n\nChange-Id: I9e823d91871fb3a582c36cfff1ab071f1e8729d6\n"
    },
    {
      "commit": "383b7666aae38562b0cb24db88655eb9b9cac943",
      "tree": "719fe32d6a04bf9a979fed73911d7c7a3f7939ab",
      "parents": [
        "411d83e63aa19ecb483d68389baa0371664d4c3a",
        "ffd6b3b73b81b424c2d3da0612e9d5565fe9d7b7"
      ],
      "author": {
        "name": "Alvaro Vilaplana Garcia",
        "email": "alvaro.vilaplana@gmail.com",
        "time": "Wed May 01 17:51:39 2024 +0100"
      },
      "committer": {
        "name": "Alvaro Vilaplana Garcia",
        "email": "alvaro.vilaplana@gmail.com",
        "time": "Wed May 01 17:51:39 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Make the local test environment more realistic\n\nChange-Id: I2b3fc30426c4a518da649dc73711f4b8fbc19ad8\n"
    },
    {
      "commit": "ffd6b3b73b81b424c2d3da0612e9d5565fe9d7b7",
      "tree": "fb4d9d5431cd8682cd044bb7aeafa02b0f5f7a9d",
      "parents": [
        "c98b9fc043dfa04029b250a143b57de09d0e2fa5"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 27 12:53:52 2024 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Tue Apr 30 00:02:11 2024 +0000"
      },
      "message": "Make the local test environment more realistic\n\nThe local test environment should reflect as\nmuch as possible a real production issue, including:\n- listen on the gerrit_stream topic for catching up\n- have multiple concurrent replication threads\n\nAlso use a specific groupId for consuming messages\nso that the plugin can have the assurance of getting\nits specific backlog of messages regardless of the\nstream events consumption made by Gerrit.\n\nChange-Id: I4e7fc273262fea3f0018d05e6728bc61f063db95\n(cherry picked from commit 411d83e63aa19ecb483d68389baa0371664d4c3a)\n"
    },
    {
      "commit": "411d83e63aa19ecb483d68389baa0371664d4c3a",
      "tree": "719fe32d6a04bf9a979fed73911d7c7a3f7939ab",
      "parents": [
        "78116a9e50d1aa5ebef2266d96989c6c83004808"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 27 12:53:52 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Apr 29 21:01:44 2024 +0000"
      },
      "message": "Make the local test environment more realistic\n\nThe local test environment should reflect as\nmuch as possible a real production issue, including:\n- listen on the gerrit_stream topic for catching up\n- have multiple concurrent replication threads\n\nAlso use a specific groupId for consuming messages\nso that the plugin can have the assurance of getting\nits specific backlog of messages regardless of the\nstream events consumption made by Gerrit.\n\nChange-Id: I4e7fc273262fea3f0018d05e6728bc61f063db95\n"
    },
    {
      "commit": "78116a9e50d1aa5ebef2266d96989c6c83004808",
      "tree": "cce282556ba25add3d54551a11c36db9b9a5c202",
      "parents": [
        "53a64db7673f30e80aa43086360e11f2769df82a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Apr 22 22:27:56 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Apr 29 20:50:47 2024 +0000"
      },
      "message": "Add acceptance test for change up-to-date checker\n\nAdd an E2E acceptance test for making sure that the change\nchecker respect its up-to-date contract and returns true only\nwhen the target SHA1 exists in the repository.\n\nThis is a follow-up of Ife361ec3378 where the up-to-date logic\nwas fixed to prevent an indexing event to stall because of its\ntarget branch advancing rapidly.\n\nAlso move the setup of the ChangeCheckerImpl factory into\nan utility module, for reuse in the new test suite introduced.\n\nBug: Issue 335353379\nChange-Id: I0c094f97093dce8c7fce91908b6a8df097e3f509\n"
    },
    {
      "commit": "6d5136e0ace08bb587853c13c4c8d7ada0297fe0",
      "tree": "860bb304c068737ec6e3fe8b47512417c8e44771",
      "parents": [
        "46c1a6da112e9de78eae0a78aebf2a37693d5d58"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Apr 29 12:37:06 2024 -0700"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Apr 29 12:37:06 2024 -0700"
      },
      "message": "Document default replication delay\n\nChange-Id: I792efbd2ac1ca68f3a18b680bc014b31cb9ed81a\n"
    },
    {
      "commit": "53a64db7673f30e80aa43086360e11f2769df82a",
      "tree": "32cae77b1fbb8dcf5c786b3872e0375ba4b6af72",
      "parents": [
        "5bd23e89f90b9d23c5ff8d68c7935404fe5b535d"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 20 12:26:13 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Apr 26 19:20:00 2024 +0000"
      },
      "message": "Move replication.jar and delete-project.jar to /lib for testing\n\nThe replication.jar and delete-project.jar contain classes that are\nused by the multi-site plugin and need in the multi-site setup.\n\nChange-Id: I9c631d6f5c881b69e02a1bc7222bc030a506d1d0\n"
    },
    {
      "commit": "46c1a6da112e9de78eae0a78aebf2a37693d5d58",
      "tree": "212421f49e697a287c2cfc7a982604989eb62d1b",
      "parents": [
        "8d33a4f1e427064ada53ca5dc4ff8c86f3ad9caa",
        "a34e606455a88d12d99e8f9e7909f4977c78c964"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Apr 26 12:03:51 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 26 12:03:51 2024 +0000"
      },
      "message": "Merge \"Bind ExceptionHook provided by global-refdb module\""
    },
    {
      "commit": "8d33a4f1e427064ada53ca5dc4ff8c86f3ad9caa",
      "tree": "7b25b70ced594fe6a73f94b44bb2f275cf7864ee",
      "parents": [
        "cdd8fc0909426922efc6d5955456c8de32c27555",
        "5bd23e89f90b9d23c5ff8d68c7935404fe5b535d"
      ],
      "author": {
        "name": "Alvaro Vilaplana Garcia",
        "email": "alvaro.vilaplana@gmail.com",
        "time": "Thu Apr 25 10:03:16 2024 +0100"
      },
      "committer": {
        "name": "Alvaro Vilaplana Garcia",
        "email": "alvaro.vilaplana@gmail.com",
        "time": "Thu Apr 25 10:03:16 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  Indexing retries: lower normal condition logs to debug\n  Check for existence of change\u0027s target SHA1 for reindexing\n  Do not remove replication.jar from multi-site test sites\n  Update local setup script to stable-3.10\n\nChange-Id: Id752c5baf0776f845469af94c102992682ce61cd\n"
    },
    {
      "commit": "a34e606455a88d12d99e8f9e7909f4977c78c964",
      "tree": "f45267bccb4f3f1596d13d0a38bc468be0013fae",
      "parents": [
        "cdd8fc0909426922efc6d5955456c8de32c27555"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Apr 23 08:56:30 2024 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Apr 23 08:56:55 2024 +0200"
      },
      "message": "Bind ExceptionHook provided by global-refdb module\n\nThis enables retries on failed lock claims in global refdb.\n\nBug: Issue 334278785\nChange-Id: Iac68cf536a2b5f224172983cd3db9e7435b33f0c\n"
    },
    {
      "commit": "5bd23e89f90b9d23c5ff8d68c7935404fe5b535d",
      "tree": "7b25b70ced594fe6a73f94b44bb2f275cf7864ee",
      "parents": [
        "89d497605c85b3422f2b6958cca1df3fc2dd532f"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 20 22:26:12 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 20 21:29:13 2024 +0000"
      },
      "message": "Indexing retries: lower normal condition logs to debug\n\nWhen the retry of indexing encounters normal conditions that\ndo not denote any issue, the logs should not emit anything for\nnot spamming the output and distracting the Gerrit admin.\n\nChange-Id: I33fad03cab1c897f8db0645d3e3a0aa956844610\n"
    },
    {
      "commit": "89d497605c85b3422f2b6958cca1df3fc2dd532f",
      "tree": "3dcfe664431595b6795ad731960da44ed683f425",
      "parents": [
        "1df24549848cf15a077d54b9cea99ed8e6a8d07f"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 20 22:24:08 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 20 21:29:03 2024 +0000"
      },
      "message": "Check for existence of change\u0027s target SHA1 for reindexing\n\nWhen the target branch of a change was advancing rapidly,\nthe reindexing retries applied by the ForwardedIndexingHandlerWithRetries\nwere continuing potentially forever as they were waiting to\nsee the target branch\u0027s expected SHA1 for the event.\n\nWhilst it is vital to wait for a target branch SHA1 to appear before\nreindexing a change on a remote site, it isn\u0027t essential to have\nthat SHA1 being *exactly* the tip of the target branch, as that\nmoment can be easily missed.\n\nExample:\n- Create two changes C1 and C2 in parallel and push them with\n  %submit option\n- The changes C1 and C2 will trigger the rapid advance of their\n  target SHA1\n- The other nodes may reindex C1 but not C2 because the target branch\n  has advanced more than expected\n\nChecking simply the existence of the target SHA1 in the repository\nis enough to satisfy the conditions for the change being reindexed.\n\nBug: Issue 335353379\nChange-Id: Ife361ec3378a60c0d1eb15df0f9570d569adc07a\n"
    },
    {
      "commit": "1df24549848cf15a077d54b9cea99ed8e6a8d07f",
      "tree": "ea1b5e03ce10479af7df3fbe2ddfa534470b489e",
      "parents": [
        "fb3fedf95ce0e316ff919c64f86def71a4809e75"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 20 12:16:03 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Apr 20 12:16:03 2024 +0100"
      },
      "message": "Do not remove replication.jar from multi-site test sites\n\nThe replication.jar is still needed in the multi-site setup\nbecause it provides the base classes that the pull-replication plugin\nrelies on.\n\nChange-Id: I42ce0f40d811f895c4a3f5fef0998f7be1e3ea95\n"
    },
    {
      "commit": "fb3fedf95ce0e316ff919c64f86def71a4809e75",
      "tree": "bbc9139c1faf269c70ec7155d14c0578a0b9b2d2",
      "parents": [
        "6b68ef370997f0e6e01f8a47e4b4e32064b86aba"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Apr 19 00:36:41 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Apr 19 00:36:41 2024 +0100"
      },
      "message": "Update local setup script to stable-3.10\n\nChange-Id: I7d141a65b55b2187dc0a98f80e428d89ed54d6ac\n"
    },
    {
      "commit": "1302ee461be2a17507f0b9293b3525eabc090ba5",
      "tree": "db088c18fc4ef106a6f1a0ff6f24f88e42307c45",
      "parents": [
        "665f5de8689a2df32e479fffc70d4b766db239c7",
        "bf40246dc095789481def9703baccf93a20256a0"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 14:36:54 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 16 14:36:54 2024 +0000"
      },
      "message": "Merge \"Merge branch \u0027stable-3.5\u0027 into stable-3.6\" into stable-3.6"
    },
    {
      "commit": "665f5de8689a2df32e479fffc70d4b766db239c7",
      "tree": "db088c18fc4ef106a6f1a0ff6f24f88e42307c45",
      "parents": [
        "53f71d60d6c66bd7e6fa7d9c5e3a01cba9b641c7",
        "2e41449f31303ef6cd53183fab36c0e09eb9ccb4"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 14:36:42 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 16 14:36:42 2024 +0000"
      },
      "message": "Merge \"Merge branch \u0027stable-3.4\u0027 into stable-3.5\" into stable-3.6"
    },
    {
      "commit": "53f71d60d6c66bd7e6fa7d9c5e3a01cba9b641c7",
      "tree": "db088c18fc4ef106a6f1a0ff6f24f88e42307c45",
      "parents": [
        "5e33558cfad1d77f96c26885cd492e0edf02174a",
        "95039812a6b86f3cd217e280ae9f07bcd8cfa004"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 14:36:31 2024 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 16 14:36:31 2024 +0000"
      },
      "message": "Merge \"Merge branch \u0027stable-3.3\u0027 into stable-3.4\" into stable-3.6"
    },
    {
      "commit": "cdd8fc0909426922efc6d5955456c8de32c27555",
      "tree": "1162e33e9c735e65a15eb0f0d858ff45a29c8b46",
      "parents": [
        "bcabdab96eaf6b90532bd39be9f83ddafb7ba7cd",
        "6b68ef370997f0e6e01f8a47e4b4e32064b86aba"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:30:41 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:30:41 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027\n\n* stable-3.10:\n  Adapt to replication api changes on stable-3.10\n  Specify cache.threads \u003d 0 in the multi-site config documentation\n\nChange-Id: Iecad2b79e04c22d31da3f003174c799c20dacf55\n"
    },
    {
      "commit": "6b68ef370997f0e6e01f8a47e4b4e32064b86aba",
      "tree": "1162e33e9c735e65a15eb0f0d858ff45a29c8b46",
      "parents": [
        "5b55058d757216f79f421fdd2fe7a188547a3a4e",
        "c98b9fc043dfa04029b250a143b57de09d0e2fa5"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:30:33 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:30:33 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Specify cache.threads \u003d 0 in the multi-site config documentation\n\nChange-Id: I8d52110a924d808ffdf77537cf11e1c8919267d5\n"
    },
    {
      "commit": "c98b9fc043dfa04029b250a143b57de09d0e2fa5",
      "tree": "439d032229a48f2d4303b78dcbfc73ad8b35c494",
      "parents": [
        "2d227a2a63c1c89f1823d113a4d12e944c5f6586",
        "e316fa63d6a121d15400df21dfac82cf35c8290a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:30:18 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:30:18 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Specify cache.threads \u003d 0 in the multi-site config documentation\n\nChange-Id: I19391d640ebe2ce59993c83f3ea9c2313b6ab9dc\n"
    },
    {
      "commit": "e316fa63d6a121d15400df21dfac82cf35c8290a",
      "tree": "7320c0eea8fe466992f9f8d31e86b058eabc345e",
      "parents": [
        "d34a446106a18b2826d09405df7653ef605fa9e1",
        "77bb8025f229b8dc293fbd4277c3f260fc286bf8"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:30:04 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:30:04 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Specify cache.threads \u003d 0 in the multi-site config documentation\n\nChange-Id: I0f00acc7147a27c877589fec8c69007bc10a5efa\n"
    },
    {
      "commit": "77bb8025f229b8dc293fbd4277c3f260fc286bf8",
      "tree": "47c089b4b8cadb3942cd124dfa3f2f9cd6541e6e",
      "parents": [
        "356ffc3653e4e213c51f9c23f9c0996d159a50fc",
        "bf40246dc095789481def9703baccf93a20256a0"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:29:51 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:29:51 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  Specify cache.threads \u003d 0 in the multi-site config documentation\n\nChange-Id: Ia18c481aeba170f5127877abd875f012bf50bc1b\n"
    },
    {
      "commit": "bf40246dc095789481def9703baccf93a20256a0",
      "tree": "db088c18fc4ef106a6f1a0ff6f24f88e42307c45",
      "parents": [
        "5e33558cfad1d77f96c26885cd492e0edf02174a",
        "2e41449f31303ef6cd53183fab36c0e09eb9ccb4"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:29:26 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Apr 16 15:29:26 2024 +0100"
      },
      "message": "Merge branch \u0027stable-3.5\u0027 into stable-3.6\n\n* stable-3.5:\n  Specify cache.threads \u003d 0 in the multi-site config documentation\n\nChange-Id: If535687d36161f51a0d20ec4aac9bf8c019eb264\n"
    }
  ],
  "next": "2e41449f31303ef6cd53183fab36c0e09eb9ccb4"
}
