)]}'
{
  "log": [
    {
      "commit": "3cb5fa0294faa5597d6ec2bee0a5a7e0a8115bde",
      "tree": "ce29d3e8cc434446fde96ea7c2c839c862433f37",
      "parents": [
        "4040ce7cf3aa328d5d3538206eb103208e903c10"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Jan 05 13:42:37 2026 -0600"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Jan 05 15:31:05 2026 -0600"
      },
      "message": "Fix user extract pattern for maxStartForTaskForUserForQueue\n\nFixes the user extract pattern in maxStartForTaskForUserForQueue\nquota to use the updated logic in I69d2b4a1d.\n\nChange-Id: Ifb0abb139e6dcd8d5c7424ffe709df33e4d4bbe4\n"
    },
    {
      "commit": "4040ce7cf3aa328d5d3538206eb103208e903c10",
      "tree": "17ee0f4d4c4f6a49de185661ee2307d7736b0397",
      "parents": [
        "e0933bab4e2c307ced5970a2efe80719db5efb8c",
        "669f53ead9e5c92551f8d17b9da50f413b902b9e"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Dec 18 01:52:05 2025 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 18 01:52:05 2025 -0800"
      },
      "message": "Merge \"Persist repo size cache updates\""
    },
    {
      "commit": "e0933bab4e2c307ced5970a2efe80719db5efb8c",
      "tree": "2972cd8faa921e4f11b7b7a6547a5949687fd447",
      "parents": [
        "48b81abe4bf64aafd6d1dbd93661f7a0fef852d2",
        "e29413a60a36ee1403b0024b75bcff718ed28b63"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Dec 10 03:31:15 2025 -0800"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 10 03:31:15 2025 -0800"
      },
      "message": "Merge \"Add support for custom quota-exceeded messages\""
    },
    {
      "commit": "48b81abe4bf64aafd6d1dbd93661f7a0fef852d2",
      "tree": "4060d78ad4e79515e5ab1c86e8bbec91c7263bfc",
      "parents": [
        "c0f806b69111a9d4725e4c548aa78932a666f1d1"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Dec 08 09:23:40 2025 -0600"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Dec 08 09:23:40 2025 -0600"
      },
      "message": "Fix username matching pattern\n\nMake it possible to have hyphens, underscores and capital letters.\nInclude test which is a combination of user name extraction and\nsoft max quota.\n\nChange-Id: I69d2b4a1dfc4bb39940525bb27b6efd437867e68\n"
    },
    {
      "commit": "669f53ead9e5c92551f8d17b9da50f413b902b9e",
      "tree": "4e9d7043595ef97061364cccb354501ac55961f9",
      "parents": [
        "e29413a60a36ee1403b0024b75bcff718ed28b63"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Nov 28 16:14:02 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Thu Dec 04 18:39:54 2025 +0100"
      },
      "message": "Persist repo size cache updates\n\nEnsure that updates to the repo_size cache are persisted instead of only\nmutating the in-memory AtomicLong values.\n\nThe repo_size cache, introduced by Ia6be19c7f40, was updated only by\nmodifying the AtomicLong returned from the cache without writing the\nvalue back via cache.put(). This meant that changes were applied solely\nin memory and never propagated to the persistent cache layer. After a\nGerrit restart, all repo_size updates might have been lost.\n\nBecause the repo_size cache is configured with expireAfterWrite(1 day),\nthis bug only affected restarts that occurred before the TTL elapsed.\n\nThis led to incorrect quota enforcement. Once a repository reached its\nmaximum allowed size, pushes were correctly rejected. But after a\nrestart, the stale cached size from disk was used, causing Gerrit to\naccept new pushes even though the quota had already been exceeded.\n\nUpdate all call sites that modify the cached repository size to apply\nthe change and then persist it with cache.put(), keeping the in-memory\nand on-disk cache layers consistent across restarts.\n\nBug: Issue 464448637\nChange-Id: I2652482c3aa43dd34ec59cdb763ad8757b40d3ea\n"
    },
    {
      "commit": "c0f806b69111a9d4725e4c548aa78932a666f1d1",
      "tree": "cfab0208702534e5d67acc3e67bd1b2cfd9e0b60",
      "parents": [
        "26c9d2815a8cf4e10e2d11136d95d57de24d7ff1"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Nov 24 22:43:45 2025 -0600"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Dec 03 09:46:38 2025 -0800"
      },
      "message": "Log duration when task is unparked\n\nTrack and log how long tasks remain parked due to quota enforcement.\nWhen a task is unparked, the log now includes the duration it was\nwaiting.\n\nThis improves visibility into quota rules impact on task scheduling.\n\nChange-Id: I8cbec0be0747f94f68b6ba78caeaa96b84b853b0\n"
    },
    {
      "commit": "e29413a60a36ee1403b0024b75bcff718ed28b63",
      "tree": "3ea156835e608ccb6cc42c0406975c6555e04054",
      "parents": [
        "49266eddf0d96db729c2077adc355ca6869cc0dc"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Nov 24 20:37:41 2025 +0100"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Dec 03 11:14:38 2025 +0100"
      },
      "message": "Add support for custom quota-exceeded messages\n\nExtend the quota configuration with a new\n`sizeLimitExceededUnknownRequestSizeMsg` and\n`sizeLimitExceededKnownRequestSizeMsg` allowing administrators to define\ncustom error messages when a repository exceeds its size quota, for the\ncase when the size requested was unknown or known upfront, respectively.\n\nThe message supports the placeholders `${project}`, `${available}`,\n`${maximum}` and `${requested}` (when available) which are expanded at\nruntime using the new QuotaSizeMessageInterpolator.\n\nMaxRepositorySizeQuota is updated to return an AvailableSizeResponse\ninstead of a raw Long so that both the available space and the\ncorresponding maximum limit can be propagated.\n\nThe most restrictive quota (the smallest available size) is selected,\nand its custom message is used when constructing a client-facing\nQuotaResponse objects.\n\nA default message template is provided for quota sections that do not\ndefine their own message:\n\nWhen requested size quota is unknown:\n\n\"Project ${project} exceeds quota: max\u003d${maximum} bytes,\navailable\u003d${available} bytes.\"\n\nWhen requested size quota is known (as it was before this change):\n\n\"Requested space [${requested}] is bigger then available [${available}]\nfor repository ${project}\"\n\nBug: Issue 459520484\nDepends-On: I0e9e58734d6ebf9d669c1e70cf51b16aaa5a3bf0\nChange-Id: Iecb608b85d6c4547d219bf00b7186ca0c3c3eaec\n"
    },
    {
      "commit": "26c9d2815a8cf4e10e2d11136d95d57de24d7ff1",
      "tree": "b5a51755c0986844fdde8be3de2fc1a439d1416d",
      "parents": [
        "f6ccc7a21d5ff3db52d22d99cdbd01cd1d97e8d2"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Fri Nov 21 16:51:04 2025 -0600"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Fri Nov 21 16:53:28 2025 -0600"
      },
      "message": "Remove unused QuotaSection.isFallback which is buggy\n\nThis is unused and was causing bugs since QuotaSection is used\nas key in maps.\n\nChange-Id: I167919de5d0eef86ccb750b993dc08a27a0504dd\n"
    },
    {
      "commit": "f6ccc7a21d5ff3db52d22d99cdbd01cd1d97e8d2",
      "tree": "022014721d7a93c9346eaab9ef36de9761bd08f7",
      "parents": [
        "1f84b97f510346824329b866000270e37bac106b"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Fri Nov 21 16:34:33 2025 -0600"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Fri Nov 21 16:34:33 2025 -0600"
      },
      "message": "maxConnectionsPerUserForTask: Fix NPE\n\nFix NPE in cases where maxConnectionsPerUserForTask specified in\na non global section of quota config.\n\nChange-Id: Ic680cd2e338667c14dcac08ecdd92e3e439afdc6\n"
    },
    {
      "commit": "1f84b97f510346824329b866000270e37bac106b",
      "tree": "5347c11e86008fd126f4042d8777ff5a658852aa",
      "parents": [
        "a4f99b19cb1f7e1863f750076bbfc420936b25db"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Thu Nov 13 14:02:52 2025 -0600"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Thu Nov 13 14:02:52 2025 -0600"
      },
      "message": "Add logging when task are started from being parked\n\nChange-Id: I00d57f6a31f558368af3244ad506e385202e9cd7\n"
    },
    {
      "commit": "a4f99b19cb1f7e1863f750076bbfc420936b25db",
      "tree": "db307d1df2b52d016420aee94dfeb9016c937d0a",
      "parents": [
        "d5be7c37e10671229b9d9edb6d3e0fefd1992d4a"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Thu Nov 13 13:52:14 2025 -0600"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Thu Nov 13 13:52:14 2025 -0600"
      },
      "message": "Apply formatting changes\n\n- google-java-format\n- remove wild card imports\n- add missing headers\n\nChange-Id: I52f1f69fe6dedb081a4e1d31ad52f6920385e79f\n"
    },
    {
      "commit": "d5be7c37e10671229b9d9edb6d3e0fefd1992d4a",
      "tree": "629a2f8821600b298d377f06fd0de478202c8f6d",
      "parents": [
        "49266eddf0d96db729c2077adc355ca6869cc0dc"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Nov 12 13:02:15 2025 -0600"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Nov 12 16:15:27 2025 -0600"
      },
      "message": "Add logging for parked tasks\n\nLog task parking events with quota details for better debugging.\nCentralize quota logging in quota.log file\n\nChange-Id: If313ec184a8c6a6f603ca431d58a458dbed2e0d0\n"
    },
    {
      "commit": "49266eddf0d96db729c2077adc355ca6869cc0dc",
      "tree": "f6e3953264923f1e0f73032a285066b196a8ca01",
      "parents": [
        "e3ed220ef228ea4b52f3de8a231877e3e8a024ce"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Fri Oct 24 16:15:12 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Nov 05 16:23:21 2025 -0600"
      },
      "message": "Introduce test cases for quotas\n\nAdds basic framework and test case for `maxStartForTaskForQueue`.\n\nChange-Id: I96b37d18e87664e968253f5569f0a715535d7f22\n"
    },
    {
      "commit": "e3ed220ef228ea4b52f3de8a231877e3e8a024ce",
      "tree": "1711b4b27c314809ba05f2a9e1969dde8b868234",
      "parents": [
        "ccf63c80ee6d04f04e0467d40103db3626741d1e"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Oct 20 15:23:09 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Oct 22 14:37:57 2025 -0500"
      },
      "message": "Introduce minStartForQueue (capacity reservation)\n\nThis change introduces the ability to reserve a minimum number\nof threads on a work queue for a specific project, ensuring they\ncan start even under heavy load.\n\nChange-Id: Idbc863a0f6e453fabb4c11b00fbf6bb453fc865f\n"
    },
    {
      "commit": "ccf63c80ee6d04f04e0467d40103db3626741d1e",
      "tree": "dd5be634d43725479dd162484096aea0d352116f",
      "parents": [
        "ec6c228c8a9d4d634d0194b2f99a55888890db55"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Oct 20 11:12:34 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue Oct 21 17:39:39 2025 -0500"
      },
      "message": "QueueStats: Use task ids instead of counts\n\nThere are couple of bugs in core which makes it possible to call\nthe functions provided by TaskParker in out of order. To no mess\nup the counts for such cases, use task ids instead of monitoring\nthe count of tasks.\n\nChange-Id: Ic1341a998f9c26658366404e9d1ea710237e9851\n"
    },
    {
      "commit": "ec6c228c8a9d4d634d0194b2f99a55888890db55",
      "tree": "5c3669f36b77ab4d925ee59e6b8fb34b5f48c1ea",
      "parents": [
        "abd1e9ce0327c5e80bf262b7a17fccce895463c8",
        "7589a1ac99977d2db9b34daeac85e72a6207c05c"
      ],
      "author": {
        "name": "Martin Fick US",
        "email": "mfick@nvidia.com",
        "time": "Thu Oct 02 13:46:48 2025 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 02 13:46:48 2025 -0700"
      },
      "message": "Merge \"Fix QueueStats to use a ConcurrentMap\""
    },
    {
      "commit": "abd1e9ce0327c5e80bf262b7a17fccce895463c8",
      "tree": "c438c4b544dd1a54da14c15a387b7686294f5600",
      "parents": [
        "80e774ae968915d7becd10794eaaf2d67fe68e22",
        "7e4ca18195c8aaf510643d48ad6ab1cd71040499"
      ],
      "author": {
        "name": "Martin Fick US",
        "email": "mfick@nvidia.com",
        "time": "Thu Oct 02 13:46:38 2025 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 02 13:46:38 2025 -0700"
      },
      "message": "Merge \"Replace Semaphore with AtomicInteger\""
    },
    {
      "commit": "80e774ae968915d7becd10794eaaf2d67fe68e22",
      "tree": "4dd5714579ae41c7f2db38587c3bb6be69c6e705",
      "parents": [
        "b6de9316f83789f9f8ea2599235f71e2ea520de2"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Sep 24 13:44:21 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Thu Oct 02 13:00:43 2025 -0500"
      },
      "message": "Ability to limit concurrent rest api calls\n\nEven though we have rate limiting over a time window, costly restapis\nrun concurrently by users can still bring down the server. Add a way to\nlimit concurrent requests per user. Only applies to restapis.\n\nChange-Id: I0a89cf31199ae9c610be8b32e47d7b122826b605\n"
    },
    {
      "commit": "7589a1ac99977d2db9b34daeac85e72a6207c05c",
      "tree": "6e40e42fafafde22c88167bf34dbec2e4bf66c70",
      "parents": [
        "7e4ca18195c8aaf510643d48ad6ab1cd71040499"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Sep 29 09:52:25 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Sep 29 09:52:25 2025 -0500"
      },
      "message": "Fix QueueStats to use a ConcurrentMap\n\nSince this accessed by multiple threads, use a thread-safe\nstructure.\n\nChange-Id: I5db7426fee2a94eee63dd811656da4895828a924\n"
    },
    {
      "commit": "7e4ca18195c8aaf510643d48ad6ab1cd71040499",
      "tree": "130a0c491d4dcd296a2da05a586f22c6122040bc",
      "parents": [
        "b6de9316f83789f9f8ea2599235f71e2ea520de2"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Sep 29 09:48:42 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Sep 29 09:48:42 2025 -0500"
      },
      "message": "Replace Semaphore with AtomicInteger\n\nSince we are only utilizing the non-blocking operations of Semaphore,\nIts better to use AtomicInteger to avoid all the extra overhead.\n\nChange-Id: I219b3b35468fe11ef5bf063f671b5f6415630a0c\n"
    },
    {
      "commit": "b6de9316f83789f9f8ea2599235f71e2ea520de2",
      "tree": "bb5ef81f9250f602154e5f7f2b4f45c30d4b0532",
      "parents": [
        "1d02f41d4f66dcee3c0200888373c399bc02a733"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Thu Sep 18 14:15:43 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue Sep 23 09:13:44 2025 -0700"
      },
      "message": "Allow ratelimits to be specified in global section\n\nSimilar to how quotas could be specified in global section, allow\nratelimits to be specified there. All the limits specified in global\nsection are applied in addition to the limits specified in individual\ngroups.\n\nChange-Id: If6e7687f49de6b74d78ddf43f6535e2613b9d8e1\n"
    },
    {
      "commit": "1d02f41d4f66dcee3c0200888373c399bc02a733",
      "tree": "d67c484e588e785f2fd5280e7511201dfadeb81c",
      "parents": [
        "614996ed98161b41cc664fb7625bca5235469998"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Sep 22 14:41:06 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Sep 22 12:48:27 2025 -0700"
      },
      "message": "Fix task quotas not being released\n\nIn I1d2949d84, assumption was made that TaskParker#onNotReadyToStart is\ncalled by WorkQueue when TaskParker#isReadyToStart returns false and\nremoved the cleaning up of acquired quotas. But that only happens when\ndifferent a TaskParker instance returns false but not the current one.\nFix that assumption by re-introducing the explicit cleanup logic.\n\nChange-Id: Iea32b57b86acce0a96d8f29789eba3fcee234d99\n"
    },
    {
      "commit": "614996ed98161b41cc664fb7625bca5235469998",
      "tree": "0e5b256c646e593f0681b5fdbecfc6537bea4ea3",
      "parents": [
        "a337ebf07ec120ac1c7f262f43da6f9499e0015c"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Fri Sep 19 13:14:38 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Mon Sep 22 15:11:38 2025 +0200"
      },
      "message": "Treat missing repos as 0 bytes in dry-run quota check\n\nQuota pre-flight checks must work before a project exists. Previously,\ndryRun attempted to open the repository unconditionally and failed with\nRepositoryNotFoundException, preventing clients from validating imports\nor creations against the configured limit.\n\nThis change treats a non-existing repository as size 0 during dryRun.\nWe add a variant of getMaxPackSize that allows bypassing the repository\nexistence requirement and, when a RepositoryNotFoundException is the\nroot cause, assumes 0 bytes. The regular token request path continues to\nrequire an existing repository.\n\nBenefits:\n- Dry-run checks succeed for projects that are not yet created.\n- Quota evaluation still respects the configured maximum size.\n- Non-dry-run requests and other exceptions retain existing behavior.\n\nBug: Issue 445614703\nChange-Id: I12977e0628116e36cd1b9d9982b8da23eabb9f54\n"
    },
    {
      "commit": "a337ebf07ec120ac1c7f262f43da6f9499e0015c",
      "tree": "b52a6a0ba32c9700821e3f9aecf495c6b03f943f",
      "parents": [
        "75d81a38ca8e6b3c0d1bc1344b2ae027840e85e9"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Sep 17 13:26:19 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Thu Sep 18 10:13:31 2025 -0700"
      },
      "message": "Introduce global quotas\n\nHave a way to specify quotas that are always applicable in addition\nto the quotas specified in scoped namespaces.\n\nChange-Id: I0b9f2834d1b77c40c8e32025074614b1d4ba8f38\n"
    },
    {
      "commit": "75d81a38ca8e6b3c0d1bc1344b2ae027840e85e9",
      "tree": "d26d82b47ef521edeb3ff77fac3a310826574b23",
      "parents": [
        "5dcbecf6afb27d5e3c52ec365ade4bbe980da143"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Sep 08 15:04:32 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed Sep 17 21:28:01 2025 -0700"
      },
      "message": "Extend TaskQuota from TaskParker\n\nFunctions like `tryAcquire` and `release` restrict the way\nwe implement quotas. Instead use the same terminology from\nthe TaskParker interface.\n\nChange-Id: I1d2949d8492d8ee1f48699acc4b865886d010e60\n"
    },
    {
      "commit": "5dcbecf6afb27d5e3c52ec365ade4bbe980da143",
      "tree": "dbe227532669f609d0fef9d9e4b1dd0421f96d9a",
      "parents": [
        "207b6ea41c20fd692cf250884ecca6d3b2ac8947",
        "e241fb53729be7d2d9532a98ba73d79e0c155fe8"
      ],
      "author": {
        "name": "Martin Fick US",
        "email": "mfick@nvidia.com",
        "time": "Wed Sep 17 09:17:10 2025 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 17 09:17:10 2025 -0700"
      },
      "message": "Merge \"Share the threads/permits for soft maxes\""
    },
    {
      "commit": "207b6ea41c20fd692cf250884ecca6d3b2ac8947",
      "tree": "262ba63be080a77f3541d27ff77227f9a89e3d10",
      "parents": [
        "85610b43e365ae09974cbf6ebce265aca0dd1867"
      ],
      "author": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 17 13:08:33 2025 +0200"
      },
      "committer": {
        "name": "Antonio Barone",
        "email": "syntonyze@gmail.com",
        "time": "Wed Sep 17 15:11:36 2025 +0200"
      },
      "message": "Fix dry-run to return OK when quota is available\n\nThe dry-run path in MaxRepositorySizeQuota erroneously reported ERROR\neven when the requested size was within the remaining repository-size\nquota. Change Ibb4d282ebb introduced the method with a misplaced return,\nso successful checks fell through to the final error response.\n\nThis change moves the `ok()` return to the correct scope, ensuring the\nmethod:\n- returns OK when the requested size is ≤ the available quota,\n- returns ERROR when the request exceeds the limit, and\n- returns NO_OP when repository-size quota is not enforced.\n\nBug: Issue 445458888\nChange-Id: I949fe894fa719b30d0632f542829916f4dc8c726\n"
    },
    {
      "commit": "e241fb53729be7d2d9532a98ba73d79e0c155fe8",
      "tree": "cc07ae9d8f7f40ac918caca956483c1a935145b0",
      "parents": [
        "85610b43e365ae09974cbf6ebce265aca0dd1867"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Sep 08 09:23:18 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Sep 08 14:57:33 2025 -0500"
      },
      "message": "Share the threads/permits for soft maxes\n\n```\n[quota \"project-a\"]\n    softMaxStartPerUserForQueue \u003d 5 SSH-Interactive-Worker\n[quota \"project-b\"]\n    softMaxStartPerUserForQueue \u003d 10 SSH-Interactive-Worker\n```\n\nPreviously, for the above configuration, The computation of free threads\nwas buggy since each instance is not aware of the permits acquired by\nthe other quota. This results in config not being enforced correctly.\nFix this to only have single shared QueueStats object.\n\nChange-Id: I7e19bc4370c8fd30e158092f7b0d1f12e59fa5e2\n"
    },
    {
      "commit": "85610b43e365ae09974cbf6ebce265aca0dd1867",
      "tree": "866cffcd6d15c60d6f22f243743475799cf70e94",
      "parents": [
        "1dc856c26c6e9f6bd09dc9a999e7c9518ea60487"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Sun Sep 07 19:58:52 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Sun Sep 07 19:58:52 2025 -0500"
      },
      "message": "Format files with gjf and add missing copyright headers\n\nChange-Id: Ifa0e2bb89c8de94ce2bc6c514a152fc83d01b5fa\n"
    },
    {
      "commit": "1dc856c26c6e9f6bd09dc9a999e7c9518ea60487",
      "tree": "67a60667a975aff3376e2596976e1e0092af8418",
      "parents": [
        "89b64c301c26ef2121fc265a38701f6534dc1c3c"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue Aug 19 08:29:43 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue Aug 19 13:53:32 2025 -0700"
      },
      "message": "Fix task quota namespacing\n\n`.git` extension only appears when user specifies it, so make the regex\nindependent of it. Also, use the Namekey#parse function to remove that\nextension and trailing slashes. Some gerrit installations might also\nhave a leading slash and hence makes it optional.\n\nChange-Id: I772e50046dbdd276e13438749767434d7cb3f430\n"
    },
    {
      "commit": "89b64c301c26ef2121fc265a38701f6534dc1c3c",
      "tree": "31e2d010a8d59a3b9e218e43f3271ac088997f22",
      "parents": [
        "326fb8ddb011832f814c7927e85936ace15f0133"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Thu Jul 31 23:13:37 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue Aug 19 10:20:06 2025 -0700"
      },
      "message": "Improve thread pool sharing with soft max\n\nPreviously, interactive users—especially during bulk operations like\nrepository syncs—could saturate the entire interactive thread pool,\nblocking other users from running their tasks.\n\nWhile the `maxStartPerUserForTaskForQueue` config could restrict how\nmany tasks a single user starts, it also limits full pool utilization\nwhen no other users are active.\n\nThis change introduces the concept of a soft max, allowing more flexible\nand fair sharing of the thread pool:\n- A user can exceed softMax if the pool is otherwise idle.\n- When new users arrive and start tasks, the original user\u0027s share is\n  gradually reduced until soft max to make room for others.\n\nThis is achieved by ensuring at least two threads are available to start\na task (if the user is beyond the `softMax`), but only one is consumed,\nallowing the scheduler to prioritize new users fairly.\n\nThis dynamic parking mechanism prevents background-heavy users from\nmonopolizing the pool, ensuring interactive users aren\u0027t blocked and\nimproving overall responsiveness.\n\nChange-Id: I327416604aeeb36856b1990f0cf89e0a77757e82\n"
    },
    {
      "commit": "326fb8ddb011832f814c7927e85936ace15f0133",
      "tree": "5943cd651fdd738e8a16861d520b901dbd9d1030",
      "parents": [
        "771a9c3b35365ceda69a73ab2f388b74a69d1a81"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Jul 21 12:04:59 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Sun Jul 27 19:50:53 2025 -0500"
      },
      "message": "Add namespacing support for task quotas\n\nMake it possible to specify quotas for a project namespace.\nIt utilizes the already existing syntax for `quota` section.\n\nThe project name is correctly decoded when the specific task\nhas it specified it in its `toString()` implementation. If a\nproject name was not found quotas from the global (`*`) section\nare applied.\n\nChange-Id: I81ede1412c5876b9f89f73e42557fc56532aa464\n"
    },
    {
      "commit": "771a9c3b35365ceda69a73ab2f388b74a69d1a81",
      "tree": "c9cced0e1f6fcc5d7a18a536ef7329a57584f176",
      "parents": [
        "c5e174d58523d22802870586de55ff3208aa72d8"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue Jul 08 00:00:19 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue Jul 08 09:10:13 2025 -0700"
      },
      "message": "Store IDs only for tasks with acquired quotas\n\nAvoids populating the internal task tracking map with entries for task\nIDs that did not acquire any quotas. Previously, `quotasByTask` was\nupdated for all tasks regardless of whether any quotas were actually\nobtained.\n\nThis change ensures that only tasks with acquired quotas are recorded,\nwhich reduces memory usage in high-concurrency environments where many\nthreads may run without being throttled.\n\nChange-Id: I9567af641c78ab6eb6c824fef68ec68777abf552\n"
    },
    {
      "commit": "c5e174d58523d22802870586de55ff3208aa72d8",
      "tree": "e23277679b1758752aca8b9abeff6f931353a57b",
      "parents": [
        "b73097bd97de89933a8ead56fe8053b8c15f3e27"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Jul 07 23:58:48 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Jul 07 23:58:48 2025 -0500"
      },
      "message": "Introduce `receivepack` task quota\n\nThis basically adds supports to be able to limit the amount of pushes\nperformed on the server.\n\nChange-Id: If16e6a2575dbf7404bb23a2ef7b44c7702fcc302\n"
    },
    {
      "commit": "b73097bd97de89933a8ead56fe8053b8c15f3e27",
      "tree": "c7ed0c72940b0fcd61e025bc6333d794aac40b7e",
      "parents": [
        "de8912a66dc6683d23d119ef07f9e1fdc60866b1"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Sun Jul 06 14:19:45 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Jul 07 23:56:48 2025 -0500"
      },
      "message": "Introduce `maxStartPerUserForTaskForQueue` quota\n\nUsing this key we can enforce an server wide limit that applies\nper user without having to specify any users.\n\nExample usage:\n```\n  [quota \"*\"]\n    maxStartPerUserForTaskForQueue \u003d 20 uploadpack SSH-Interactive-Worker\n```\n\nThe above config would make sure that no user could perform more than\n20 upload packs at any given time.\n\nChange-Id: Iddc7d775eeee3a88ff0d8430ebb2df58a5130a93\n"
    },
    {
      "commit": "de8912a66dc6683d23d119ef07f9e1fdc60866b1",
      "tree": "36a43c8f033c9052a5d1162dbf1bc6b5abd67cd3",
      "parents": [
        "fc4e54ad21d074a08367e691f7a2e6370eed3e05"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue Jul 01 14:04:07 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Jul 07 23:54:42 2025 -0500"
      },
      "message": "Extend `maxStartForTaskForQueue` to scope for specific user\n\nIn order to have more granular control over the task quotas this\nchage introduces ability to specify the user for which we need\nto limit concurrent running tasks.\n\nExample Usage:\n  [quota \"*\"]\n    maxStartForTaskForUserForQueue \u003d 20 uploadpack servicebot SSH-Interactive-Worker\n    maxStartForTaskForUserForQueue \u003d 10 uploadpack admin SSH-Batch-Worker\n\nChange-Id: I2010a02bbdf7a3660089af667c8dce0a799d64b1\n"
    },
    {
      "commit": "fc4e54ad21d074a08367e691f7a2e6370eed3e05",
      "tree": "7dbc4449fd4321e2eb9dc8514397de16b5d72852",
      "parents": [
        "50691d8650166622b11e5cb860f5f44e5eb9bf9d"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Jun 16 16:37:57 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Mon Jun 16 16:39:28 2025 -0500"
      },
      "message": "Fix order of static variables\n\nSince there is a dependency between static variables order them\naccordingly to avoid nullpointers.\n\nChange-Id: Ie8869392b96c5360f80adef8249cd5588ea6639f\n"
    },
    {
      "commit": "50691d8650166622b11e5cb860f5f44e5eb9bf9d",
      "tree": "23361959ff2ee838068bf42c318db5f1804cede9",
      "parents": [
        "ed417c0cf9a51d1135ab773d5f8c2ea4541d3c24"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Fri Jun 06 18:50:19 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Fri Jun 13 10:13:39 2025 -0700"
      },
      "message": "Introduce Task quotas\n\nIn Gerrit 3.11, concept of TaskParker\u0027s is introduced to have the\nability to park a task without depriving other tasks of a thread. This\nchange uses that ability to introduce quotas on specific tasks.\n\nExample:\n\n[quota \"*\"]\n  maxStartForTaskForQueue \u003d 20 uploadpack SSH-Interactive-Worker\n  maxStartForTaskForQueue \u003d 10 uploadpack SSH-Batch-Worker\n\nThis gives more granular control of budgeting threads for specific kind\nof tasks/queues.\n\nChange-Id: Id12eee9ad44821dcbe4a74483ba688f7af500e9f\n"
    },
    {
      "commit": "ed417c0cf9a51d1135ab773d5f8c2ea4541d3c24",
      "tree": "380c01a957b27f4441ee6c5fa7ea3c7722e15dc8",
      "parents": [
        "23d00b06349beea5387d1471fba4f14df99acdb2"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Fri Jun 06 18:03:30 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Fri Jun 06 16:10:38 2025 -0700"
      },
      "message": "Fix standalone build for 3.11\n\nStarting 3.11, only java 21 gerrit builds are being published even\nthough it is possible to build with both 17 and 21. For standalone build\nto work, it is required to fetch approprite gerrit plugin api built with\njava 17 which is not readily available. Hence, make it possible to build\nwith 21 using `--config\u003djava21` flag on bazel commands.\n\nChange-Id: I4fb7d37aa1aeb5250df6ca8c29c96c28fa01eb72\n"
    },
    {
      "commit": "23d00b06349beea5387d1471fba4f14df99acdb2",
      "tree": "3d1ba88e2c6f55347c444d2b34fc8d3688890fa8",
      "parents": [
        "31a411ddcf7abc6ea4ab78386f8ee6e4f8b8c9fb"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed May 28 01:09:23 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed May 28 13:50:01 2025 -0700"
      },
      "message": "Upgrade default build to use java 17\n\nBuilding with an older version of java will not allow the plugin to run\non a default Gerrit 3.9 war build, so upgrade the plugin to build with\nthe Gerrit 3.9 plugin api which will make it build the plugin with java\n17 and be able to do so. Building with java 17 will prevent this from\nbeing run on older default war builds.\n\nChange-Id: I6b84d8099b3fab534bfcd436a01f4bb53d72d50e\n"
    },
    {
      "commit": "31a411ddcf7abc6ea4ab78386f8ee6e4f8b8c9fb",
      "tree": "64234b5454bf84d46b1bfb437f680fc7a51b7298",
      "parents": [
        "0c35c026906253ff39724f349b4656ccc48bd2ae"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue May 27 14:25:06 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue May 27 23:12:49 2025 -0700"
      },
      "message": "Update to work in standalone mode\n\n- pull in required external dependencies not available via plugin api\n- specify the usage of OptionalSubject directly\n\nChange-Id: I4ad404eb0c8dbbb51bef7e59279974609accc478\n"
    },
    {
      "commit": "0c35c026906253ff39724f349b4656ccc48bd2ae",
      "tree": "94438658a98efa2e0c636ae0e33130c3d38c57ad",
      "parents": [
        "f7d0226c8a6d6b4fb7c1b4f76c0a9a643b78304a"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue May 27 14:09:28 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue May 27 14:55:23 2025 -0500"
      },
      "message": "Fix the incorrect bazlets version\n\nMissed to update it in I01596e41bbfecfec02331ff2b0a27755a3c1f773\n\nChange-Id: I7d65793b6d670ca7bbd2ebd55466150ec9666e4c\n"
    },
    {
      "commit": "f7d0226c8a6d6b4fb7c1b4f76c0a9a643b78304a",
      "tree": "1cac11e3babdc64dcbd11cdbaf56e877eac3cd72",
      "parents": [
        "a89be9bfcce8ae602d0c0ce993ae5c8e7673d509"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue May 20 16:51:47 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Fri May 23 08:00:26 2025 -0700"
      },
      "message": "Build with stable version\n\nNow that 3.3.0 stable version is out, build with it instead of\nthe snapshot (which only pulls from local repository). Also,\nupdate the bazelets to 3.3.0 to fix failing compilation with\n3.2. Since we aren\u0027t specifying any version it is directly\ninferred from the bazelts commit.\n\nChange-Id: I01596e41bbfecfec02331ff2b0a27755a3c1f773\n"
    },
    {
      "commit": "a89be9bfcce8ae602d0c0ce993ae5c8e7673d509",
      "tree": "a8b6c1e96926157b77a1451760f4ed9f32f01506",
      "parents": [
        "36a5af0fd12928523d0ceb95a781eb18e13fb9de"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue May 20 16:39:19 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed May 21 11:14:22 2025 -0700"
      },
      "message": "remove unused _maven_jar\n\nChange-Id: I1578116c2787aa7c201a8ab8091bccb457995c0f\n"
    },
    {
      "commit": "36a5af0fd12928523d0ceb95a781eb18e13fb9de",
      "tree": "c4b2c5144b7a66faa57e619f205e1b91c8b3cfde",
      "parents": [
        "8fe24cfe907b7606808b5505444a697823afac54"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue May 20 16:20:18 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed May 21 11:14:22 2025 -0700"
      },
      "message": "format using buildifier\n\nusing `buildifier -r .`\n\nChange-Id: I774bc5e7e238ee526077c20ea17e76a52fa94391\n"
    },
    {
      "commit": "8fe24cfe907b7606808b5505444a697823afac54",
      "tree": "0098fd049799480acbaa9ae84e48ef3e81eb9e61",
      "parents": [
        "3478a03ec7ca9e40434a89de674c0cccd16884e2"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue May 20 16:01:52 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Wed May 21 11:14:12 2025 -0700"
      },
      "message": "upgrade to use python3\n\ncreates parity with other plugins\n\nChange-Id: I6dc24ca74c8c70a3f7aba21dbe9c457d95ef4844\n"
    },
    {
      "commit": "3478a03ec7ca9e40434a89de674c0cccd16884e2",
      "tree": "c7a2fefd53b16ded2e2670ede90d863626d10311",
      "parents": [
        "3271ccb9dc668d28980513d4ed4924f108ce7fa6"
      ],
      "author": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue May 20 15:52:16 2025 -0500"
      },
      "committer": {
        "name": "Adithya Chakilam",
        "email": "achakilam@nvidia.com",
        "time": "Tue May 20 15:52:16 2025 -0500"
      },
      "message": "Ignore intellij ide files\n\nChange-Id: I6209dbbe04dc3abc7ed7801f0a02c14646ae2685\n"
    },
    {
      "commit": "3271ccb9dc668d28980513d4ed4924f108ce7fa6",
      "tree": "a7cc65acb231538c563e487d21696b34f04c867a",
      "parents": [
        "8b71acfd5e92d44f1674b2696171447fb5e1c73f"
      ],
      "author": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Fri Jan 10 18:31:54 2025 +0100"
      },
      "committer": {
        "name": "Fabio Ponciroli",
        "email": "ponch78@gmail.com",
        "time": "Fri Jan 10 10:33:27 2025 -0800"
      },
      "message": "Clarify how rate limit is handled (REST API Vs upload pack)\n\nChange-Id: I261235c19959383ab2f360bbfc756eb32ec3be77\n"
    },
    {
      "commit": "8b71acfd5e92d44f1674b2696171447fb5e1c73f",
      "tree": "5e658b5e6dc07f3f19c0581370f999c0b8adfc0f",
      "parents": [
        "cfc0c4c0e43c3e353dde45859273f1a77f2eafc1"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jan 09 23:22:47 2025 +0000"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Thu Jan 09 23:36:43 2025 +0000"
      },
      "message": "Exclude empty limits when finding the user\u0027s matched rates\n\nWhen a user belongs to more than one group having different\nlimits on different types (e.g. RESTAPI and UPLOADPACK),\nthe search for the first matching limit was considering the\nfirst group ownership rather than the first group for that type.\n\nIn the example below, the search for the first matching limit\nwould have always returned the first group for both uploadpack\nand restapi types, causing the user belonging to both groups\nnot being limited on restapi (2nd match) but only on uploadpack.\n\nExample:\n[group \"groupLimitedOnUploadPack\"]\n  uploadpack \u003d 10s burst 20\n[group \"groupLimitedOnRestApi\"]\n  restapi \u003d 20s burst 40\n\nWhen looking for the first matching maximum rate for a user,\ndo not consider the empty limits as they would hinder the ability\nto find the correct configured value and keep on searching for the\nfirst non-empty limit with a group that the current user belongs to.\n\nAdd a specific validation test on the integration test suite\nfor this specific quota configuration, asserting that the correct\nquota is read and applied to the user.\n\nAlso make sure that the admin user in the tests, that does not belong\nto any of the rate-limited groups, is not impacted and keeps on being\nunlimited.\n\nChange-Id: If82b8265b6be2d0ac8454a1a1029767b55aeff43\n"
    },
    {
      "commit": "cfc0c4c0e43c3e353dde45859273f1a77f2eafc1",
      "tree": "b786e335fa1c1b1166014f35d2e5f6808f895056",
      "parents": [
        "2994a6a74b5488ec96101ee639550579d1845f69"
      ],
      "author": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Tue Aug 27 09:35:47 2024 +0100"
      },
      "committer": {
        "name": "Luca Milanesio",
        "email": "luca.milanesio@gmail.com",
        "time": "Wed Aug 28 09:48:42 2024 +0000"
      },
      "message": "Fix ListQuotas build for unreported Exception during project list\n\nThe project list API requires Gerrit to manage or re-throw\njava.lang.Exception. Fix the ListQuotas API by reporting\nException as the top-level class of Exception in the throws section.\n\nChange-Id: Iaf4edf672eb0a73ed321780bd25154ec501ec3eb\n"
    },
    {
      "commit": "2994a6a74b5488ec96101ee639550579d1845f69",
      "tree": "b655d35c2c51da1029486984d243dc61a7fc6dc1",
      "parents": [
        "aac48c3432442c3b2be535367e585bab1322c1c1"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Tue May 09 16:58:50 2023 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "geminica.programs@gmail.com",
        "time": "Tue May 09 16:58:50 2023 +0100"
      },
      "message": "Fix AccountLimitsConfig error prone error\n\nThe following error was fixed:\n  error: [ImpossibleNullComparison] This value cannot be null, and comparing it to null may be misleading.\n    return Optional.ofNullable(rateLimits.row(type));\n                              ^\n\nChange-Id: Iffc891f138b70bbfc38c004f1081476e4c7569ec\n"
    },
    {
      "commit": "aac48c3432442c3b2be535367e585bab1322c1c1",
      "tree": "3b407444ae46891f75b115bc358c422aeb7d9b0f",
      "parents": [
        "7ec0492e69a0b77f4a3aa6a2264f258b6e70fd80"
      ],
      "author": {
        "name": "Darius Jokilehto",
        "email": "dariusjokilehto+os@gmail.com",
        "time": "Wed May 11 10:26:55 2022 +0100"
      },
      "committer": {
        "name": "Darius Jokilehto",
        "email": "dariusjokilehto@gmail.com",
        "time": "Wed May 11 09:51:18 2022 +0000"
      },
      "message": "Bump commons lang to v3\n\nBug: Issue 15869\nChange-Id: Iaec54be042c0fc182b315f3a9b045b333dee565a\n"
    },
    {
      "commit": "7ec0492e69a0b77f4a3aa6a2264f258b6e70fd80",
      "tree": "af971c86223eb4a694c1c1a3e9dc1302208ffdbd",
      "parents": [
        "9c26fa952d9074516cef88881382faa5afedafb1",
        "fe05c1e5ede81fa483dbcce45a78207559aba6bf"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Apr 11 15:46:34 2021 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Apr 11 15:46:34 2021 +0200"
      },
      "message": "Merge branch \u0027stable-3.2\u0027\n\n* stable-3.2:\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.12 API\n  Upgrade bazlets to latest stable-3.2 to build with 3.2.6 API\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.11 API\n\nChange-Id: I97ebd90364d84c45c73bb2372277077122fee851\n"
    },
    {
      "commit": "fe05c1e5ede81fa483dbcce45a78207559aba6bf",
      "tree": "89dbe625d366af1e6fe15f7d1907730d1d4d8983",
      "parents": [
        "31db4798b283abe6eeb9303bf2ae99a1eaa8a81e",
        "a17ce7eef8d9af5a92f87252fc6a7c50c69e927b"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Apr 11 15:45:11 2021 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sun Apr 11 15:45:11 2021 +0200"
      },
      "message": "Merge branch \u0027stable-3.1\u0027 into stable-3.2\n\n* stable-3.1:\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.12 API\n\nChange-Id: I95dc97af884d59d2d89705311456f3d39d80d5d6\n"
    },
    {
      "commit": "a17ce7eef8d9af5a92f87252fc6a7c50c69e927b",
      "tree": "e9744bd3c5f746660f3bd10df593c04c39d7a4e9",
      "parents": [
        "ac7365357e97539986bdbec23dfe1ce308e8e177"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Mar 22 13:51:27 2021 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Mar 22 13:51:27 2021 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.1 to build with 3.1.12 API\n\nChange-Id: I76fbdc4a051bd4232571b904290e57e823538578\n"
    },
    {
      "commit": "31db4798b283abe6eeb9303bf2ae99a1eaa8a81e",
      "tree": "89dbe625d366af1e6fe15f7d1907730d1d4d8983",
      "parents": [
        "9b82ec3e8936504ec7a9796cdc40fe31b1b1d08e",
        "4b2c6dc51fe681042fba488cbf927a1fd3070ef2"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "jcentkowski@digital.ai",
        "time": "Mon Jan 18 17:28:53 2021 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 18 17:28:53 2021 +0000"
      },
      "message": "Merge \"Merge branch \u0027stable-3.1\u0027 into \u0027stable-3.2\u0027\" into stable-3.2"
    },
    {
      "commit": "4b2c6dc51fe681042fba488cbf927a1fd3070ef2",
      "tree": "a3979ce2b776c0bdd9320486cb31383514ed7c2d",
      "parents": [
        "bab196c94f938ec089c4ef9eaaca1901ef521234",
        "ac7365357e97539986bdbec23dfe1ce308e8e177"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "jcentkowski@digital.ai",
        "time": "Mon Jan 18 12:43:41 2021 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "jcentkowski@digital.ai",
        "time": "Mon Jan 18 12:43:41 2021 +0100"
      },
      "message": "Merge branch \u0027stable-3.1\u0027 into \u0027stable-3.2\u0027\n\n* stable-3.1:\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.11 API\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.10 API\n  Bump Bazel version to 3.7.0\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.13 API\n  Bump Bazel version to 3.5.0\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.8 API\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.12 API\n  Upgrade bazlets to latest stable-2.16 to build with 2.16.22 API\n  Bump Bazel version to 3.4.1\n\nChange-Id: I00ee047de8d772415178783f41e9ff0bfbbaa324\n"
    },
    {
      "commit": "9b82ec3e8936504ec7a9796cdc40fe31b1b1d08e",
      "tree": "54f88556c20e61b87d0cf198b5ee8112932225e2",
      "parents": [
        "bab196c94f938ec089c4ef9eaaca1901ef521234"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "jcentkowski@digital.ai",
        "time": "Thu Jan 14 13:42:00 2021 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "jcentkowski@digital.ai",
        "time": "Thu Jan 14 13:42:00 2021 +0100"
      },
      "message": "Upgrade bazlets to latest stable-3.2 to build with 3.2.6 API\n\nChange-Id: I6f8521ebb3edf9f8a238a32598bd0a50af11e7e6\n"
    },
    {
      "commit": "ac7365357e97539986bdbec23dfe1ce308e8e177",
      "tree": "063f3e913cc27ee0cac833988ee95acb8cf66024",
      "parents": [
        "35b51c87888e7c879355c4a384d444ff5e7bddc8"
      ],
      "author": {
        "name": "Jacek Centkowski",
        "email": "jcentkowski@digital.ai",
        "time": "Wed Jan 13 08:38:21 2021 +0100"
      },
      "committer": {
        "name": "Jacek Centkowski",
        "email": "jcentkowski@digital.ai",
        "time": "Wed Jan 13 08:38:21 2021 +0100"
      },
      "message": "Upgrade bazlets to latest stable-3.1 to build with 3.1.11 API\n\nChange-Id: Id0a36b139935716865d3b19183c740fd1ed76e98\n"
    },
    {
      "commit": "9c26fa952d9074516cef88881382faa5afedafb1",
      "tree": "af971c86223eb4a694c1c1a3e9dc1302208ffdbd",
      "parents": [
        "8171b78b49ee8dfce2c64838855a711ed124f34c",
        "bab196c94f938ec089c4ef9eaaca1901ef521234"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Dec 29 08:51:56 2020 +0100"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Tue Dec 29 08:51:56 2020 +0100"
      },
      "message": "Merge branch \u0027stable-3.2\u0027\n\n* stable-3.2:\n  Adapt the test code to not mock cache instances\n\nChange-Id: Ifc012e2c89a68df94fd80f1f669cea5832c02354\n"
    },
    {
      "commit": "bab196c94f938ec089c4ef9eaaca1901ef521234",
      "tree": "eee9a06d3b8dd4305a38e1cd5fd5c5dc80af5d10",
      "parents": [
        "c28ddb26b0708eb9a34035f0beee69188c54d512"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jul 18 08:26:36 2020 +0200"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Mon Dec 28 17:46:40 2020 +0000"
      },
      "message": "Adapt the test code to not mock cache instances\n\nRecent Bazel upgrades Error Prone major version to 2.4.0, that is much\nstricter now. Particularly DoNotMock pattern doesn\u0027t allow to Mock cache\ninstances any more:\n\n  RateLimitUploadListenerTest.java:44: error: [DoNotMock] Do not mock\n  \u0027com.google.common.cache.LoadingCache\u003cjava.lang.String,com.googlesource.gerrit.plugins.quota.Module.Holder\u003e\u0027\n  (which is-a \u0027com.google.common.cache.Cache\u0027); com.google.common.cache.Cache is annotated as @DoNotMock:\n  Use CacheBuilder.newBuilder().build().\n  @Mock private LoadingCache\u003cString, Holder\u003e limitsPerRemoteHost;\n                                             ^\n    (see https://errorprone.info/bugpattern/DoNotMock)\n\nAdapt the code to not mock the cache instance.\n\nOne side effect of this change, is that testDoFilterCacheMiss test is\nremoved.\n\nThe ExecutionException is thrown when a cache loader throws a (runtime)\nexception while loading a value (which wasn\u0027t present in the cache). The\nthrown ExecutionException wraps the root cause exception. However, the\nreason for testing this behavior here is not clear. Further, it is also\nnot clear why should in the case of ExecutionException all requests be\nrejected as if the rate limit was exceeded.\n\nChange-Id: Ieb1327ed71df2f72bcd7243fae9821168dc07238\n(cherry picked from commit dbe485d16d3193b5f40fb46e5a89b918b3292630)\n"
    },
    {
      "commit": "8171b78b49ee8dfce2c64838855a711ed124f34c",
      "tree": "af971c86223eb4a694c1c1a3e9dc1302208ffdbd",
      "parents": [
        "7252aa43bdb88413d18b0e762cb976c29d1180c6",
        "35b51c87888e7c879355c4a384d444ff5e7bddc8"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Nov 26 11:35:53 2020 -0500"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Nov 26 11:35:53 2020 -0500"
      },
      "message": "Merge branch \u0027stable-3.1\u0027 into master\n\n* stable-3.1:\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.10 API\n\nChange-Id: I2237249bf699530fa5294d1bb11015002e3108fd\n"
    },
    {
      "commit": "35b51c87888e7c879355c4a384d444ff5e7bddc8",
      "tree": "795dac7814c020a7966bcb41b5891345adc9c120",
      "parents": [
        "67cf9f7f832bc3900371a80d0997a7815989691f"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Nov 24 16:27:54 2020 -0500"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Nov 24 16:27:54 2020 -0500"
      },
      "message": "Upgrade bazlets to latest stable-3.1 to build with 3.1.10 API\n\nChange-Id: I3543d4af339e33ea9eba3ece2ea6333971451731\n"
    },
    {
      "commit": "7252aa43bdb88413d18b0e762cb976c29d1180c6",
      "tree": "af971c86223eb4a694c1c1a3e9dc1302208ffdbd",
      "parents": [
        "8d930d30080bf9fa003d89114a2d14222cb73c71",
        "67cf9f7f832bc3900371a80d0997a7815989691f"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Nov 03 17:22:50 2020 -0500"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Nov 03 17:22:50 2020 -0500"
      },
      "message": "Merge branch \u0027stable-3.1\u0027 into master\n\n* stable-3.1:\n  Bump Bazel version to 3.7.0\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.13 API\n\nChange-Id: Ia16dbc6610b34f577df8f1cb22361b64b08236a3\n"
    },
    {
      "commit": "67cf9f7f832bc3900371a80d0997a7815989691f",
      "tree": "94bafc786bbc1e9afe91be144abbe28ce588e156",
      "parents": [
        "673ae06e17f178ccb9496466322ac80632d03fe7",
        "ac8f720b1665bf6985098a42153da8759e380f2d"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Oct 29 11:57:54 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Oct 29 11:57:54 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Bump Bazel version to 3.7.0\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.13 API\n\nChange-Id: I647e8fa47d9e6a4f33d1de72ae1a4fc457b4dcd4\n"
    },
    {
      "commit": "ac8f720b1665bf6985098a42153da8759e380f2d",
      "tree": "b8c970c0d276e4809e6b3fcc1f047c5c295c1481",
      "parents": [
        "e252075d384510e962555b62a5916f33bf30053b"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Oct 27 16:12:58 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Oct 27 16:12:58 2020 -0400"
      },
      "message": "Bump Bazel version to 3.7.0\n\nChange-Id: Idfdd2450e60ce61163906d6164b6e6dc5aa5cae1\n"
    },
    {
      "commit": "e252075d384510e962555b62a5916f33bf30053b",
      "tree": "8a151a2e48c164d0f2be31c3d11ae4ae28795ec8",
      "parents": [
        "ee58509b226442722c076bc2d3f6a7755df9842e"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Oct 20 15:59:23 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Oct 20 15:59:23 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.0 to build with 3.0.13 API\n\nChange-Id: Ia6026018245ae7df8b5019550ab1288d3d05e864\n"
    },
    {
      "commit": "8d930d30080bf9fa003d89114a2d14222cb73c71",
      "tree": "39203775ca8f89c3d8ebf93333e8839e62250d6d",
      "parents": [
        "7b2ce7b53d0046b30ffdaad33f38d0eb003ee943",
        "673ae06e17f178ccb9496466322ac80632d03fe7"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Sep 10 14:32:52 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Sep 10 14:33:29 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.1\u0027\n\n* stable-3.1:\n  Bump Bazel version to 3.5.0\n\nChange-Id: Icb9651fe0048fbc72885198683eddc7b6c67bf0c\n"
    },
    {
      "commit": "673ae06e17f178ccb9496466322ac80632d03fe7",
      "tree": "632ab128b18f2f16daf87cde7503e8d03f553318",
      "parents": [
        "a65289a663f6e4e68956c61d8d9eb03d2dcda67e",
        "ee58509b226442722c076bc2d3f6a7755df9842e"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Sep 08 15:34:23 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Sep 08 15:35:46 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Bump Bazel version to 3.5.0\n\nChange-Id: If5b85b270675b7dc3aed9d7fc490ff542f94c139\n"
    },
    {
      "commit": "ee58509b226442722c076bc2d3f6a7755df9842e",
      "tree": "050a111b48829618f1b465c69aeb62694481b152",
      "parents": [
        "260a808b35cd2d8a746bad61d2f1b130877e8b11"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Sep 03 15:11:19 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Sep 03 15:11:19 2020 -0400"
      },
      "message": "Bump Bazel version to 3.5.0\n\nChange-Id: I24230bf2f00d1b6bf5ed8f45a857ef3c75c8eef8\n"
    },
    {
      "commit": "7b2ce7b53d0046b30ffdaad33f38d0eb003ee943",
      "tree": "d4b162dfcf0ad448019493b63aee033a6e00886d",
      "parents": [
        "fb114899b1a51233e4c69502606a578db0e67a27"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Thu Jul 30 19:55:37 2020 +0000"
      },
      "committer": {
        "name": "David Ostrovsky",
        "email": "david.ostrovsky@gmail.com",
        "time": "Thu Jul 30 19:56:02 2020 +0000"
      },
      "message": "Build with plugin API 3.3.0-SNAPSHOT\n\nChange-Id: I5929644bd50035837ebf4cea4b148fac9892a539\n"
    },
    {
      "commit": "fb114899b1a51233e4c69502606a578db0e67a27",
      "tree": "2a8c1d82b0359808cfe894fe004bf51912848a57",
      "parents": [
        "6e1110c3c51e0a45532fd3a14f4aed5d78dc217d"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 30 11:29:50 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 30 11:29:50 2020 -0400"
      },
      "message": "Upgrade bazlets to latest master to build with 3.2.3 API\n\nChange-Id: I98883eb9aced612c20162c2d91b1497eddf825ce\n"
    },
    {
      "commit": "6e1110c3c51e0a45532fd3a14f4aed5d78dc217d",
      "tree": "7f1235ed861fba2bcf0987fc1132f142e4fead5a",
      "parents": [
        "dbe485d16d3193b5f40fb46e5a89b918b3292630",
        "a65289a663f6e4e68956c61d8d9eb03d2dcda67e"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 30 11:26:42 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 30 11:26:42 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.1\u0027\n\n* stable-3.1:\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.8 API\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.12 API\n  Upgrade bazlets to latest stable-2.16 to build with 2.16.22 API\n  Bump Bazel version to 3.4.1\n\nChange-Id: I86098f5a079d9fa9e4a2418bce51b0466c6b1563\n"
    },
    {
      "commit": "dbe485d16d3193b5f40fb46e5a89b918b3292630",
      "tree": "27bf083470ca6a4609ae20f2f6b933c8edbb5a18",
      "parents": [
        "ac29d9a32079f102853f64d612326ad9f29da3af"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jul 18 08:26:36 2020 +0200"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.mmiller@gmail.com",
        "time": "Tue Jul 28 20:44:27 2020 +0000"
      },
      "message": "Adapt the test code to not mock cache instances\n\nRecent Bazel upgrades Error Prone major version to 2.4.0, that is much\nstricter now. Particularly DoNotMock pattern doesn\u0027t allow to Mock cache\ninstances any more:\n\n  RateLimitUploadListenerTest.java:44: error: [DoNotMock] Do not mock\n  \u0027com.google.common.cache.LoadingCache\u003cjava.lang.String,com.googlesource.gerrit.plugins.quota.Module.Holder\u003e\u0027\n  (which is-a \u0027com.google.common.cache.Cache\u0027); com.google.common.cache.Cache is annotated as @DoNotMock:\n  Use CacheBuilder.newBuilder().build().\n  @Mock private LoadingCache\u003cString, Holder\u003e limitsPerRemoteHost;\n                                             ^\n    (see https://errorprone.info/bugpattern/DoNotMock)\n\nAdapt the code to not mock the cache instance.\n\nOne side effect of this change, is that testDoFilterCacheMiss test is\nremoved.\n\nThe ExecutionException is thrown when a cache loader throws a (runtime)\nexception while loading a value (which wasn\u0027t present in the cache). The\nthrown ExecutionException wraps the root cause exception. However, the\nreason for testing this behavior here is not clear. Further, it is also\nnot clear why should in the case of ExecutionException all requests be\nrejected as if the rate limit was exceeded.\n\nChange-Id: Ieb1327ed71df2f72bcd7243fae9821168dc07238\n"
    },
    {
      "commit": "a65289a663f6e4e68956c61d8d9eb03d2dcda67e",
      "tree": "b7f12ec17a9ad732737a5b5c7fecc0aa7cddd412",
      "parents": [
        "f75f1739eaf6e868c9b921aa2f59240f85bb13f1"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jul 28 14:59:07 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jul 28 14:59:07 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.1 to build with 3.1.8 API\n\nChange-Id: Ie99a385aad9fc04505999b8efa059cb6f02684b7\n"
    },
    {
      "commit": "f75f1739eaf6e868c9b921aa2f59240f85bb13f1",
      "tree": "6e1bbfca4c413397070eb4d28406dc6efa783293",
      "parents": [
        "6083703bd64c7691792be89d8725ee7f435a2229",
        "260a808b35cd2d8a746bad61d2f1b130877e8b11"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jul 28 14:42:25 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jul 28 14:42:25 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.12 API\n  Upgrade bazlets to latest stable-2.16 to build with 2.16.22 API\n\nChange-Id: I676b82df387d99f4b7110a975ab8a86b634d5134\n"
    },
    {
      "commit": "260a808b35cd2d8a746bad61d2f1b130877e8b11",
      "tree": "9925c988f58a29bf9487608a6c447a08cc08d3e1",
      "parents": [
        "3c90dbc077ab1a2560550b64cde7447e2c235fb0"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 16:23:07 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 16:23:07 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.0 to build with 3.0.12 API\n\nChange-Id: I910f26b098b64ba54cb3e4145da061c5a4088679\n"
    },
    {
      "commit": "3c90dbc077ab1a2560550b64cde7447e2c235fb0",
      "tree": "ad941b94aa0316254294103477635b059139bc0d",
      "parents": [
        "40b6fa0114fe24447dfa9f0228b7c2e4517c7419",
        "c34ef18fa9fdcd81f9bba0bc437473982773c273"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 16:22:34 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 16:22:34 2020 -0400"
      },
      "message": "Merge branch \u0027stable-2.16\u0027 into stable-3.0\n\n* stable-2.16:\n  Upgrade bazlets to latest stable-2.16 to build with 2.16.22 API\n\nChange-Id: I516618c60fc964442ef981664b62d117af1eadfd\n"
    },
    {
      "commit": "c34ef18fa9fdcd81f9bba0bc437473982773c273",
      "tree": "d493242087fc2debc5a99718ce9bae3082fc690f",
      "parents": [
        "75f8fb6ea60561e29bbb003ee00cd79703a32310"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 12:20:06 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jul 27 12:20:06 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-2.16 to build with 2.16.22 API\n\nChange-Id: I0246fdde9332ade32400b42fdd38162f132f07b8\n"
    },
    {
      "commit": "ac29d9a32079f102853f64d612326ad9f29da3af",
      "tree": "153ba71a980a6e1e8190e9229864ecc617d4f9c1",
      "parents": [
        "c28ddb26b0708eb9a34035f0beee69188c54d512"
      ],
      "author": {
        "name": "David Ostrovsky",
        "email": "david@ostrovsky.org",
        "time": "Sat Jul 18 08:02:58 2020 +0200"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.mmiller@gmail.com",
        "time": "Mon Jul 20 12:40:02 2020 +0000"
      },
      "message": "Adapt to the move of GroupDescription to entities package\n\nChange-Id: Ief3c183431b98e7f112984c3ee94d7f3200188f1\n"
    },
    {
      "commit": "6083703bd64c7691792be89d8725ee7f435a2229",
      "tree": "6e1bbfca4c413397070eb4d28406dc6efa783293",
      "parents": [
        "a77913cee6cd656b6cd40eda9c6f6f123a5f9747",
        "40b6fa0114fe24447dfa9f0228b7c2e4517c7419"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jul 17 10:04:17 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jul 17 10:04:17 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Bump Bazel version to 3.4.1\n\nChange-Id: I98b95b5f6c1ea2c18d6607d74ef26ff21230d01d\n"
    },
    {
      "commit": "40b6fa0114fe24447dfa9f0228b7c2e4517c7419",
      "tree": "ad941b94aa0316254294103477635b059139bc0d",
      "parents": [
        "a99832a5dca2d446045d306f858f06de21354c79"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 16 13:36:58 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 16 13:36:58 2020 -0400"
      },
      "message": "Bump Bazel version to 3.4.1\n\nChange-Id: I2a0e31ba380380922df480c813bd2ff683258250\n"
    },
    {
      "commit": "c28ddb26b0708eb9a34035f0beee69188c54d512",
      "tree": "633d3e3ba6571b8c391bc1ee9d835fa92836d7a4",
      "parents": [
        "6b5397f13c926788dad0a924cbd8e074fd581001",
        "a77913cee6cd656b6cd40eda9c6f6f123a5f9747"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 02 09:14:01 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jul 02 09:14:01 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.1\u0027\n\n* stable-3.1:\n  Upgrade bazlets to latest stable-2.16\n\nChange-Id: I0c291533fb3e91a1a33f09ec4fa5a6d1f80138e3\n"
    },
    {
      "commit": "a77913cee6cd656b6cd40eda9c6f6f123a5f9747",
      "tree": "7a386e12f9fd8317734bba01e884f3635c5d46a0",
      "parents": [
        "03ebfa67ad7cf5922acba2a96e5938a60c970f45",
        "a99832a5dca2d446045d306f858f06de21354c79"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jul 01 20:29:50 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jul 01 20:29:50 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Upgrade bazlets to latest stable-2.16\n\nChange-Id: I2e7d6955c682c59533c46c5f1420dd7bcc36031d\n"
    },
    {
      "commit": "a99832a5dca2d446045d306f858f06de21354c79",
      "tree": "0acab73bf13b60f2c60521fa36aa2ff4cb44fe01",
      "parents": [
        "df91173b9ae98fd015e822677f3633105097d56a",
        "75f8fb6ea60561e29bbb003ee00cd79703a32310"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jul 01 13:20:45 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jul 01 13:20:45 2020 -0400"
      },
      "message": "Merge branch \u0027stable-2.16\u0027 into stable-3.0\n\n* stable-2.16:\n  Upgrade bazlets to latest stable-2.16\n\nChange-Id: I9b7ade431e81fc0818b792a51cdb1e85da5cb646\n"
    },
    {
      "commit": "6b5397f13c926788dad0a924cbd8e074fd581001",
      "tree": "633d3e3ba6571b8c391bc1ee9d835fa92836d7a4",
      "parents": [
        "b26ff249a55f2d42ee38df3e78ec07950b99660d"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jun 19 09:11:57 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jun 19 09:11:57 2020 -0400"
      },
      "message": "Upgrade bazlets to latest master to build with 3.2.2 API\n\nChange-Id: I36e49d3307f63ccfa749da57157c7508cfd21090\n"
    },
    {
      "commit": "b26ff249a55f2d42ee38df3e78ec07950b99660d",
      "tree": "99efe01b8550ed1cc10d5cdb7e3812584cab8a96",
      "parents": [
        "c791112057b78b632b3caa764139eadd97cf71ee",
        "03ebfa67ad7cf5922acba2a96e5938a60c970f45"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jun 19 09:08:07 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Fri Jun 19 09:08:07 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.1\u0027\n\n* stable-3.1:\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.7 API\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.11 API\n  Remove the commented-out snapshot plugin api lines\n  Adapt SNAPSHOT plugin api example to the 3.1 version\n  Upgrade bazlets to latest stable-3.1\n  Prepare for new gerrit_api snapshot version usage\n  Upgrade bazlets to latest stable-3.0\n  Upgrade bazlets to latest stable-3.0\n\nChange-Id: Ie2384d5c5eb24b1639a7463d8475120fd3604422\n"
    },
    {
      "commit": "03ebfa67ad7cf5922acba2a96e5938a60c970f45",
      "tree": "7a386e12f9fd8317734bba01e884f3635c5d46a0",
      "parents": [
        "733cc0052c2b598e5f1822e7757df7338f138fc3"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jun 18 14:42:47 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jun 18 14:42:47 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.1 to build with 3.1.7 API\n\nChange-Id: I4f1af136f35cb723e592a8d640cd1768f58b5c32\n"
    },
    {
      "commit": "733cc0052c2b598e5f1822e7757df7338f138fc3",
      "tree": "88db6642e063457517582204ed14f5323e783585",
      "parents": [
        "5d93586ceda3d33a91e557c19cb69bf2829fa93b",
        "df91173b9ae98fd015e822677f3633105097d56a"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jun 18 14:39:12 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Thu Jun 18 14:39:12 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.11 API\n  Remove the commented-out snapshot plugin api lines\n\nChange-Id: I2752d2847b977020ec395eda53db1aedcf734ad9\n"
    },
    {
      "commit": "df91173b9ae98fd015e822677f3633105097d56a",
      "tree": "0acab73bf13b60f2c60521fa36aa2ff4cb44fe01",
      "parents": [
        "335876aa94864987b777a3a712ea222bc8cfdf87"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jun 17 14:41:46 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jun 17 14:41:46 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.0 to build with 3.0.11 API\n\nChange-Id: I3fd0269f941bdc252db053193785092f79bba99a\n"
    },
    {
      "commit": "335876aa94864987b777a3a712ea222bc8cfdf87",
      "tree": "c28cb791ddb9b8dd7cdc3791f220473853547caa",
      "parents": [
        "b76c7b4e57a00bd7b5058def4c7b66f778830fbb"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jun 17 14:35:35 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Wed Jun 17 14:39:37 2020 -0400"
      },
      "message": "Remove the commented-out snapshot plugin api lines\n\nRely on bazlets README documentation for how to use a SNAPSHOT version.\n\nChange-Id: I4b2761dbfc1d9c1961d1356e4b616491a043b299\n"
    },
    {
      "commit": "5d93586ceda3d33a91e557c19cb69bf2829fa93b",
      "tree": "6d8c1df00d30a35a2e75e4723b59ac76b99bac31",
      "parents": [
        "c3e76bb6394114128309456d1621cc0800028d6b"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 13:46:14 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 13:46:14 2020 -0400"
      },
      "message": "Adapt SNAPSHOT plugin api example to the 3.1 version\n\nChange-Id: I60049c818b726c6a163bc3656c3642871ef929db\n"
    },
    {
      "commit": "c3e76bb6394114128309456d1621cc0800028d6b",
      "tree": "dc17b3fa3c7844b41fcac70c0c2dbb788b8a940f",
      "parents": [
        "8c846f21cefb2086b203acbab35566bb2cac24c8"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 12:34:32 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 12:34:32 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.1\n\nChange-Id: Ic334e1396bf93e3ddf33318895b13070bee81f5c\n"
    },
    {
      "commit": "8c846f21cefb2086b203acbab35566bb2cac24c8",
      "tree": "377937374833a9980d5d58dec536721b6d9d3aab",
      "parents": [
        "a0eb680f648a9555f2389f37fbe04794a89a2536",
        "b76c7b4e57a00bd7b5058def4c7b66f778830fbb"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 12:33:19 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 16 12:33:19 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.0\u0027 into stable-3.1\n\n* stable-3.0:\n  Prepare for new gerrit_api snapshot version usage\n  Upgrade bazlets to latest stable-3.0\n  Upgrade bazlets to latest stable-3.0\n\nChange-Id: I9f8321d0c9442dee0c1bdfef9c69393bdbc8c9b6\n"
    },
    {
      "commit": "b76c7b4e57a00bd7b5058def4c7b66f778830fbb",
      "tree": "b3c9d0d9330b829ec7284aec18e2dbcf9171b89b",
      "parents": [
        "f4d21c9baac719eda73bf43dc5a21360f83b7434"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jun 15 10:30:07 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jun 15 10:30:07 2020 -0400"
      },
      "message": "Prepare for new gerrit_api snapshot version usage\n\nChange-Id: I20581aef7bc0b723d11fa40db1a78668dc69fe5d\n"
    },
    {
      "commit": "f4d21c9baac719eda73bf43dc5a21360f83b7434",
      "tree": "f79051f589e2a5bea34035a9ecd310d47b5f5dd2",
      "parents": [
        "2e01c0b81148ce286d0b485c72d40bac47efaf9d"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jun 15 09:25:48 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Mon Jun 15 09:25:48 2020 -0400"
      },
      "message": "Upgrade bazlets to latest stable-3.0\n\nChange-Id: I97847c20a412e5fa32d725b7a28d6238b45f9c68\n"
    },
    {
      "commit": "2e01c0b81148ce286d0b485c72d40bac47efaf9d",
      "tree": "bdfe429f3c2a306e61e29bd2a7b9ca9718f268b7",
      "parents": [
        "f75a80aa46cb0c7961751d52c21ddfc1c3bce2f3"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Fri Jun 12 15:53:18 2020 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Fri Jun 12 15:53:46 2020 +0900"
      },
      "message": "Upgrade bazlets to latest stable-3.0\n\n- Set snapshot version to 3.0.11-SNAPSHOT\n- Add repository rule to provide gerrit api version\n\nChange-Id: I57515a908e7c31b01165a829ed8f427a85ee12de\n"
    },
    {
      "commit": "75f8fb6ea60561e29bbb003ee00cd79703a32310",
      "tree": "e534cf9a6801cc70afeba6eefcce749f2c8b6fdc",
      "parents": [
        "83255c5de3721b1ea920aba0efa7b9626e6843e2"
      ],
      "author": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Fri Jun 12 09:07:36 2020 +0900"
      },
      "committer": {
        "name": "David Pursehouse",
        "email": "dpursehouse@digital.ai",
        "time": "Fri Jun 12 09:08:27 2020 +0900"
      },
      "message": "Upgrade bazlets to latest stable-2.16\n\n- Add repository rule to provide gerrit api version\n\nChange-Id: I57515a908e7c31b01165a829ed8f427a85ee12de\n"
    },
    {
      "commit": "c791112057b78b632b3caa764139eadd97cf71ee",
      "tree": "f95cdc7ae10694f14ee902009c880ae4cb2aa702",
      "parents": [
        "480bea97e6e4505a9802fd90296d50aa4e6d59de"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 09 15:17:57 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 09 15:17:57 2020 -0400"
      },
      "message": "Upgrade bazlets to latest master to build with 3.2.1 API\n\nChange-Id: I7da8ae60ffee7f01074cf3f1930867dc2527754c\n"
    },
    {
      "commit": "480bea97e6e4505a9802fd90296d50aa4e6d59de",
      "tree": "8f2e56ccfefec4586f00a52fdef3b8ab14112d77",
      "parents": [
        "2002c7e74da2dd26e2cab216c3da9ea12823c68e",
        "a0eb680f648a9555f2389f37fbe04794a89a2536"
      ],
      "author": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 09 14:58:06 2020 -0400"
      },
      "committer": {
        "name": "Marco Miller",
        "email": "marco.miller@ericsson.com",
        "time": "Tue Jun 09 14:58:06 2020 -0400"
      },
      "message": "Merge branch \u0027stable-3.1\u0027\n\n* stable-3.1:\n  Upgrade bazlets to latest stable-3.1 to build with 3.1.6 API\n  Upgrade bazlets to latest stable-3.0 to build with 3.0.10 API\n  Upgrade bazlets to latest stable-2.16 to build with 2.16.21 API\n  Upgrade bazlets to latest stable-2.15 to build with 2.15.19 API\n  Upgrade bazlets to latest stable-2.14 to build with 2.14.21 API\n\nChange-Id: Ie700f1ea25d0ee1488b9a015f0909aa9becf3e83\n"
    }
  ],
  "next": "a0eb680f648a9555f2389f37fbe04794a89a2536"
}
