)]}'
{
  "log": [
    {
      "commit": "37c3d238aa2c75538781ec83c546a052fc5c39b2",
      "tree": "62372cfa339c2c17cefd7f6255675e79929533f1",
      "parents": [
        "ab01e004e7ccbefad34951c28f0f1cf563fffc3b"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue May 19 17:04:30 2026 +0200"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Sep 09 17:51:11 2026 +0200"
      },
      "message": "Make HTTP connection pool size configurable\n\nThe HttpClientProvider hardcoded CONNECTIONS_PER_ROUTE\u003d100 and\nMAX_CONNECTIONS\u003d200. Make this configuragle by introducing:\nhttp.connectionsPerRoute and http.maxConnections.\n\nChange-Id: Ie2c4c76c81b8b41d3ba730d2170bb523e60a097a\n"
    },
    {
      "commit": "ab01e004e7ccbefad34951c28f0f1cf563fffc3b",
      "tree": "6d440132f514fc028a135780ceef3595dbed3f10",
      "parents": [
        "ef3ba89f468593c3b45ffb21d05e4b7dc071d7a3"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue May 19 12:46:19 2026 +0200"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 19 16:19:42 2026 +0200"
      },
      "message": "Add debug logging for connection (re)use\n\nThis can help understand issues with reusing of stale connections.\n\nChange-Id: I800afe3571dce1d877c117e646c7aa115ca23bea\n"
    },
    {
      "commit": "ef3ba89f468593c3b45ffb21d05e4b7dc071d7a3",
      "tree": "d94e01d3a79a10133965eb44b1daf13f481e7869",
      "parents": [
        "f21ad43fd971fece8b4ca4771df73d30ebb65efb"
      ],
      "author": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Aug 04 16:38:13 2026 +0200"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Aug 18 11:40:04 2026 +0200"
      },
      "message": "index: decouple servlet hierarchy from handler hierarchy\n\nPreviously AbstractIndexRestApiServlet\u003cT\u003e held a\nForwardedIndexingHandler\u003cT\u003e reference and routed all indexing calls\nthrough the base class. However, all concrete servlet classes inject\nconcrete indexing handlers and there is no need to route the indexing\ncalls via the base class. There is also no need that the servlets know\nabout and resemble the hierarchy of the indexing handler classes.\n\nAbstractIndexRestApiServlet is no longer generic and no longer holds a\nhandler reference. Instead it exposes a process() helper that accepts an\nIndexingOperation lambda. Thus, it is now purely about HTTP mechanics\n(read body, set status, handle errors).\n\nChange-Id: I114fee3086e2233984815a57ece47635ebf01933\n"
    },
    {
      "commit": "f21ad43fd971fece8b4ca4771df73d30ebb65efb",
      "tree": "ba96a8c3c7b1661d6c2da0c9a3655828fd5a285e",
      "parents": [
        "fc2d4f06aa6500733a38d42220aa039e9e826668"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Mar 26 20:04:14 2024 +0100"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 12 13:32:16 2026 +0200"
      },
      "message": "Add logging for received messages\n\nThis functionality already exists for JGroups based message forwarding.\nWith the REST based forwarding there was some logging but it lacked\ndetails, like the request body. So we could see the forwarded message\ntype but not the details.\n\nMove extraction of the request body up to the AbstractRestApiServlet.\nThis method is then used by all subclasses to read the request body as\njson string. Once read it can be used for logging.\n\nTo enable logging of all received messages set the\nForwardedMessageLogger to DEBUG level.\n\nChange-Id: Ie49babc7128edfbdf0518eae8b6f1af3ad5594f8\n"
    },
    {
      "commit": "fc2d4f06aa6500733a38d42220aa039e9e826668",
      "tree": "d1f703ca7ab64e00c74811251d9b7fc2ef83644e",
      "parents": [
        "f62b82d1aa12e5b43af7ca7de8ac94ac633efd5a"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Mar 26 15:37:39 2024 +0100"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 12 13:32:16 2026 +0200"
      },
      "message": "RestForwarder: Log forwarded message body with DEBUG logging level\n\nFor troubleshooting purposes it is good to have forwarded json messages\nin the log. This is already done for JGroups based forwarder.\n\nMove payload to json serialization to the request creation time.\nThis way we have payload json available before executing the REST at the\nplace where logging is done.\n\nChange-Id: I8f36655e7e062a02a2566ec863274ae205b095e1\n"
    },
    {
      "commit": "f62b82d1aa12e5b43af7ca7de8ac94ac633efd5a",
      "tree": "ddc76ca771c99c77fe8edfa47c85e3ebed219de0",
      "parents": [
        "6e2e62f5797307bf447cf5cf75bbc70bcb0ca3a3"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Mar 26 14:23:06 2024 +0100"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 12 11:54:22 2026 +0200"
      },
      "message": "Eliminate the only subclass of RestForwarder.Request\n\nAlso make RestForwarder.Request private.\n\nChange-Id: I68bbb0a13ac02a4fbe64b9a730da842f58556d4b\n"
    },
    {
      "commit": "6e2e62f5797307bf447cf5cf75bbc70bcb0ca3a3",
      "tree": "db4543f331630a6b89baaabd94c0a5a2e6b01d82",
      "parents": [
        "043a308a85375214b98429d7296114a1fdee36ad"
      ],
      "author": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Aug 11 10:19:24 2026 +0200"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Aug 11 11:31:57 2026 +0200"
      },
      "message": "Drop the http.reuseConnectionAfter503 configuration parameter\n\nWe probably gain nothing by reusing http connections in this case.\n\nChange-Id: I2c481d20fdbae6796848bed2a15dd1662cc094a3\n"
    },
    {
      "commit": "043a308a85375214b98429d7296114a1fdee36ad",
      "tree": "d10a4d15bd62df809b01085ae96d89f2bf492203",
      "parents": [
        "8e4ed0f39552b710d863db7a2bf6330e5e3f2511",
        "def6bf1ee59dd4d3bab93193c11588b852fbb232"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 10 14:18:50 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 10 14:18:50 2026 +0200"
      },
      "message": "Merge branch \u0027stable-3.14\u0027\n\n* stable-3.14:\n  Add an option to drop pooled connection after a 503 response\n\nChange-Id: Ib848f8132db7704e82c7757cef6c9e728154e3a3\n"
    },
    {
      "commit": "def6bf1ee59dd4d3bab93193c11588b852fbb232",
      "tree": "9a50975e497d4f74f420112981cc622937168896",
      "parents": [
        "3d64e369e527d86ce19b52be6206a721abe1045e",
        "2ce4785f6419e7af57b124fbdb5010026ca6bb04"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 10 14:18:06 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 10 14:18:06 2026 +0200"
      },
      "message": "Merge branch \u0027stable-3.13\u0027 into stable-3.14\n\n* stable-3.13:\n  Add an option to drop pooled connection after a 503 response\n\nChange-Id: I22df57c13e332bee75b9dd11e42094ce81e54d07\n"
    },
    {
      "commit": "2ce4785f6419e7af57b124fbdb5010026ca6bb04",
      "tree": "6c384a17a48913bdd1fbf9f56154fa660ab0ec95",
      "parents": [
        "e6664938bc247f0d7a9971650746018a4f6e72d7"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri May 15 12:21:17 2026 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Aug 10 13:24:04 2026 +0200"
      },
      "message": "Add an option to drop pooled connection after a 503 response\n\nWe observe that sometimes Gerrit primary pods get a 503 response when\nsending REST calls to each other. This happens when istio is used to\nmanage connections and one of the pods is either down or restarted. In\nsuch cases, istio often continues to return 503 response even if the\ntarget pod, and its IP address, is unavailable. The problem continues\nuntil such a connection eventually expires and gets removed from the\nconnection pool. This often leads to missed or delayed messages between\nthe primary pods which leads to diverging indexes and inconsistent\ncaches.\n\nThis change adds a new option, http.reuseConnectionAfter503. When set to\nfalse, a connection over which we receive a 503 response will be\nimmediately declared as non-reusable and will be removed from the\napache\u0027s http client connection pool.\n\nChange-Id: I441c3ade9561e44a8841f346928d1273e38e39df\n"
    },
    {
      "commit": "8e4ed0f39552b710d863db7a2bf6330e5e3f2511",
      "tree": "b8606db5637c012bcaba5845c3d99afa891bbd6f",
      "parents": [
        "e8106b544dc432fca52e75a7a48e78b91a8a8212"
      ],
      "author": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Aug 06 10:00:53 2026 +0200"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Aug 06 14:03:50 2026 +0200"
      },
      "message": "Fix the indexSync documentation\n\nDocument the default value of the indexSync.enabled option and move the\nNOTE about indexSync feature close to the indexSync section\ndocumentation.\n\nChange-Id: I1211e62379ab3c69040a3603572aa9406a6a6964\n"
    },
    {
      "commit": "e8106b544dc432fca52e75a7a48e78b91a8a8212",
      "tree": "87d03e87d961032fba0b3290d3205bf384122f9f",
      "parents": [
        "0daee310fb87df5c5167fc6efdceddd9f1f34332"
      ],
      "author": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Aug 06 10:00:53 2026 +0200"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Aug 06 14:03:50 2026 +0200"
      },
      "message": "Remove autoReindex feature in favor of the indexSync feature\n\nChange-Id: I74b79afaec199db520873cc0d3a6ec2b6a6a6964\n"
    },
    {
      "commit": "0daee310fb87df5c5167fc6efdceddd9f1f34332",
      "tree": "b2466442b6c3430ca09203536ace814f2a2fc94e",
      "parents": [
        "9def1a541ad79c7eaa794cd312c24d6abc316d31"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jul 23 14:12:20 2026 +0200"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Aug 06 14:03:21 2026 +0200"
      },
      "message": "JGroupsForwarder index: carry metaSha/targetSha through IndexChange command\n\nThe IndexChange command was not carrying metaSha and targetSha from\nIndexEvent, so CommandProcessorImpl passed Optional.empty() to\nForwardedIndexChangeHandler. This bypassed the isChangeUpToDate()\nstaleness guard, which relies on metaSha to verify that the meta-ref\nobject is visible through JGit before accepting the index result as\nup to date.\n\nExtend IndexChange and its subclasses to carry targetSha and metaSha\nfrom IndexEvent. CommandProcessorImpl reconstructs IndexEvent from\nthose fields and passes it to the handler, enabling Failsafe to retry\nindexing until the meta-ref becomes visible.\n\nChange-Id: Ib133f58613542e34a81f5b43b8cada1918ca538f\n"
    },
    {
      "commit": "9def1a541ad79c7eaa794cd312c24d6abc316d31",
      "tree": "e533f6113b2c785936be3595fc0df2ab067064cc",
      "parents": [
        "095584eeb241139193efcd6c8b82ac66fbff990e",
        "3d64e369e527d86ce19b52be6206a721abe1045e"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 05 16:07:58 2026 +0200"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 05 07:20:12 2026 -0700"
      },
      "message": "Merge branch stable-3.14 into master\n\nChange-Id: I6892d63055c2d7008fca06b9e722a46ad7e3a972\n"
    },
    {
      "commit": "3d64e369e527d86ce19b52be6206a721abe1045e",
      "tree": "713d6536fc8b050a81bde4c663a9678afb081161",
      "parents": [
        "bc82f85a61a46b2f4dd8a789fc7d713d630d8d6b",
        "e6664938bc247f0d7a9971650746018a4f6e72d7"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 05 16:02:42 2026 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 05 16:02:42 2026 +0200"
      },
      "message": "Merge branch stable-3.13 into stable-3.14\n\nChange-Id: Ieb619594accc3bbbde1c2ca714f4c9c700976647\n"
    },
    {
      "commit": "e6664938bc247f0d7a9971650746018a4f6e72d7",
      "tree": "aaf0e18426850f92aa26ea9c9c14594d551d11f9",
      "parents": [
        "a6c531a3a5d3bf8d00184e640da365381595282d",
        "f56e52153abfb7274eba7395fd68c1e3705f53c2"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 05 16:01:17 2026 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 05 16:01:17 2026 +0200"
      },
      "message": "Merge branch stable-3.12 into stable-3.13\n\nChange-Id: I5c83ea758d39c3876b67d82befc15775edf4d06c\n"
    },
    {
      "commit": "f56e52153abfb7274eba7395fd68c1e3705f53c2",
      "tree": "ffd41826c30ff4b337b11f3c367073226a6b8429",
      "parents": [
        "9c514fa6db9763cfa7b852e350ffb441bbc2dc79"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Jul 29 17:59:20 2026 +0200"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 05 11:03:59 2026 +0200"
      },
      "message": "ForwardedIndexChangeHandler: fix misleading log message\n\nThe log message said \"seems too old compared to the event timestamp\"\nbut isChangeUpToDate() also checks SHA visibility, which is the more\nlikely reason for returning false after the precondition reorder.\nUpdate the message to not assume a particular cause.\n\nChange-Id: Ideafff252fad45b5e824763b391949c8857ccf45\n"
    },
    {
      "commit": "9c514fa6db9763cfa7b852e350ffb441bbc2dc79",
      "tree": "fd490a862a645b6c32e321ba6d9215d895816b70",
      "parents": [
        "0db87721314c2c5f05f68bf59fe26333c25c16bd"
      ],
      "author": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Jul 29 17:52:07 2026 +0200"
      },
      "committer": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Aug 05 11:03:59 2026 +0200"
      },
      "message": "ForwardedIndexChangeHandler: check SHA visibility before reindexing\n\nMove the isChangeUpToDate() check before reindexIfStale() so that\nstaleness is detected upfront. Previously, reindexIfStale() was called\nunconditionally and isChangeUpToDate() served as a post-condition: if\nthe JGit cache happened to refresh between the two calls, the post-check\nwould pass and we would accept a result where no actual reindexing took\nplace.\n\nWith this change, if the meta SHA is not yet visible, indexOnce()\nreturns false immediately and we proceed with the next (re)try.\nreindexIfStale() is only called once the SHA is confirmed visible,\nmaking the retry logic effective.\n\nBug: Issue 541924680\nChange-Id: If546dbacbfc9635a5ae9ac10ec5848486ce5cd4c\n"
    },
    {
      "commit": "bc82f85a61a46b2f4dd8a789fc7d713d630d8d6b",
      "tree": "6a775477082f387c3c75a723604430d3eb1ee9b9",
      "parents": [
        "1afc3c9bbd79bc4f920db10433ae79aa87e3658c",
        "4732750efff00db4eec4a79790a9adeeabc19d60"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 27 07:41:52 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 27 07:41:52 2026 -0700"
      },
      "message": "Merge \"Merge branch \u0027stable-3.13\u0027 into stable-3.14\" into stable-3.14"
    },
    {
      "commit": "4732750efff00db4eec4a79790a9adeeabc19d60",
      "tree": "acc6dafe1a3f031172d6a2f738a11342ea50d4f4",
      "parents": [
        "fbb72fdf125158c19aebd15761c81335c90961d9",
        "a6c531a3a5d3bf8d00184e640da365381595282d"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 27 14:31:28 2026 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 27 14:31:28 2026 +0100"
      },
      "message": "Merge branch \u0027stable-3.13\u0027 into stable-3.14\n\n* stable-3.13:\n  ChangeCheckerImpl: Fix null guard check\n  Docker tests: download JavaMelody from stable-3.12 build job\n  Add test validation for deserialising groups_bymember cache key\n\nChange-Id: I3a2fa68cd3a5020e419da24c05dbba1d56cdd0ea\n"
    },
    {
      "commit": "a6c531a3a5d3bf8d00184e640da365381595282d",
      "tree": "d299d4ae5dcc828c637ac65db7c06726b42c0449",
      "parents": [
        "f9480e226cc781f3bd128de84e18da249594dfee",
        "0db87721314c2c5f05f68bf59fe26333c25c16bd"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 27 13:45:59 2026 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 27 13:45:59 2026 +0100"
      },
      "message": "Merge branch \u0027stable-3.12\u0027 into stable-3.13\n\n* stable-3.12:\n  ChangeCheckerImpl: Fix null guard check\n  Docker tests: download JavaMelody from stable-3.12 build job\n\nChange-Id: Ia233b24cfdf475ba88b943caf0f815d5757c660a\n"
    },
    {
      "commit": "1afc3c9bbd79bc4f920db10433ae79aa87e3658c",
      "tree": "f41f666a2e165e1c165bead2d698baba11e88fed",
      "parents": [
        "fbb72fdf125158c19aebd15761c81335c90961d9"
      ],
      "author": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 27 12:50:53 2026 +0100"
      },
      "committer": {
        "name": "Daniele Sassoli",
        "email": "danielesassoli@gmail.com",
        "time": "Mon Jul 27 05:19:02 2026 -0700"
      },
      "message": "Update Gerrit Branch in dockerfile\n\nChange-Id: I64e136cd49da55d1626fc05ee57b1cfc007f4341\n"
    },
    {
      "commit": "fbb72fdf125158c19aebd15761c81335c90961d9",
      "tree": "bb2e64d38e009711c03ea817a8cd8d6469bac23e",
      "parents": [
        "82b8bdf3c6a57bb304f85b31fabf0fa5e97fe16b"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jul 24 01:24:11 2026 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Jul 25 15:19:47 2026 -0700"
      },
      "message": "Stop using custom deserialisation logic for groups*, accounts and tokens\n\nAfter the introduction of the CacheDef\u003c?,?\u003e injection in the Key JSON\ndeserialiser for caches, there is no need anymore to manage caches with\ncustom cases in the CacheKeyJsonParser.\n\nChange-Id: I69c5a2895d3657ac314de88f0d9c7380d5f5e6da\n"
    },
    {
      "commit": "82b8bdf3c6a57bb304f85b31fabf0fa5e97fe16b",
      "tree": "e01a5a4e0c7fd2190e1854dae77c575b2296fee7",
      "parents": [
        "6f0d5ba9e92c2463c2374eafc9bbd0c9ede102c2"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jul 24 00:16:20 2026 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Jul 25 15:17:58 2026 -0700"
      },
      "message": "Add test validation for deserialising cache keys\n\nThe cache invalidation relies on the ability to serialise/deserialise\ncache keys and preserve the original data types. The groups_bymember and\nother caches fail to propagate cache evictions because of the inability\nto preserve the cache key object type.\n\nAdd a test case for the groups_bymember cache, which relies on an\nAccount.Id as a cache key and make it pass by considering the correct\ndeserialisation for the groups_bymember and other cases.\n\nThe deserialization uses the actual key class type definition from the\nGerrit DynamicMap\u003cCacheDef\u003c?, ?\u003e\u003e which is injected into the\nCacheKeyJsonParser.\n\nBug: Issue 534416999\nChange-Id: Ibc0adf4a7e7089d215dc03917f142c07b6fdcbc2\n"
    },
    {
      "commit": "095584eeb241139193efcd6c8b82ac66fbff990e",
      "tree": "13c758aac5897c933dab3c4cb3c65b92446dc129",
      "parents": [
        "18ecb2be418fd081e24b60d66bc6d2c295652883"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Jul 22 17:04:20 2026 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Thu Jul 23 10:18:28 2026 +0200"
      },
      "message": "Replace Objects.isNull with the plain \"\u003d\u003d null\" check\n\nThe only purpose of the Objects.isNull is if a null check needs to be\nused as a Predicate i.e. to pass Objects::isNull.\n\nChange-Id: I1f397570a17e9f38879c1515c72d7fc915052234\n"
    },
    {
      "commit": "0db87721314c2c5f05f68bf59fe26333c25c16bd",
      "tree": "74d30560e3711ec6ba1f20d71cf0d6ce49d9054a",
      "parents": [
        "b0f4164e052aa6d90eeb9aaf4cdcaba6d1fca97c"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Jul 22 17:01:40 2026 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 23 07:59:09 2026 +0200"
      },
      "message": "ChangeCheckerImpl: Fix null guard check\n\nThe null guard check for the metaSha was wrong. This was actually\ncorrect in the past and the mistake was introduced with\nIe45c2f1e209952ae7f2a91dc6b65c0c153f48376.\n\nChange-Id: I302e54c238891ab8e1c37ecc77618e6d77c60381\n"
    },
    {
      "commit": "18ecb2be418fd081e24b60d66bc6d2c295652883",
      "tree": "5f99ec4c8849f740643f69d8c27286b24c5e7645",
      "parents": [
        "9548ebf34576d510c24f850b48f0b4ad91ab736a"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Jul 22 17:01:40 2026 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Jul 22 17:01:40 2026 +0200"
      },
      "message": "ChangeCheckerImpl: Fix null guard check\n\nThe null guard check for the metaSha was wrong. This was actually\ncorrect in the past and the mistake was introduced with\nIe45c2f1e209952ae7f2a91dc6b65c0c153f48376.\n\nChange-Id: I302e54c238891ab8e1c37ecc77618e6d77c60381\n"
    },
    {
      "commit": "b0f4164e052aa6d90eeb9aaf4cdcaba6d1fca97c",
      "tree": "f7a895a4124e5837beb0ad89a53215ab0f102eae",
      "parents": [
        "563602e81846f0027b39d358d9aa1f6d8714d873"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 16 17:23:49 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jul 16 17:23:49 2026 +0100"
      },
      "message": "Docker tests: download JavaMelody from stable-3.12 build job\n\nChange-Id: Ib16777033b1137989b195cee91ff1c043bd2db6e\n"
    },
    {
      "commit": "f9480e226cc781f3bd128de84e18da249594dfee",
      "tree": "dc3a2ff7504c43342911faca289c0e57ca577bd2",
      "parents": [
        "56c9207c796c5498205e6c6141275113defedf3e",
        "563602e81846f0027b39d358d9aa1f6d8714d873"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 15 08:32:45 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Jul 15 08:32:45 2026 +0100"
      },
      "message": "Merge branch \u0027stable-3.12\u0027 into stable-3.13\n\n* stable-3.12:\n  Add test validation for deserialising groups_bymember cache key\n\nChange-Id: I2e248911d3fb15d37bb66d61fe540a4d8181a9ec\n"
    },
    {
      "commit": "563602e81846f0027b39d358d9aa1f6d8714d873",
      "tree": "a28891e11a9c16eb4778d08320a855c3d273799c",
      "parents": [
        "11cc242fd09e9a89581336cd77b704e761b18be5"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jul 14 22:51:59 2026 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Jul 14 15:00:19 2026 -0700"
      },
      "message": "Add test validation for deserialising groups_bymember cache key\n\nThe cache invalidation relies on the ability to serialise/deserialise\ncache keys and preserve the original data types. The groups_bymember\nfails to propagate cache evictions because of the inability to preserve\nthe cache key object type.\n\nAdd a test case for the groups_bymember cache, which relies on an\nAccount.Id as a cache key and make it pass by, considering the correct\ndeserialisation for the groups_bymember case.\n\nBug: Issue 534416999\nChange-Id: Ibc0adf4a7e7089d215dc03917f142c07b6fdcbc2\n"
    },
    {
      "commit": "9548ebf34576d510c24f850b48f0b4ad91ab736a",
      "tree": "181ff8184cca3d40b7ce65da857f3cd3fb6dafb6",
      "parents": [
        "184668048facfa64f20b601171fa25801c57facf"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Mon May 11 13:13:18 2026 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Jun 10 11:15:48 2026 +0200"
      },
      "message": "Make JGroupsKubernetesPeerInfoProviderTest runnable in Kubernetes\n\nThe JGroupsKubernetesPeerInfoProviderTest would fail when run in a\nKubernetes Pod. That was due to environment variables in the pod\ninterfering with the jgroups configuration.\n\nThis change avoids that by providing a test-specific jgroups\nconfig. It also makes the test more robust by adding a wait\nfor the first channel to be connected.\n\nChange-Id: I363de8396a67e0a08bfe5c76aa8c099c58bccb01\n"
    },
    {
      "commit": "184668048facfa64f20b601171fa25801c57facf",
      "tree": "881ed561ce183278a61280a3b368a954d2e5ea56",
      "parents": [
        "f307ea91164d6aae32121af8b0f89b9980a7f1d1"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Jun 09 09:42:12 2026 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Jun 09 09:45:33 2026 +0200"
      },
      "message": "Adapt to bazel 9.1.0 update\n\nChange-Id: I876b90c996907f29ecb2f5d3b09e547ee32412cc\n"
    },
    {
      "commit": "f307ea91164d6aae32121af8b0f89b9980a7f1d1",
      "tree": "ac85447533e45a72942dac81b43d959ea928b1f6",
      "parents": [
        "bc8e9ae00dfd7c048e17844fd002793ebe4f1361"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Jun 09 09:44:09 2026 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Jun 09 09:44:32 2026 +0200"
      },
      "message": "Adapt to project-specific deletion of changes from index\n\nChange-Id: I0e519ecd232651f424a0d3a32df2db7483a1ff1f\n"
    },
    {
      "commit": "bc8e9ae00dfd7c048e17844fd002793ebe4f1361",
      "tree": "b05a3408c6ec89961ea0b723e024247c7b0e6be0",
      "parents": [
        "a22850a963faebee8458e162ca0466369483fa4f"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri May 15 12:21:17 2026 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri May 15 15:05:49 2026 +0200"
      },
      "message": "Add an option to drop pooled connection after a 503 response\n\nWe observe that sometimes Gerrit primary pods get a 503 response when\nsending REST calls to each other. This happens when istio is used to\nmanage connections and one of the pods is either down or restarted. In\nsuch cases, istio often continues to return 503 response even if the\ntarget pod, and its IP address, is unavailable. The problem continues\nuntil such a connection eventually expires and gets removed from the\nconnection pool. This often leads to missed or delayed messages between\nthe primary pods which leads to diverging indexes and inconsistent\ncaches.\n\nThis change adds a new option, http.reuseConnectionAfter503. When set to\nfalse, a connection over which we receive a 503 response will be\nimmediately declared as non-reusable and will be removed from the\napache\u0027s http client connection pool.\n\nChange-Id: I441c3ade9561e44a8841f346928d1273e38e39df\n"
    },
    {
      "commit": "a22850a963faebee8458e162ca0466369483fa4f",
      "tree": "185b29f3bffab2c0ab44e8e802daa0ee7ac1969b",
      "parents": [
        "b9720aed7022e2af79673ac13e86424ff49792db",
        "5c18759d758a48aae03dbf18bd8f29503928a435"
      ],
      "author": {
        "name": "Sasa Zivkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Apr 28 04:24:13 2026 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 28 04:24:13 2026 -0700"
      },
      "message": "Merge changes I57c8b27f,Ib6420f4b\n\n* changes:\n  Define ApiModule: expose Forwarder, CommandProcessor and Commands\n  Refactoring: move command classes from jgroups to commands package\n"
    },
    {
      "commit": "b9720aed7022e2af79673ac13e86424ff49792db",
      "tree": "ef2f44ed6dd61c3808ed1a70ad4d737dfa46163e",
      "parents": [
        "6f0d5ba9e92c2463c2374eafc9bbd0c9ede102c2"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Apr 15 11:39:21 2026 +0200"
      },
      "committer": {
        "name": "Thomas Draebing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Apr 15 03:18:15 2026 -0700"
      },
      "message": "Reduce boilerplate code by using gerrit_plugin_dependency_tests\n\nChange-Id: I716775b4837fec31ee16e8a3b624f37d27f1b628\n"
    },
    {
      "commit": "5c18759d758a48aae03dbf18bd8f29503928a435",
      "tree": "c115c6b769d974c9ae1959ae2527419010ea7bc2",
      "parents": [
        "b3e8605de1ce22650e468cdaed4da1c3228035de"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Fri Mar 06 12:19:02 2026 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Apr 14 10:11:29 2026 +0200"
      },
      "message": "Define ApiModule: expose Forwarder, CommandProcessor and Commands\n\nThis change exposes DynamicItem\u003cForwarder\u003e so that other plugins can\nimplement message forwarding using technology of their choice, for\nexample using a GCP pubsub.\n\nAlso expose DynamicItem\u003cCommandProcessor\u003e. This is not exposed to be\noverridden but only as a mean for other plugins to inject it and pass\nreceived commands back to the high-availability plugin. Injecting the\nCommandProcessor directly would require exposing also its implementation\nvia the API-Module. This quickly pulls almost complete plugin\nimplementation into the API-Module including the ServerPluginInfoModule\nwhich provides plugin specific bindings like \"@PluginName String\".\nSince the injector created out of the API module is the parent injector\nof the injector(s) created in dependent plugins, we would end up with\nduplicated bindings for the @PluginName and MetricMaker types.\nUsing DynamicItem\u003cCommandProcessor\u003e we only expose the interface via the\nAPI module to other plugins.\n\nChange-Id: I57c8b27fa4caf6109d797494fac1a91789f056a0\n"
    },
    {
      "commit": "b3e8605de1ce22650e468cdaed4da1c3228035de",
      "tree": "5fcbbb55b74dd0b4c4c3673e5af3c79244d69c54",
      "parents": [
        "6f0d5ba9e92c2463c2374eafc9bbd0c9ede102c2"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Wed Oct 08 13:00:04 2025 +0200"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Tue Apr 14 10:05:33 2026 +0200"
      },
      "message": "Refactoring: move command classes from jgroups to commands package\n\nSince the command (de)serialization is now moved out of the jgroups\npackage to to commands package we also rename JGroupsGson to\nCommandsGson and also move type adapters to the commands package.\n\nChange-Id: Ib6420f4bd9c03973471d9e69286647fee24f3413\n"
    },
    {
      "commit": "6f0d5ba9e92c2463c2374eafc9bbd0c9ede102c2",
      "tree": "8eef8dcf0f2fc1500e38a77f549f1041cdf1a508",
      "parents": [
        "78b28abf67fced7bbc5a32293d104bb62ff196c4"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Mar 14 15:08:48 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Mon Mar 23 17:45:54 2026 +0100"
      },
      "message": "Migrate high-availability plugin to Bazel modules\n\nReplace the custom maven_jar-based external dependency setup with\nbzlmod and rules_jvm_external.\n\nUpdate BUILD targets to use bazlets\u0027 bzlmod-compatible plugin and test\nrules, and add runtime jar checks for third-party dependencies.\n\nDocument how to include the plugin\u0027s module fragment when building the\nplugin in the Gerrit tree.\n\nJGroups declares Byteman/BMUnit as optional test dependencies; exclude\nthem explicitly to avoid bundling unnecessary runtime jars.\n\nNote: jgroups-kubernetes currently bundles mjson classes directly in its\npublished jar, so they appear in the final plugin artifact even though\nthere is no separate mjson dependency in the Bazel graph. This cannot be\nexcluded via rules_jvm_external. Upstream is tracking replacement of\nmjson: jgroups-extras/jgroups-kubernetes#288.\n\nTo update MODULE.bazel.lock file (only required when module dependencies\nhave changed) run:\n\n  bazel mod deps --lockfile_mode\u003dupdate\n\nTo update high-availability_plugin_deps.lock.json file (only required\nwhen Maven dependencies have changed) run:\n\n  REPIN\u003d1 bazel run @high-availability_plugin_deps//:pin\n\nChange-Id: Ifaab4b420fa096fb0d0ed9d4b3ec46f879bc921d\n"
    },
    {
      "commit": "78b28abf67fced7bbc5a32293d104bb62ff196c4",
      "tree": "3d34bbe02ac9adce96e515ae5d456a058d6d3354",
      "parents": [
        "79f0e33805d32d5b5cdb7c2799e5295bf21d79b0"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Mon Mar 16 10:16:34 2026 +0100"
      },
      "committer": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Mon Mar 16 10:21:43 2026 +0100"
      },
      "message": "Install RestForwarderServletModule only if HTTP transport is used\n\nBesides skipping installation of unnecessary servlets this change also\nfixes an issue with Guice injection dependencies: the @RestGson is bound\n(from the RestForwarderModule) only if the transport is REST. However,\nthe REST servlets now also depend on the @RestGson and, if another\ntransport is used where RestForwarderModule module is not installed,\nthen we have a missing dependency issue.\n\nChange-Id: Id650bf9c4e5f723689f19d6e333afc059c95df66\n"
    },
    {
      "commit": "79f0e33805d32d5b5cdb7c2799e5295bf21d79b0",
      "tree": "45b7d628007c9b3c18117c1242b27be1277fd380",
      "parents": [
        "f89ee50cec0115ee091f83f47abe027c72d83420"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Thu Mar 05 15:20:55 2026 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Mar 06 14:27:58 2026 +0100"
      },
      "message": "Use RestForwarderModule#buildRestGson everywhere in rest forwarder\n\nIbdcde4c63a4b0ff introduced this provider but only used it in the\nclasses currently needing the instant type adapter. Use it consistently\neverywhere in the rest forwarder to ensure the used gson instance has\nall type adapters relevant for the rest forwarder.\n\nMake this method static to simplify using it from unit tests.\n\nChange-Id: Ifb43117ac5446768707257e575876d52fcf08e3b\n"
    },
    {
      "commit": "f89ee50cec0115ee091f83f47abe027c72d83420",
      "tree": "e4a8f4a56748bb5eaa9ff97325c6e7d19117203b",
      "parents": [
        "411f0d8b577736e7913132bc078020a0b9bc96be"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Mar 06 08:49:41 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Mar 06 09:00:02 2026 +0100"
      },
      "message": "Bazel: Consume global-refdb only from source\n\nThe plugin sources are compiled against `global-refdb` built from\nsource, but the tests were running against the external dependency\nfetched from Maven Central.\n\nStop fetching `global-refdb` as an external dependency and use the\nin-tree target consistently for both compilation and test execution.\n\nThis plugin currently does not support standalone build mode, so using\nthe in-tree dependency is acceptable.\n\nChange-Id: I0ede56e6d66b6efdcfd0f592c991b5be90c1b048\n"
    },
    {
      "commit": "411f0d8b577736e7913132bc078020a0b9bc96be",
      "tree": "d112cf5625ef21fa4a2fa12a5ac4ea197b75f3f7",
      "parents": [
        "5e14884c2a9ff3f14ffd448725a43694b630fdde"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Mar 06 07:30:52 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Mar 06 08:29:36 2026 +0100"
      },
      "message": "README: Remove leftover merge conflict markers\n\nClean up accidental merge conflict markers left in README.md during\na previous merge.\n\nChange-Id: I7ecf5de932d2a45b854908aae411ee11fed35e20\n"
    },
    {
      "commit": "5e14884c2a9ff3f14ffd448725a43694b630fdde",
      "tree": "bbb0673c1572067a58d9cf5f94bff392b32795e2",
      "parents": [
        "5621ed7eba03c46b3722520332714261d863088d"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Mar 06 07:31:57 2026 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Fri Mar 06 08:29:36 2026 +0100"
      },
      "message": "Consume commons-net from Gerrit plugin API\n\nGerrit core now exposes commons-net via the plugin API classpath, so the\nplugin no longer needs to declare it as an explicit dependency.\n\nRemove the direct dependency on @commons-net//jar.\n\nAlso format the BUILD file with buildifier.\n\nDepends-On: https://gerrit-review.googlesource.com/c/gerrit/+/558621\nChange-Id: I69a8ab96f316ce0d27e9994a570ac75172b58b65\n"
    },
    {
      "commit": "5621ed7eba03c46b3722520332714261d863088d",
      "tree": "1f926d9938bc10ffedcf57d28807a05a47a94675",
      "parents": [
        "c86890b09b698ff72dc47a0472c11ff0ca49f40d"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Mar 02 13:56:50 2026 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Mar 04 11:18:08 2026 +0100"
      },
      "message": "Move InstantTypeAdapter to package c.e.g.p.highavailability.forwarder\n\nsince it\u0027s now used by both the JGroups and REST forwarder\nimplementations.\n\nChange-Id: I35f56f8f39e2695be12acf8fec94a26bcf7972b9\n"
    },
    {
      "commit": "c86890b09b698ff72dc47a0472c11ff0ca49f40d",
      "tree": "9026ec73f849bc7225c572f5a3cae5be4ea5461d",
      "parents": [
        "b6d616d905b8e1215a8cd559270e41ad4ea3e272"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Mon Mar 02 11:25:49 2026 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Mar 04 11:18:08 2026 +0100"
      },
      "message": "Add a provider for gson instances containing required type adapters\n\nto avoid code duplication when registering type adapters for the Gson\ninstances used by the REST forwarder implementation to handle event\nprocessing in json format.\n\nChange-Id: Ibdcde4c63a4b0ff6b77e19068382b2fee8d3fa6c\n"
    },
    {
      "commit": "b6d616d905b8e1215a8cd559270e41ad4ea3e272",
      "tree": "7069cfaa551ca44e163284a22c1c59c565c74837",
      "parents": [
        "6258a504e23776b128b1e23f98fd97a496d63c5d"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Fri Feb 27 16:48:55 2026 +0100"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Wed Mar 04 11:17:51 2026 +0100"
      },
      "message": "[Hotfix] Fix event deserialisation for REST Forwarder servlets\n\nThe type change of the createdOn field to Instant caused deserialization\nto fail. A type adapter was implemented, but not correctly bound.\n\nThis change adds the type adapter in the gson objects of the\nservlets.\n\nA followup change should properly add a provider for the gson instances\nthat contains the type adapters.\n\nBug: Issue 489447098\nChange-Id: I511b9285da5d80210b6c7de51b66c9dccbd0048b\n"
    },
    {
      "commit": "6258a504e23776b128b1e23f98fd97a496d63c5d",
      "tree": "15c0725a98930a989865af7e1ce1ccc5416e3aae",
      "parents": [
        "4bde9ba38af6384bf77a8de2d3a4cee0f0e9e6e8",
        "6aa1b3ea69e6069d0b35d7d7292711a0c516c322"
      ],
      "author": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@gmail.com",
        "time": "Fri Dec 12 04:16:36 2025 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 12 04:16:36 2025 -0800"
      },
      "message": "Merge changes I475d55b3,I2bc7b3f7,Ibc04347f,I17368493,I642953e4, ...\n\n* changes:\n  Use Java record for Forwarder.Result\n  Add metric displaying the number of retries required to forward event\n  Add metrics to measure time of processing forwarded event\n  Add metric reporting the success/failure of event processing\n  Add metrics measuring time between event creation and response\n  Use millisecond accuracy for IndexEvent.eventCreatedOn\n  Add metric about failure/success count of forwarding request\n  Use enum for Command.TYPE\n"
    },
    {
      "commit": "6aa1b3ea69e6069d0b35d7d7292711a0c516c322",
      "tree": "38078eb9942ade2349ca02f3a5a79296163b0b93",
      "parents": [
        "3b9d8b3a9815819602d263ae16566d8ae5c8470f"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Oct 01 15:13:03 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Dec 10 12:32:31 2025 +0100"
      },
      "message": "Use Java record for Forwarder.Result\n\nChange-Id: I475d55b33aff1c5b6e893178779fd0eda269cac1\n"
    },
    {
      "commit": "3b9d8b3a9815819602d263ae16566d8ae5c8470f",
      "tree": "96c61549757f983dc6ee814930ab334cf31c7d69",
      "parents": [
        "af97c9478bb51208625350c89f1342f47d657db0"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Thu Sep 18 10:37:14 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Dec 10 12:32:31 2025 +0100"
      },
      "message": "Add metric displaying the number of retries required to forward event\n\nChange-Id: I2bc7b3f7b942afa46c9d3abf2d8fc6033aa7a0b1\n"
    },
    {
      "commit": "af97c9478bb51208625350c89f1342f47d657db0",
      "tree": "a9a6c08be9b2b940e72b44c0201e00af3570afd2",
      "parents": [
        "90bbd86f486111c5e58c6a891d0390b7ec400fc6"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Sep 17 09:26:27 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Dec 10 12:32:31 2025 +0100"
      },
      "message": "Add metrics to measure time of processing forwarded event\n\nChange-Id: Ibc04347f17e7b6ebe4082a487d7a30c3a2767bfe\n"
    },
    {
      "commit": "90bbd86f486111c5e58c6a891d0390b7ec400fc6",
      "tree": "f6a59ffe89cc9240bd0b51dddfa716559fd13340",
      "parents": [
        "b0b078ffe87aa727c60ecb4b193114ca3b459f5d"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Sep 17 08:54:39 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Dec 10 12:32:30 2025 +0100"
      },
      "message": "Add metric reporting the success/failure of event processing\n\nChange-Id: I17368493f8ce49509f9b71a2772bd7ba23d7f765\n"
    },
    {
      "commit": "b0b078ffe87aa727c60ecb4b193114ca3b459f5d",
      "tree": "6dbc87356e476139fb9a2cee7c527f4a10869a6a",
      "parents": [
        "de4c8a2178daa6bfb4f52eb30d84e3f0b4a4ba6e"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Sep 17 08:17:25 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Dec 10 12:32:30 2025 +0100"
      },
      "message": "Add metrics measuring time between event creation and response\n\nChange-Id: I642953e4e604a7c865d93960602af764ac56957b\n"
    },
    {
      "commit": "de4c8a2178daa6bfb4f52eb30d84e3f0b4a4ba6e",
      "tree": "1ada0ba0f200e70c7bdd80b387b4297714c26fce",
      "parents": [
        "0a2ca212b0140fd659264ad414a8efb4f75df643"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Tue Sep 16 16:17:10 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Dec 10 12:32:28 2025 +0100"
      },
      "message": "Use millisecond accuracy for IndexEvent.eventCreatedOn\n\nAlso use the more modern `Instant` API.\n\nChange-Id: I449aefca0fb47fc3d90dd4c47a9d823689a2681c\n"
    },
    {
      "commit": "0a2ca212b0140fd659264ad414a8efb4f75df643",
      "tree": "09618371c321db7feb49df4dff42eea41187d763",
      "parents": [
        "3da5426281b7523bd81c264c0dab0483d8687d6c"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Thu Nov 13 10:01:29 2025 +0100"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Fri Dec 05 15:58:02 2025 +0100"
      },
      "message": "Add metric about failure/success count of forwarding request\n\nChange-Id: I17f74f385b4d2ad64a9d75f16e76bd6a2687ab31\n"
    },
    {
      "commit": "3da5426281b7523bd81c264c0dab0483d8687d6c",
      "tree": "34aac34b85a8df6c05ce9f6e13f3ca31bf07eed9",
      "parents": [
        "259d6db7c559361d7802df2c6d010e49d7d177c9"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Thu Nov 13 09:54:44 2025 +0100"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Fri Dec 05 15:38:05 2025 +0100"
      },
      "message": "Use enum for Command.TYPE\n\nThis is done in preparation of assigning metrics to event types.\n\nChange-Id: Ib6c6a9cba2bac245db0c58ba0ebc681ec2ab5ac3\n"
    },
    {
      "commit": "4bde9ba38af6384bf77a8de2d3a4cee0f0e9e6e8",
      "tree": "e651d641923ad4576ede98fa4054cdfdcffc930f",
      "parents": [
        "259d6db7c559361d7802df2c6d010e49d7d177c9",
        "56c9207c796c5498205e6c6141275113defedf3e"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:42:37 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:42:44 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.13\u0027\n\n* stable-3.13:\n  Enable metrics for the high-availability executors\u0027 queues\n  Reduce HTTP check internal to 1s in Docker tests\n  Use healthcheck plugin for Docker tests\n  Set GERRIT_BRANCH to stable-3.13\n  Set GERRIT_BRANCH to stable-3.12\n\nChange-Id: Ia2ffc0ad4ce82287366efeb723ee4779860c4187\n"
    },
    {
      "commit": "56c9207c796c5498205e6c6141275113defedf3e",
      "tree": "e651d641923ad4576ede98fa4054cdfdcffc930f",
      "parents": [
        "8586486d64be2d0469d491c19f19461b53d57e97",
        "11cc242fd09e9a89581336cd77b704e761b18be5"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:41:21 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:41:36 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.12\u0027 into stable-3.13\n\n* stable-3.12:\n  Enable metrics for the high-availability executors\u0027 queues\n\nChange-Id: I1d809469dd3bb05a5e853b37299315a39d5afe39\n"
    },
    {
      "commit": "11cc242fd09e9a89581336cd77b704e761b18be5",
      "tree": "a49ff0764440aba2125f863932065356ada36951",
      "parents": [
        "f762b24188e603401bec4ed49fa0d12238778ba1",
        "b49f2baf2c24a50df6508cc684fcd7d8b1dae690"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:40:17 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:40:24 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.11\u0027 into stable-3.12\n\n* stable-3.11:\n  Enable metrics for the high-availability executors\u0027 queues\n\nChange-Id: I5966c2e4eac9bdc27dd60f631a9e888d50914934\n"
    },
    {
      "commit": "b49f2baf2c24a50df6508cc684fcd7d8b1dae690",
      "tree": "9b1ef700287471e47881a938dcacd7c77d5f8f36",
      "parents": [
        "87afdaf88f451d3ca5dace5de853a3f5e5d569a6",
        "9a3203ac9f30c228f0f311b843ecbdc1f468c54a"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:39:08 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:39:16 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Enable metrics for the high-availability executors\u0027 queues\n\nChange-Id: I62ded644af2c10b6fcefcd1716b2defe742f7868\n"
    },
    {
      "commit": "9a3203ac9f30c228f0f311b843ecbdc1f468c54a",
      "tree": "52664824252a1baed7cc346c205503213e261e61",
      "parents": [
        "91987df60a4507237950a0ce8645394f1f0a4eed",
        "0e117f6fa0ea3faddb3f6b42c766d8992933bf29"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:38:14 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:38:14 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Enable metrics for the high-availability executors\u0027 queues\n\nChange-Id: I183a40eba353fb1e8a4e1703ca5e5720304ea84b\n"
    },
    {
      "commit": "0e117f6fa0ea3faddb3f6b42c766d8992933bf29",
      "tree": "5146f9092ff701203f47ffe1fde3773f6cdabdb4",
      "parents": [
        "52df4ebd0639a03ce36b6955d515a4cef704a9c1",
        "bde3832a21f7100517a39f43ac1e682853e52dde"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:20:25 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 11:35:09 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Enable metrics for the high-availability executors\u0027 queues\n\nChange-Id: I11c3cc20f4b2476765c7724d41a00511d4c9d942\n"
    },
    {
      "commit": "bde3832a21f7100517a39f43ac1e682853e52dde",
      "tree": "1f274a295ba386c29d5cedb61b4150d20ed7ac56",
      "parents": [
        "f34008f4d67fee2786b4911a48f6c924e6edc5b1",
        "0ad0505854bda98cfbe33b0d0b35a007a4426084"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 09:20:21 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 09:20:21 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Enable metrics for the high-availability executors\u0027 queues\n\nChange-Id: I132f2bf68d0f24bb6a909ad65f9182ae0ab2fce0\n"
    },
    {
      "commit": "0ad0505854bda98cfbe33b0d0b35a007a4426084",
      "tree": "4c51c74c8d9b25cfdbf28c5c62806ba27773666f",
      "parents": [
        "5c290f95091f07a98a182f7609735d924b361061",
        "b8fb8e29671b943444d3adba70d98a01554c9f88"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 09:19:31 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 21 09:19:31 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  Enable metrics for the high-availability executors\u0027 queues\n\nChange-Id: I3d092df24460f555fef73ea1297f5230f02fbfba\n"
    },
    {
      "commit": "b8fb8e29671b943444d3adba70d98a01554c9f88",
      "tree": "c62d083b0c550ccee7981aadfee7e63b4863fadb",
      "parents": [
        "61993b4780919f283feff8e33f6ef05dce91ad5b"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Nov 18 14:35:56 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Nov 18 20:01:48 2025 +0000"
      },
      "message": "Enable metrics for the high-availability executors\u0027 queues\n\nAllow the Gerrit admin to track the activity of the thread pools and\nqueues status of the executors used by the plugin which also allows to\ndetect forwarding lags and highlight issues.\n\nThe use of queue metrics requires to change the reload mode of\nthe plugin to \u0027restart\u0027 because the new and old version of the plugin\nwon\u0027t be able to cohexist as they share the same namespace for the\ngenerated metrics.\n\nAlso add the missing listeners\u0027 registration of the executors which\nprevented the existing thread pools to be shutdown and released\nupon plugin unload / reload or Gerrit shutdown.\n\nChange-Id: Ic3845971cdd803e0e8701222ec1d844aafbdcf43\n"
    },
    {
      "commit": "8586486d64be2d0469d491c19f19461b53d57e97",
      "tree": "9355af1cd48caf6166b2762532f22f096874e454",
      "parents": [
        "ec249882ac345c58f17bf4bc72288fe37f572a42",
        "f762b24188e603401bec4ed49fa0d12238778ba1"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 19:50:04 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 19:50:04 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.12\u0027 into stable-3.13\n\n* stable-3.12:\n  Reduce HTTP check internal to 1s in Docker tests\n  Use healthcheck plugin for Docker tests\n\nChange-Id: I83572cf9efff6c0e08c2c1b6962f68354743e41a\n"
    },
    {
      "commit": "f762b24188e603401bec4ed49fa0d12238778ba1",
      "tree": "c45c9a30dc372ddb5de048be5bca5d7194b61795",
      "parents": [
        "6816f90f978faafd9b87b799a8581b66e890a950"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 19:45:47 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 11:49:25 2025 -0700"
      },
      "message": "Reduce HTTP check internal to 1s in Docker tests\n\nWhen testing the reaction of the Gerrit HA setup to unhealthiness, it is\nimportant that the incoming calls will be promptly redirected to the\nhealthy node.\n\nThe old delay of 10s and three consecutive check failures was bringing\nthe whole HA cluster to be unhealthy for 30s, which is quite unpleasant\nuser experience.\n\nChange-Id: I9fb91043b3c6a62f66bba36c9119c72aaf273f24\n"
    },
    {
      "commit": "6816f90f978faafd9b87b799a8581b66e890a950",
      "tree": "c7d15d849e4eadfec1d1e5281f22e76067ab8b6d",
      "parents": [
        "7ae498815687d7dcfbc432c3d4e698cebe2f994c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 18:31:51 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 10:39:05 2025 -0700"
      },
      "message": "Use healthcheck plugin for Docker tests\n\nThe typical setup of Gerrit with the high-availability plugin includes\nthe healthcheck endpoint, therefore, include the extra plugin in the\nDocker test environment and show how the HAProxy configuration would\nthen look like.\n\nChange-Id: Ia49560a08e1069ec94cc6020517dae938a5a555b\n"
    },
    {
      "commit": "ec249882ac345c58f17bf4bc72288fe37f572a42",
      "tree": "13f8c65a1f1fc013c309d83343f1222d17ace3c7",
      "parents": [
        "f59b25f23845fda60d72cc0eaf56e32d73e944de"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 13:37:37 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 13:44:56 2025 +0100"
      },
      "message": "Set GERRIT_BRANCH to stable-3.13\n\nUse stable-3.13 for the Docker test environment.\nThe zookeeper-refdb plugin is now downloaded from the GitHub\u0027s\nsource as it has become BSL licensed by GerritForge.\n\nChange-Id: Id8837175441ee3b0376dacc7cff450e014620fdc\n"
    },
    {
      "commit": "f59b25f23845fda60d72cc0eaf56e32d73e944de",
      "tree": "3b188cca8691007859e0b30f089c19482ac11a20",
      "parents": [
        "259d6db7c559361d7802df2c6d010e49d7d177c9",
        "7ae498815687d7dcfbc432c3d4e698cebe2f994c"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 13:36:29 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 13:36:29 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.12\u0027 into stable-3.13\n\n* stable-3.12:\n  Set GERRIT_BRANCH to stable-3.12\n\nChange-Id: I422e59087ebfc2d80979446c6bb51e8a21f86253\n"
    },
    {
      "commit": "7ae498815687d7dcfbc432c3d4e698cebe2f994c",
      "tree": "9ff3ba23dc8f593ec947596ccee4711d76dcf1d7",
      "parents": [
        "57de487cd95965a2b6f14f5d67c06b1bcaabebb5"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 13:27:03 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Oct 15 13:27:10 2025 +0100"
      },
      "message": "Set GERRIT_BRANCH to stable-3.12\n\nUse stable-3.12 for the Docker test environment.\n\nChange-Id: Ic343ab18028764d72d786fdb7eab19477f6d9f6a\n"
    },
    {
      "commit": "259d6db7c559361d7802df2c6d010e49d7d177c9",
      "tree": "f92a0ff8d154f89a76959d1405a46d4edb6ad3d6",
      "parents": [
        "7f52f6e1ee4a00268c04cf0a4c0807c29fa1340e"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Fri Sep 26 15:27:36 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Fri Sep 26 06:49:37 2025 -0700"
      },
      "message": "Add tokens cache to default set of forwarded eviction events\n\nChange-Id: I4f4cbd5e769386dfe7fc47e1e127226686a19dc6\n"
    },
    {
      "commit": "7f52f6e1ee4a00268c04cf0a4c0807c29fa1340e",
      "tree": "fa3d61bca3fbfd0465fa978f90e29b3a232f5847",
      "parents": [
        "a31c411b7577b355786ed4c857b7c52b6bac2069",
        "57de487cd95965a2b6f14f5d67c06b1bcaabebb5"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 21:30:03 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 21:30:03 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.12\u0027\n\n* stable-3.12:\n  Update base OS to AlmaLinux 9.3 and Java 17\n  Get global-refdb.jar from Gerrit-CI\n  Bump Gerrit to 3.9\n  Add missing syslog-sidecar in docker-compose.yaml\n  Removing obsolete version attribute in docker-compose.yaml\n  Active/active setup using zookeeper-refdb plugin and zookeeper service\n\nChange-Id: Ibe9e2dcf387705b3252c90916ab4285e0131dff6\n"
    },
    {
      "commit": "57de487cd95965a2b6f14f5d67c06b1bcaabebb5",
      "tree": "8380a2a09bf1b1e2ee8eae8d03965436627b0b75",
      "parents": [
        "0b14d1d45e0fcff330d743ac56dff620c5577b85",
        "87afdaf88f451d3ca5dace5de853a3f5e5d569a6"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 21:29:35 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 21:29:35 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.11\u0027 into stable-3.12\n\n* stable-3.11:\n  Update base OS to AlmaLinux 9.3 and Java 17\n  Get global-refdb.jar from Gerrit-CI\n  Bump Gerrit to 3.9\n  Add missing syslog-sidecar in docker-compose.yaml\n  Removing obsolete version attribute in docker-compose.yaml\n  Active/active setup using zookeeper-refdb plugin and zookeeper service\n\nChange-Id: Id5629402d8aa08f0215d90dbd9dadf7573eaa579\n"
    },
    {
      "commit": "87afdaf88f451d3ca5dace5de853a3f5e5d569a6",
      "tree": "399697821779d765488ed04329d002f55e6120aa",
      "parents": [
        "80d9bb5ce3fdb922949952ae4a860769ab152240",
        "91987df60a4507237950a0ce8645394f1f0a4eed"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 21:27:48 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 21:27:48 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Update base OS to AlmaLinux 9.3 and Java 17\n  Get global-refdb.jar from Gerrit-CI\n  Bump Gerrit to 3.9\n  Add missing syslog-sidecar in docker-compose.yaml\n  Removing obsolete version attribute in docker-compose.yaml\n  Active/active setup using zookeeper-refdb plugin and zookeeper service\n\nChange-Id: I1e2b1a642cec1ec49addfee2a9b6e8f934c480d3\n"
    },
    {
      "commit": "91987df60a4507237950a0ce8645394f1f0a4eed",
      "tree": "36c475d6db1cf11d82a24d4e39f9430ed8b0a87d",
      "parents": [
        "1bc83756877077a73f395b9bd2306c806b561536",
        "52df4ebd0639a03ce36b6955d515a4cef704a9c1"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 21:24:15 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 13:25:58 2025 -0700"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Update base OS to AlmaLinux 9.3 and Java 17\n  Get global-refdb.jar from Gerrit-CI\n  Bump Gerrit to 3.9\n  Add missing syslog-sidecar in docker-compose.yaml\n  Removing obsolete version attribute in docker-compose.yaml\n\nChange-Id: Idfb1f121413f7f93f7949af7af39bce8a939348e\n"
    },
    {
      "commit": "52df4ebd0639a03ce36b6955d515a4cef704a9c1",
      "tree": "b86b018cdb5ec1b0959e4175a4a621f8737b9f86",
      "parents": [
        "d6037a9ce0b03326202ebc77e383218c954d93a0"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Nov 20 10:36:27 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 13:00:17 2025 -0700"
      },
      "message": "Update base OS to AlmaLinux 9.3 and Java 17\n\nGerrit v3.9 is certified to work with AlmaLinux 9.3\nand is built for Java 17.\n\nChange-Id: Iac255e03b33e03f4919caac29d2487ba12baaf73\n"
    },
    {
      "commit": "a31c411b7577b355786ed4c857b7c52b6bac2069",
      "tree": "fa3d61bca3fbfd0465fa978f90e29b3a232f5847",
      "parents": [
        "681f711911eaf22c96f45df82a7ffde104ff2b72",
        "0b14d1d45e0fcff330d743ac56dff620c5577b85"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 20:41:51 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 20:41:51 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.12\u0027\n\n* stable-3.12:\n  Rename master word to primary\n  Forward project-wide change index deletions\n\nChange-Id: Ied18b2e9494a61e72dde33c8dc53723eb382fd83\n"
    },
    {
      "commit": "681f711911eaf22c96f45df82a7ffde104ff2b72",
      "tree": "01e396305479ca05f31175376eb591f49f703d4c",
      "parents": [
        "5b8bfcbc4ff4fc669671ba640fc0387cb84170a5"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 16 21:05:22 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 16 21:16:52 2025 +0200"
      },
      "message": "Drop tests asserting defaults on invalid time units\n\nParsing invalid time units now throws IllegalArgumentException (since\nchange I23f5586e1f6) instead of silently falling back to defaults. The\nhigh-availability configuration tests were still asserting that an\ninvalid value should yield the default, which no longer reflects the\ncurrent contract and caused brittle failures.\n\nThis change removes those assertions from ConfigurationTest for:\n- http.connectionTimeout\n- http.socketTimeout\n- http.retryInterval\n\nRationale:\n- These checks verify ConfigUtil’s parsing behavior, which is already\n  covered by its own test suite.\n- The plugin does not promise a default-on-error fallback; encoding that\n  expectation in its tests is misleading.\n- Dropping the assertions decouples the plugin tests from lower-level\n  parsing details and prevents false failures after the API change.\n\nBug: Issue 445404588\nChange-Id: Ie112b7dce05d35cdd4e4e3028c38b0d7d0d660b4\n"
    },
    {
      "commit": "d6037a9ce0b03326202ebc77e383218c954d93a0",
      "tree": "7eb3d2b4e26b2c603b66eb7d6211dac6a78a9bff",
      "parents": [
        "1f79cf3746652f9dc23d39799676c2b89c28bcd2"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Nov 20 10:38:10 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 14:43:04 2025 +0100"
      },
      "message": "Get global-refdb.jar from Gerrit-CI\n\nChange-Id: Icaf2e667dde350b1ee7da10562a850075bfbf6d5\n"
    },
    {
      "commit": "1f79cf3746652f9dc23d39799676c2b89c28bcd2",
      "tree": "d1f08c6c3cb2c96ad6682932bf889ab042d08c90",
      "parents": [
        "ef5f046e09b6fa89b13f98231ffd9a578c4d65e7"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 14:41:06 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 14:41:06 2025 +0100"
      },
      "message": "Bump Gerrit to 3.9\n\nChange-Id: I70a7a3a07e73f0e07e9697d79edb0b8b9f4c8f1d\n"
    },
    {
      "commit": "ef5f046e09b6fa89b13f98231ffd9a578c4d65e7",
      "tree": "d8d1d6b3ec89ff103db702286acf58f827a363ea",
      "parents": [
        "f288a173aaba6e58e970a5c5bc77bd3111d32a69"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Nov 20 10:21:40 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 14:39:29 2025 +0100"
      },
      "message": "Add missing syslog-sidecar in docker-compose.yaml\n\nChange-Id: Ia8c7a9f7aadc572a29127498644f718b220d049e\n"
    },
    {
      "commit": "f288a173aaba6e58e970a5c5bc77bd3111d32a69",
      "tree": "367711fd67f1eebc8b42a16b0c9637ae13d367e4",
      "parents": [
        "fc373e86638a0756d60da38a2495412b7f6b3e05"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Nov 20 10:19:44 2024 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Sep 16 06:38:21 2025 -0700"
      },
      "message": "Removing obsolete version attribute in docker-compose.yaml\n\nChange-Id: I17acaed361de65f98d2ebed5dec456186717a78a\n(cherry picked from commit c7480d3bcb61ce91b9f021e3caf43383d12bf1ba)\n"
    },
    {
      "commit": "0b14d1d45e0fcff330d743ac56dff620c5577b85",
      "tree": "8380a2a09bf1b1e2ee8eae8d03965436627b0b75",
      "parents": [
        "843d7b30584555a3826b000af68821e1bedc9234"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Sep 11 16:52:01 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Sep 12 01:05:45 2025 -0700"
      },
      "message": "Rename master word to primary\n\nNaming convention of master/slave have been replaced across the Gerrit\neco-system to less offensive and more appropriate primary/replica.\n\nAdapt the high-availability code to this convention my renaming all\ncomment, documentation and variable instances using the word \"primary\"\nrather than \"master\".\n\nChange-Id: Ia3f83915f8ab064096cf09a44122b27678711c35\n"
    },
    {
      "commit": "843d7b30584555a3826b000af68821e1bedc9234",
      "tree": "4585be795d216f26c1134ed45415c16198728ccc",
      "parents": [
        "5af509297cdfb18d2d5ad5c7d16b0d1e04d8f22a"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Tue Sep 09 13:32:32 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Sep 11 16:42:27 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 (introduced by\nI4c8a536290) and forward a single project-scoped index/change request so\npeers can delete all change documents for that project in one operation.\n\nTo propagate this event to the peer nodes, this change adds:\n- a REST endpoint: DELETE\n  /plugins/high-availability/index/change/\u003cproject\u003e~0\n- A JGroups command\n\nBug: Issue 443765380\nChange-Id: Idcd255f0e9778b6c4b8495dafd2f5ecdce4e1a91\n"
    },
    {
      "commit": "5b8bfcbc4ff4fc669671ba640fc0387cb84170a5",
      "tree": "a9ab302e50331eefd1f62a1ab17d1763cd833cf3",
      "parents": [
        "ab8d206a8d21bf7addd2dc736ee1ec01e45a55df",
        "5af509297cdfb18d2d5ad5c7d16b0d1e04d8f22a"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Aug 23 22:22:25 2025 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Aug 23 22:22:25 2025 +0200"
      },
      "message": "Merge branch \u0027stable-3.12\u0027\n\n* stable-3.12:\n  Fix GERRIT_VERSION to GERRIT_BRANCH rename lost in merge I0285d2c7\n\nChange-Id: I276af2fdc86c190a4f0f3e7fd94e54f2ca5f3279\n"
    },
    {
      "commit": "5af509297cdfb18d2d5ad5c7d16b0d1e04d8f22a",
      "tree": "325eecd2fdb8af1a5db6166a7d0cead073b30c02",
      "parents": [
        "8c7e9988d471893c774b153ae2e25ec622eeb10d"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Aug 23 22:13:19 2025 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Sat Aug 23 22:13:19 2025 +0200"
      },
      "message": "Fix GERRIT_VERSION to GERRIT_BRANCH rename lost in merge I0285d2c7\n\nChange-Id: Ic48fd37261173331faeb3a2ce460aa778ffea3dd\n"
    },
    {
      "commit": "ab8d206a8d21bf7addd2dc736ee1ec01e45a55df",
      "tree": "b74b26719973394e4c3612491134f8b8cccb168d",
      "parents": [
        "735e304131ba087577986d44da7f3835190a8278"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Fri Aug 22 08:26:17 2025 +0200"
      },
      "committer": {
        "name": "Matthias Sohn",
        "email": "matthias.sohn@sap.com",
        "time": "Fri Aug 22 11:25:36 2025 +0200"
      },
      "message": "Fix wrong import of shaded common dependency\n\nChange-Id: I3bdfabc96bb4ddb921798b60a144814b636d8e6f\n"
    },
    {
      "commit": "1bc83756877077a73f395b9bd2306c806b561536",
      "tree": "d8ca1048a8dbd8e6232323f22bfa6b88d0e80713",
      "parents": [
        "35f9021216e05d8305a41b1ee909c8402410a92f"
      ],
      "author": {
        "name": "Saša Živkov",
        "email": "sasa.zivkov@sap.com",
        "time": "Mon Jul 24 10:40:40 2023 +0200"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Mon Aug 04 13:43:14 2025 +0100"
      },
      "message": "Active/active setup using zookeeper-refdb plugin and zookeeper service\n\nChange-Id: I3e23c07239e4e034b45827a79120d33283cf045c\n(cherry picked from commit 4e53ee22a04401e24de3613bd59dd07cd9430504)\n"
    },
    {
      "commit": "735e304131ba087577986d44da7f3835190a8278",
      "tree": "d97bd9db463f4c440656afd9bc2cb85cc4452254",
      "parents": [
        "cf6d43bcee8eaf8f20f3cb1cb72ee97518e95962"
      ],
      "author": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Jul 30 09:25:04 2025 +0200"
      },
      "committer": {
        "name": "Thomas Dräbing",
        "email": "thomas.draebing@sap.com",
        "time": "Wed Jul 30 09:25:04 2025 +0200"
      },
      "message": "Adapt bindings to updated global-refdb API\n\nChange-Id: I5463689042cf5be86d999ae1b84ed6f87f82985d\n"
    },
    {
      "commit": "cf6d43bcee8eaf8f20f3cb1cb72ee97518e95962",
      "tree": "81fa5d637cc27bbd48bffade82d911427da54171",
      "parents": [
        "49c08f22c9215989e9380a3752e57922a226f6d2",
        "8c7e9988d471893c774b153ae2e25ec622eeb10d"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 18:13:46 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 18:13:46 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.12\u0027\n\n* stable-3.12:\n  Add missing binding of ProjectDeletedListener\n  Fix the Docker-based setup for the HA test environment\n  Verify high-availability formatting using GJF 1.7\n  Use Java 21 for the Gerrit image\n  Fix incorrect conflict resolution in Iaf0960a595\n  Use GerritForge fork of the nfs-server\n\nChange-Id: I8a0e25b3cb297455754eb6c78b78b901dc88aaf0\n"
    },
    {
      "commit": "8c7e9988d471893c774b153ae2e25ec622eeb10d",
      "tree": "fd850c5ef27fcacbddfe4e6b1eb8c46d69a15068",
      "parents": [
        "18f146cfe29e18a51f7ce6189d99ef9e023dd7ec",
        "80d9bb5ce3fdb922949952ae4a860769ab152240"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 18:13:18 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 18:13:18 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.11\u0027 into stable-3.12\n\n* stable-3.11:\n  Add missing binding of ProjectDeletedListener\n  Fix the Docker-based setup for the HA test environment\n  Verify high-availability formatting using GJF 1.7\n  Use Java 21 for the Gerrit image\n  Fix incorrect conflict resolution in Iaf0960a595\n  Use GerritForge fork of the nfs-server\n\nChange-Id: I0285d2c7efcb9dbd52dab88ab14649f813c0f40d\n"
    },
    {
      "commit": "80d9bb5ce3fdb922949952ae4a860769ab152240",
      "tree": "399697821779d765488ed04329d002f55e6120aa",
      "parents": [
        "490b445b007d49c7712cfbf36a959523cd666245",
        "35f9021216e05d8305a41b1ee909c8402410a92f"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 18:12:22 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 18:12:22 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.10\u0027 into stable-3.11\n\n* stable-3.10:\n  Add missing binding of ProjectDeletedListener\n  Fix the Docker-based setup for the HA test environment\n  Verify high-availability formatting using GJF 1.7\n\nChange-Id: Ib8309791b3c8d07f8427461979609f201a963faa\n"
    },
    {
      "commit": "35f9021216e05d8305a41b1ee909c8402410a92f",
      "tree": "615a76dc969bc3b7fb38b8bba06cbf3800e2285b",
      "parents": [
        "78f094d6c637868c38a2d9adf32d1b59e628a00f",
        "fc373e86638a0756d60da38a2495412b7f6b3e05"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 18:09:00 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 18:09:00 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.9\u0027 into stable-3.10\n\n* stable-3.9:\n  Add missing binding of ProjectDeletedListener\n  Fix the Docker-based setup for the HA test environment\n  Verify high-availability formatting using GJF 1.7\n\nChange-Id: I7c31eac3b8926d70db3e2ecd6f66ca4ba572b2b1\n"
    },
    {
      "commit": "fc373e86638a0756d60da38a2495412b7f6b3e05",
      "tree": "b288f8533d1f5f278429c25fc33e939e751db530",
      "parents": [
        "9e091d4566e942c4ce638024ac62e670e4a71fd4",
        "f34008f4d67fee2786b4911a48f6c924e6edc5b1"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 17:51:15 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 18:07:39 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.8\u0027 into stable-3.9\n\n* stable-3.8:\n  Add missing binding of ProjectDeletedListener\n  Fix the Docker-based setup for the HA test environment\n  Verify high-availability formatting using GJF 1.7\n\nAlso revert the GJF 1.7 change and leave the default formatting version\nfrom Gerrit and fix the formatting issues.\n\nChange-Id: I1858c0f059263fee9bb80206d846fb2235b754ac\n"
    },
    {
      "commit": "f34008f4d67fee2786b4911a48f6c924e6edc5b1",
      "tree": "da1b370979c23e712426366f95df62e221aa234a",
      "parents": [
        "19b3683df76e80dc812979b814b6afc3063be166",
        "5c290f95091f07a98a182f7609735d924b361061"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 17:49:59 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 17:49:59 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.7\u0027 into stable-3.8\n\n* stable-3.7:\n  Add missing binding of ProjectDeletedListener\n  Fix the Docker-based setup for the HA test environment\n  Verify high-availability formatting using GJF 1.7\n\nChange-Id: If886c427df62ad6373a2749a89e622a5acd646cc\n"
    },
    {
      "commit": "5c290f95091f07a98a182f7609735d924b361061",
      "tree": "adfd05c3edf99c36d725dc1e220cfb838c84da82",
      "parents": [
        "4e4dc5d512e7cc69dae63d5f3656d58db7c56ba1",
        "61993b4780919f283feff8e33f6ef05dce91ad5b"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 17:49:13 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 17:49:13 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.6\u0027 into stable-3.7\n\n* stable-3.6:\n  Add missing binding of ProjectDeletedListener\n  Fix the Docker-based setup for the HA test environment\n  Verify high-availability formatting using GJF 1.7\n\nChange-Id: I1707c4a319e9c140022fd3cc8b35cf4ef4abd48a\n"
    },
    {
      "commit": "61993b4780919f283feff8e33f6ef05dce91ad5b",
      "tree": "6f0c9d0bfc2667f5beb4d4cff5ea6d778e87d9de",
      "parents": [
        "86645f241b23a2cd9d057347f972956c63713cbe",
        "fecd9fa7bc0ab4aabf156164bcea17e5df8b01d2"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 17:48:07 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 17:48:07 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.5\u0027 into stable-3.6\n\n* stable-3.5:\n  Add missing binding of ProjectDeletedListener\n  Fix the Docker-based setup for the HA test environment\n  Verify high-availability formatting using GJF 1.7\n\nChange-Id: Id5248ae07bd66a11fc3d17f42868c2f5397a205b\n"
    },
    {
      "commit": "fecd9fa7bc0ab4aabf156164bcea17e5df8b01d2",
      "tree": "246f8f83d673142b33358a7ee88523f27c6d60f4",
      "parents": [
        "e2abadeef07238450192b6871846ddcdbd117f27",
        "7f2b10085c79a982506655df897511d34a10b363"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 17:44:56 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 17:44:56 2025 +0100"
      },
      "message": "Merge branch \u0027stable-3.4\u0027 into stable-3.5\n\n* stable-3.4:\n  Add missing binding of ProjectDeletedListener\n  Fix the Docker-based setup for the HA test environment\n  Verify high-availability formatting using GJF 1.7\n\nChange-Id: I0e3559d7257e955ebfa12240dd9e11c8dcf41e83\n"
    },
    {
      "commit": "7f2b10085c79a982506655df897511d34a10b363",
      "tree": "cd7f7a029598b6da056c1658eabe01ff9a824d2c",
      "parents": [
        "6407f33dde6fe1439c0463371d9fa2f227d604db"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 00:43:36 2025 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Fri Jun 06 09:26:27 2025 -0700"
      },
      "message": "Add missing binding of ProjectDeletedListener\n\nThe ProjectDeletedListener was never bound and therefore the\nglobal-refdb wasn\u0027t cleaned up properly upon project deletions.\n\nBug: Issue 422947553\nChange-Id: I152a02892c0e82bce04715783add62715562830b\n"
    }
  ],
  "next": "6407f33dde6fe1439c0463371d9fa2f227d604db"
}
