| --- |
| title: "Gerrit 3.2.x" |
| permalink: 3.2.html |
| hide_sidebar: true |
| hide_navtoggle: true |
| toc: true |
| --- |
| |
| Download: **[3.2.14](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.14.war)** |
| | [3.2.13](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.13.war) |
| | [3.2.12](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.12.war) |
| | [3.2.11](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.11.war) |
| | [3.2.10](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.10.war) |
| | [3.2.8](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.8.war) |
| | [3.2.7](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.7.war) |
| | [3.2.6](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.6.war) |
| | [3.2.5.1](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.5.1.war) |
| | [3.2.5](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.5.war) |
| | [3.2.3](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.3.war) |
| | [3.2.2](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.2.war) |
| | [3.2.1](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.1.war) |
| | [3.2.0](https://gerrit-releases.storage.googleapis.com/gerrit-3.2.0.war) |
| |
| Documentation: **[3.2.14](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.14/index.html)** |
| | [3.2.13](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.13/index.html) |
| | [3.2.12](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.12/index.html) |
| | [3.2.11](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.11/index.html) |
| | [3.2.10](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.10/index.html) |
| | [3.2.8](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.8/index.html) |
| | [3.2.7](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.7/index.html) |
| | [3.2.6](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.6/index.html) |
| | [3.2.5.1](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.5.1/index.html) |
| | [3.2.5](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.5/index.html) |
| | [3.2.3](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.3/index.html) |
| | [3.2.2](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.2/index.html) |
| | [3.2.1](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.1/index.html) |
| | [3.2.0](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/index.html) |
| |
| ## Release Highlights |
| |
| * Polymer 3 |
| |
| * File Uploads in frontend |
| |
| * Performance improvements on mergeability check and accounts caching |
| |
| * Support for Java 11 |
| |
| ## Important Notes |
| |
| ### Support for Java 11 |
| |
| Gerrit is now officially supported on Java 11, in addition to Java 8. |
| Running on Java 11 was already possible from v2.16.13, v3.0.4 and v3.1.0, but not officially |
| supported because of the lack of a CI validation on Java 11 for stable-2.16, stable-3.0 |
| and stable-3.1 branches. |
| |
| Please note that Java 11 has a number of improvements and breaking changes compared to Java 8. |
| Refer to the [Java 11 release notes for more details](https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html). |
| |
| Gerrit v3.2 has been validated with Java 11, with the following known issues: |
| |
| * [Issue 11567](https://bugs.chromium.org/p/gerrit/issues/detail?id=11567): |
| Java 11 runtime & startTLS LDAP broken: 'error code 8 - BindSimple: Transport encryption'. |
| |
| * [Issue 12639](https://bugs.chromium.org/p/gerrit/issues/detail?id=12639): |
| WARNING: An illegal reflective access operation has occurred, when starting Gerrit. |
| |
| ### Schema Changes |
| |
| This release contains schema changes. To upgrade: |
| |
| ``` sh |
| java -jar gerrit.war init -d site_path |
| ``` |
| |
| The changes index version has been increased. To run off-line reindexing of |
| the changes (optional): |
| |
| ```sh |
| java -jar gerrit.war reindex --index changes -d site_path |
| ``` |
| |
| By default the changes index is automatically rebuilt upon the Gerrit startup |
| after the upgrade. |
| |
| **PERFORMANCE WARNING**: The migration process performs the cleanup of |
| the zombie draft comments in the All-Users.git repository that have been |
| left behind since the introduction of NoteDb. It is highly recommended |
| to perform a `git gc --aggressive` of the All-Users.git repository *BEFORE* |
| running the migration. Also the reindex of all the changes can take a |
| significant amount of time for large-scale installations. |
| |
| Also, make sure that the All-Users.git resides on |
| a fast access local filesystem for minimizing the migration time. |
| |
| ## Native packaging |
| |
| * Upgrade the Docker/Ubuntu image to Ubuntu 20.04 |
| |
| * Upgrade the Docker/CentOS image to CentOS 8.1.1911 |
| |
| * Move to OpenJDK 11 |
| |
| Gerrit v3.2 supports both Java 8 and 11. However, Java 11 is the best choice for |
| large production servers thanks to the introduction of more advanced Garbage Collection |
| [strategies and associated tuning for large heaps](https://docs.oracle.com/en/java/javase/11/gctuning/introduction-garbage-collection-tuning.html). |
| |
| ### Zero-downtime Upgrade |
| |
| Gerrit supports zero-downtime upgrade from Gerrit v3.1.6 (or later) when configured using |
| a [high-availability configuration](https://gerrit.googlesource.com/plugins/high-availability/+/refs/heads/master/README.md), |
| when the Git repositories are stored in a shared filesystem such as NFS or similar. |
| |
| For upgrading with zero-downtime, you should enable the rolling upgrade migration |
| in `gerrit.config` on both Gerrit masters by setting the |
| [`gerrit.experimentalRollingUpgrade`](http://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/config-gerrit.html) |
| to `true`. |
| |
| During the zero-downtime upgrade, Gerrit end-users would not notice any outage |
| or service disruption. They will be able to perform the normal Gerrit operations |
| on the GUI or using the Git protocol. |
| |
| The zero-downtime upgrade consists of the following steps: |
| |
| 1. Have Gerrit masters upgraded to v3.1.6 (or later) in high-availability configuration, |
| healthy and able to handle the incoming traffic properly. |
| 2. Set `gerrit.experimentalRollingUpgrade` to `true` in `gerrit.config` on both Gerrit masters. |
| 3. Set the first Gerrit master unhealthy. |
| 4. Shutdown the first Gerrit master and then upgrade to v3.2. |
| 5. Startup the first Gerrit master and wait for the on-line reindex to complete. |
| 6. Verify that the first Gerrit master is working properly and then make it healthy again. |
| 7. Wait for the first Gerrit master to start serving traffic normally. |
| 8. Repeat steps 3. to 7. for the second Gerrit master. |
| 9. Remove `gerrit.experimentalRollingUpgrade` from `gerrit.config` on both Gerrit masters. |
| |
| **NOTE**: During the zero-downtime upgrade, the nodes may experience an increase of CPU and memory |
| utilisation due to the online reindexing activity. If testing reveals that the nodes |
| are not able to keep sustained load in conjunction with the online reindexing, then you have |
| to follow the standard migration path. |
| |
| ### Breaking Changes |
| |
| * [Issue 12527](https://bugs.chromium.org/p/gerrit/issues/detail?id=12527): |
| Elasticsearch: Support for [EOL versions](https://www.elastic.co/support/eol) |
| v5.6 and v6.0 to v6.5 is discontinued |
| |
| * [Issue 12858](https://bugs.chromium.org/p/gerrit/issues/detail?id=12858): |
| ListGroups: the --query2 option in the groups query REST-API has been renamed to |
| --query |
| |
| * Gerrit metrics associated with H2 disk-statistics are now disabled by default. |
| The disk-statistics can be enabled again by setting |
| [`cache.enableDiskStatMetrics`](http://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/config-gerrit.html#cache.enableDiskStatMetrics) |
| in gerrit.config. |
| |
| * The number of comments per change are limited to 5000, and their size to 16k. |
| The limits can be customized in `gerrit.config` using the |
| [change.maxComments](http://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/config-gerrit.html#change.maxComments) and |
| [change.commentSizeLimit](http://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/config-gerrit.html#change.commentSizeLimit) settings. |
| |
| ## New Features |
| |
| ### Mergeability behavior and performance |
| |
| This release introduces a configuration setting `change.mergeabilityComputationBehavior` |
| that defines when Gerrit computes the mergability of a change . |
| |
| Computing the mergability of changes is an expensive operation that can be |
| become a bottleneck for large Gerrit installations. The new setting allows |
| administrators to control this expense. Please refer to the |
| [Gerrit documentation](http://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/config-gerrit.html#change.mergeabilityComputationBehavior) |
| for more details about this setting. |
| |
| The setting |
| [`change.api.excludeMergeableInChangeInfo`](https://gerrit-documentation.storage.googleapis.com/Documentation/3.1.5/config-gerrit.html#change.api.excludeMergeableInChangeInfo) |
| is no longer used and may be removed from `gerrit.config`. |
| |
| ### New accounts cache |
| |
| Introduction of a brand-new AccountCache decomposed into smaller chunks that can be |
| cached individually: |
| |
| - External IDs + user name (cached in ExternalIdCache) |
| - CachedAccountDetails (newly cached) |
| - Gerrit’s default settings CachedAccountDetails – a new class representing all |
| information stored under the user’s ref (`refs/users/<sharded-id>`) |
| |
| The new structure is cleverly designed to require a lot less I/O when an entry needs to be |
| reloaded and lowering the ratio of cache-miss in case of user’s details updates. |
| |
| ### New external groups cache |
| |
| Gerrit can be linked to external user directories like LDAP, providing Gerrit with |
| external users and groups. External groups can be added to Gerrit to restrict access |
| to refs and repos and are mainly used for permissions evaluation. |
| |
| The following new additional caches have been introduced and can be customized in |
| `gerrit.config`: |
| |
| - `groups_external`: Caches all the external groups available to Gerrit. |
| - `groups_external_persisted`: Caches all external groups available to Gerrit at |
| some point in history. |
| |
| ### File Uploads |
| |
| File Uploads are now supported in the User Interface or through the REST API. |
| |
| ### New Revert permission |
| |
| Introduce a new permission to allow/deny the ability to revert a change through |
| the Gerrit UI. |
| |
| The permission is automatically added to the `Registered Users` as part of the |
| schema upgrade. To deny reverts, Gerrit administrators should remove this permission |
| from `All-Projects` ACL. |
| |
| ### New is:merge merge operator for searching changes |
| |
| Introduce the new `is:merge` operator for allowing to find changes that are |
| merge commits. This change requires a full reindex of the changes, which may take |
| quite a long time to compute for large-sized installations. |
| |
| When choosing the on-line reindexing option (default) Gerrit can still operate |
| with the old index version, disabling the `is:merge` operator until the new index |
| has been successfully rebuilt. |
| |
| ### New SSH commands |
| |
| New SSH commands introduced: |
| |
| - `gerrit set-topic`: set the topic of a change (existing REST-API surfaced via SSH) |
| - `gerrit sequence show`: show the current sequences value from All-Projects.git or All-Users.git |
| - `gerrit sequence set`: set the next value for sequences in All-Projects.git or All-Users.git |
| |
| ### Review labels stickiness |
| |
| - [Issue 12025](https://bugs.chromium.org/p/gerrit/issues/detail?id=12025) |
| Allow to configure individual votes as sticky by setting the |
| [`label.Label-Name.copyValue`](http://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/config-labels#label_copyValue) on the `project.config` labels. |
| |
| ### New CherryPickOf field for a change |
| |
| After a change is created or updated using the 'cherry-pick' functionality, |
| the cherry-picked change includes a new field in the change info returned from REST APIs |
| called `CherryPickOf` with the source change number and the patchset. |
| |
| ### New Gerrit configuration: `instanceId` |
| |
| Introduce the `instanceId` configuration for multi-master Gerrit setups. |
| For more details check: |
| |
| * [Design doc](../../design-docs/instance-id.html) |
| |
| * [Configuration](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/config-gerrit.html#gerrit.instanceId) |
| |
| * [Trace event origin](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/dev-plugins.html#_trace_event_origin) |
| |
| ### Other performance optimizations |
| |
| - Ability to configure the number of relevant changes to consider when suggesting |
| the reviewers on the changes screen, using the `gerrit.config` setting |
| [`suggest.relevantChanges`](http://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/config-gerrit.html#suggest.relevantChanges) |
| |
| ### PolyGerrit UI |
| |
| The Gerrit frontend has been migrated from Polymer 2 to |
| [Polymer 3](https://polymer-library.polymer-project.org/3.0/docs/upgrade). |
| |
| * Users can now cherry pick entire topics. |
| |
| * Gerrit supports adding display names. Hosts can configure first name or username as default. |
| |
| * The reply dialog now shows the entire comment thread instead of the comment list. |
| |
| * [Issue 6293](https://bugs.chromium.org/p/gerrit/issues/detail?id=6293): |
| More self-evident transitions from WIP state. "Start Review" button added to change view. |
| |
| * [Issue 8153](https://bugs.chromium.org/p/gerrit/issues/detail?id=8153): |
| Improvements to rebase indicator: display a hover card instead of a tooltip with the icon |
| including the possible rebase action. |
| |
| * [Issue 10444](https://bugs.chromium.org/p/gerrit/issues/detail?id=10444): |
| UI for deleting change messages for Gerrit Administrators. |
| |
| * [Issue 10890](https://bugs.chromium.org/p/gerrit/issues/detail?id=10890): |
| Repository list: Move "Repository Browser" column left of "Description" column. |
| |
| * [Issue 11441](https://bugs.chromium.org/p/gerrit/issues/detail?id=11441): |
| Add in-product reminder to keep discussions respectful. |
| |
| Some code review discussions can become a bit rough and some people perceived |
| discussions as not always respectful. |
| Add an in-product reminder to keep discussions respectful when a reply is typed, |
| optionally with linking to the code of conduct. |
| |
| * [Issue 11493](https://bugs.chromium.org/p/gerrit/issues/detail?id=11493): |
| Add an "Edit" button to the diff view in the PolyGerrit UI. |
| |
| * [Issue 11521](https://bugs.chromium.org/p/gerrit/issues/detail?id=11521): |
| Display trace ID in error popup if request failed and server did a trace. |
| |
| * [Issue 11522](https://bugs.chromium.org/p/gerrit/issues/detail?id=11522): |
| REST API for review labels in the project configuration. |
| |
| * [Issue 11705](https://bugs.chromium.org/p/gerrit/issues/detail?id=11705): |
| Show count of changes in User Dashboard. |
| |
| * [Issue 11706](https://bugs.chromium.org/p/gerrit/issues/detail?id=11706): |
| Allow editing the commit message as part of a change edit. |
| |
| * [Issue 11973](https://bugs.chromium.org/p/gerrit/issues/detail?id=11973): |
| Add copy-to-clipboard for generated HTTP password. |
| |
| * [Issue 12364](https://bugs.chromium.org/p/gerrit/issues/detail?id=12364): |
| Add support for going to a specific line number in the inline editor. |
| |
| ### Download commands plugin |
| |
| * [Issue 11594](https://bugs.chromium.org/p/gerrit/issues/detail?id=11594) |
| Merge the repo-vs-git logic into GitDownloadCommand directly. |
| |
| Created separate "getRepoCommand" and "getCommand" methods for |
| downstream classes to extend with the default "getRepoCommand" |
| defaulting to null. |
| |
| * [Issue 11609](https://bugs.chromium.org/p/gerrit/issues/detail?id=11609) |
| "Download patch" UI includes an option for also creating a local branch. |
| |
| A very standard workflow is to download a change from Gerrit then want |
| to make edits and then repo upload the changes back to Gerrit. |
| Allow developers who are not familiar with the idiosyncrasies of repo, |
| to easily create a local branch when checking out changes. |
| |
| ### End-to-end tests |
| |
| * Allow end-to-end tests to proportionally scale on their expected execution times. |
| |
| A `power_factor` [environment property](https://gerrit-review.googlesource.com/Documentation/dev-e2e-tests.html#_environment_properties) |
| was added to the end-to-end tests core framework. Using that optional property, |
| scenario steps can take some more (or less) time prior to expecting proper completion. |
| |
| The way to set that property locally then depends on the target runtime environment, |
| or SUT latency. The property may be used for either core or plugin scenarios. |
| |
| * `FlushProjectsCache` related scenarios added to core (and the `high-availability` plugin). |
| |
| * Support for relative runtime weights in scenarios. |
| |
| Each scenario can now either weight like any other by default, or override that default |
| with a greater weight value, compared to siblings that are lighter on execution times. |
| |
| Beside core, make the `high-availability` and `multi-site` plugin scenarios reuse this. |
| |
| * Allow scenarios to create and delete Gerrit changes alongside projects. |
| |
| Add the corresponding core support for an optional `http` request body to every such |
| `GerritSimulation`. Either automate or allow [environment properties](https://gerrit-review.googlesource.com/Documentation/dev-e2e-tests.html#_environment_properties) |
| to feed the related input test data. |
| |
| Beside core, make the `high-availability` and `multi-site` plugin scenarios test changes |
| that way. The latter currently has [Issue 12693](https://bugs.chromium.org/p/gerrit/issues/detail?id=12693) |
| as a known limitation. |
| |
| ### REST APIs |
| |
| * Accounts |
| |
| * `display_name` field added to all the endpoints returning the account details. |
| |
| * [New Set Display Name](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/rest-api-accounts.html#set-display-name) API for updating the account display name. |
| |
| * New [Modify Account](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/access-control.html#capability_modifyAccount) |
| global capability is now required for |
| [List Accounts Emails](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/rest-api-accounts.html#list-account-emails), |
| [Get Account External IDs](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/rest-api-accounts.html#get-account-external-ids) and |
| [Delete Account External IDs](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/rest-api-accounts.html#delete-account-external-ids) |
| when used to access information that belongs to accounts other than the caller. |
| |
| * Changes |
| |
| * [Query Changes](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/rest-api-changes.html#list-changes) |
| API now supports a new `no-limit` parameter to remove the default limit on queries and return |
| all results. This might not be supported by all index backends. |
| Also, the `SKIP_MERGEABLE` option for skipping the mergeability flag option is not supported anymore. |
| |
| * [Revert Change](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/rest-api-changes.html#revert-change) |
| now truncates the revert message if it exceeds 63 characters, by cutting it down to 59 characters |
| with the ellipsis (`…`) in the end. |
| Also, the API requires now the new revert permission, otherwise a `403 Forbidden` status code is returned. |
| |
| * [Revert Submission](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/rest-api-changes.html#revert-submission) |
| API for creating a submission-id for grouping multiple changes that belong to the same submission |
| (e.g. topic submission). |
| |
| * [Change file content in Change Edit](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/rest-api-changes.html#put-edit-file) |
| API supports now uploading binary content. |
| |
| * New [Preview Fix](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/rest-api-changes.html#preview-fix) |
| API for gettings the diffs of all files for a certain fix-id. This is intended to be used in conjunction |
| with robot comments. |
| |
| * New `allow_conflicts` option in all REST-API that perform a server-side merge or cherry-pick. |
| |
| * Groups |
| |
| * [Query Groups](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/rest-api-groups.html#query-groups) |
| API accepts the `query` as parameter for groups filtering, instead of the `query2` which was |
| a temporary name given to avoid clashes with an earlier deprecated parameter. |
| |
| * Projects |
| |
| * Brand-new set of [Label Endpoints](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.0/rest-api-projects.html#label-endpoints) |
| API for managing the project review labels in a programmatic way, without having |
| to directly modify directly the `project.config` in the `refs/meta/config` of |
| the repository. |
| |
| ## Bug Fixes |
| |
| * Replication plugin fixes |
| |
| * [Issue 11672](https://bugs.chromium.org/p/gerrit/issues/detail?id=11672): |
| Change the storage structure of the persisted replication tasks to avoid losing events. |
| |
| * [Issue 11745](https://bugs.chromium.org/p/gerrit/issues/detail?id=11745): |
| Fix firing pending "..all.." events on startup. |
| |
| * [Issue 11760](https://bugs.chromium.org/p/gerrit/issues/detail?id=11760): |
| Make persistent task keys stable. |
| |
| * [Issue 12678](https://bugs.chromium.org/p/gerrit/issues/detail?id=12678): |
| Fix missing replication Id in replication logs. |
| |
| * [Issue 12719](https://bugs.chromium.org/p/gerrit/issues/detail?id=12719): |
| Fix `replication start --wait` to track in-flight collisions and to not fail. |
| |
| * [Issue 12731](https://bugs.chromium.org/p/gerrit/issues/detail?id=12731): |
| Don't lose state when there's a pending push to the same ref. |
| |
| * PolyGerrit fixes |
| |
| * [Issue 4616](https://bugs.chromium.org/p/gerrit/issues/detail?id=4616): |
| Open commentlinks to changes on the same server in the same tab. |
| |
| * [Issue 7083](https://bugs.chromium.org/p/gerrit/issues/detail?id=7083): |
| Stop query from executing if predicate is empty. |
| |
| * [Issue 8068](https://bugs.chromium.org/p/gerrit/issues/detail?id=8068): |
| Fix screenreader: In unified mode, stop showing "0 added/removed". |
| |
| * [Issue 9296](https://bugs.chromium.org/p/gerrit/issues/detail?id=9296): |
| Fix wrong diff of commit message between different patch sets of a merge commit. |
| |
| * [Issue 11515](https://bugs.chromium.org/p/gerrit/issues/detail?id=11515): |
| Fix Ctrl-Enter on Move Change |
| |
| * [Issue 11552](https://bugs.chromium.org/p/gerrit/issues/detail?id=11552): |
| Fix prev/next on diff screen with unchanged files containing only comments. |
| |
| * [Issue 11625](https://bugs.chromium.org/p/gerrit/issues/detail?id=11625): |
| Avoid multiple notifications for existing reviewers. |
| |
| * [Issue 11697](https://bugs.chromium.org/p/gerrit/issues/detail?id=11697): |
| Fix rendering of commentlinks without leading whitespace. |
| |
| * [Issue 11725](https://bugs.chromium.org/p/gerrit/issues/detail?id=11725): |
| Fix diff view file name shown even when the file wasn't changed, but only included because |
| contains a comment. |
| |
| * [Issue 11727](https://bugs.chromium.org/p/gerrit/issues/detail?id=11727): |
| Fix blue underline missing from active tabs. |
| |
| * [Issue 11782](https://bugs.chromium.org/p/gerrit/issues/detail?id=11782): |
| Fix assignment of CSS style for CodeReview -1 labels within comments. |
| |
| * [Issue 11969](https://bugs.chromium.org/p/gerrit/issues/detail?id=11969): |
| Fix tab index in reply dialog. |
| |
| * [Issue 11980](https://bugs.chromium.org/p/gerrit/issues/detail?id=11980): |
| Fix handling of LDAP groups containing a dot in the PolyGerrit permissions screen. |
| |
| * [Issue 11984](https://bugs.chromium.org/p/gerrit/issues/detail?id=11984): |
| Fix top menu bar on iOS. |
| |
| * [Issue 11993](https://bugs.chromium.org/p/gerrit/issues/detail?id=11993): |
| Stop loading fonts from external resources. |
| |
| * [Issue 12020](https://bugs.chromium.org/p/gerrit/issues/detail?id=12020): |
| Fix 'New Contributor Agreement' screen. |
| |
| * [Issue 12024](https://bugs.chromium.org/p/gerrit/issues/detail?id=12024): |
| Fix undefined branch in create-destination-dialog. |
| |
| * [Issue 12031](https://bugs.chromium.org/p/gerrit/issues/detail?id=12031): |
| Fix issues with caching edited commit message. |
| |
| * [Issue 12067](https://bugs.chromium.org/p/gerrit/issues/detail?id=12067): |
| Fix blank screen after upgrading. |
| |
| * [Issue 12108](https://bugs.chromium.org/p/gerrit/issues/detail?id=12108): |
| Add missing 'Page ...' on pagination links in the repository list. |
| |
| * [Issue 12184](https://bugs.chromium.org/p/gerrit/issues/detail?id=12184): |
| Fix link in blame annotation to link directly to the commit. |
| |
| * [Issue 12197](https://bugs.chromium.org/p/gerrit/issues/detail?id=12197): |
| Fix rendering of commentlinks using `link` in PolyGerrit UI. |
| |
| * [Issue 12224](https://bugs.chromium.org/p/gerrit/issues/detail?id=12224): |
| Honor the date format preference when displaying dates. |
| |
| * [Issue 12385](https://bugs.chromium.org/p/gerrit/issues/detail?id=12385): |
| Fix memory leak in `gr-plugin-endpoints`. |
| |
| * [Issue 12707](https://bugs.chromium.org/p/gerrit/issues/detail?id=12707): |
| Apply diff preferences immediately after pressing "Save". |
| |
| * [Issue 12726](https://bugs.chromium.org/p/gerrit/issues/detail?id=12726): |
| Fix incorrect highlighting after `/` character in Javascript. |
| |
| * [Issue 12775](https://bugs.chromium.org/p/gerrit/issues/detail?id=12775): |
| Fix parent of previous patch sets not being available. |
| |
| * Other fixes |
| |
| * [Issue 3340](https://bugs.chromium.org/p/gerrit/issues/detail?id=3340): |
| Fix internal server errors when setting project access permission with bad regex. |
| |
| * [Issue 7645](https://bugs.chromium.org/p/gerrit/issues/detail?id=7645): |
| Fix thread deadlock when loading accounts from the account cache. |
| |
| Replacing Guava caches with Caffeine reduces the chances of having the |
| deadlocks and improves the cache performance. |
| |
| * [Issue 7969](https://bugs.chromium.org/p/gerrit/issues/detail?id=7969): |
| Fix internal server error when diffing `MERGE_LIST` between different patch sets |
| of a merge commit. |
| |
| * [Issue 8952](https://bugs.chromium.org/p/gerrit/issues/detail?id=8952): |
| Do not require explicit "Push Tag" rights to `refs/tags/*` for pushing an |
| annotated tag over HTTPS. |
| |
| * [Issue 10397](https://bugs.chromium.org/p/gerrit/issues/detail?id=10397): |
| Don't send notification email when publishing a change edit on a WIP change. |
| |
| * [Issue 11650](https://bugs.chromium.org/p/gerrit/issues/detail?id=11650): |
| Fix reindexing of changes after project is deleted in the `delete-project` plugin. |
| |
| * [Issue 11962](https://bugs.chromium.org/p/gerrit/issues/detail?id=11962): |
| Fix advertisement of `refs/meta/config` in git protocol v2 when client does |
| not have access to it. |
| |
| * [Issue 11986](https://bugs.chromium.org/p/gerrit/issues/detail?id=11986): |
| Fix fetching individual ref with git protocol v2. |
| |
| * [Issue 11989](https://bugs.chromium.org/p/gerrit/issues/detail?id=11989): |
| Fix internal server error when pushing over SSH with git protocol v2. |
| |
| * [Issue 12070](https://bugs.chromium.org/p/gerrit/issues/detail?id=12070): |
| Fix internal server error on git over HTTP calls when SSHD is enabled. |
| |
| * [Issue 12243](https://bugs.chromium.org/p/gerrit/issues/detail?id=12243): |
| Fix unexpected deactivation of service user accounts. |
| |
| * [Issue 12246](https://bugs.chromium.org/p/gerrit/issues/detail?id=12246): |
| Fix generation of duplicate ChangeIds when creating a new change via REST. |
| |
| * [Issue 12440](https://bugs.chromium.org/p/gerrit/issues/detail?id=12440): |
| Fix the access-path for AbstractGitCommand subclasses. |
| |
| * [Issue 12444](https://bugs.chromium.org/p/gerrit/issues/detail?id=12444): |
| Add support for `max_result_window` in Elasticsearch index configuration. |
| |
| * [Issue 12473](https://bugs.chromium.org/p/gerrit/issues/detail?id=12473): |
| Fix broken links in Elasticsearch configuration documentation. |
| |
| * [Issue 12606](https://bugs.chromium.org/p/gerrit/issues/detail?id=12606): |
| Fix `visibleto` predicate for groups. |
| |
| * [Issue 12747](https://bugs.chromium.org/p/gerrit/issues/detail?id=12747): |
| Fix change query visibility for internal user. |
| |
| * [Issue 12755](https://bugs.chromium.org/p/gerrit/issues/detail?id=12755): |
| Block the removal of the Realm primary external ids. |
| |
| ## Dependency Updates |
| |
| * Upgrade flogger to 0.5.1 |
| |
| * Upgrade guava to 29.0 |
| |
| * Upgrade guice to 4.2.3 |
| |
| * Upgrade jgit to 5.8.0.202005061305-m2 |
| |
| * Upgrade mina-sshd to 2.4.0 |
| |
| * Upgrade ow2 to 7.2 |
| |
| * Upgrade truth to 1.0.1 |
| |
| ## Documentation updates |
| |
| * New [Gerrit walkthrough guide for GitHub users](https://gerrit-review.googlesource.com/Documentation/intro-gerrit-walkthrough-github.html) |
| for allowing an easier transition for those who are coming from a Pull Request workflow. |
| |
| * New guide on [how to backup Gerrit](https://gerrit-review.googlesource.com/Documentation/backup.html). |
| |
| * Replace the term `slave` with `replica` in the Gerrit documentation, for alignment to the |
| new term used in the configuration. The `slave` term is still supported but deprecated. |
| |
| * [Issue 12573](https://bugs.chromium.org/p/gerrit/issues/detail?id=12573): |
| Added documentation of the commit-container PolyGerrit extension endpoint. |
| |
| ## Bugfix Releases |
| |
| ### 3.2.14 |
| |
| * Breaking changes |
| |
| * [Change 323855](https://gerrit-review.googlesource.com/323855) [Change 324115](https://gerrit-review.googlesource.com/324115): |
| ProjectCache#evict no longer triggers a reindex. |
| |
| During offline project reindexing evict() was triggering a duplicate reindex |
| on the project when we only wanted to evict the project cache entry. This same |
| issue occurred with the HA plugin and could be/been present in other plugins. |
| |
| If you have relied on a reindex being done on evict() you need to use |
| evictAndReindex() instead. This behavior is now consistent with other evict() |
| methods in Gerrit. |
| |
| * New features |
| |
| * [Change 324095](https://gerrit-review.googlesource.com/324095): |
| Display cache statistics after reindex operation. |
| |
| Help analyzing the cache utilization during reindex command |
| and provide insight into sizing them for optimal performance. |
| |
| * [Change 323786](ttps://gerrit-review.googlesource.com/323786): |
| Allow context-dependent group suggestions in gr-permission. |
| |
| * Reindexing performance improvements |
| |
| * [Change 323297](https://gerrit-review.googlesource.com/323297): |
| Avoid scanning for change refs for each project slices when reindexing all changes. |
| |
| Avoiding the duplicate work brings down the reindex time from 45 mins to 15 mins |
| for a test-site with 160k changes across 4 repos on NFS. |
| |
| * [Change 323395](https://gerrit-review.googlesource.com/323395): |
| Parallelize project slice creation when reindexing all changes. |
| |
| Slice creation can become an overhead for repositories on NFS with |
| many loose refs. Bring down the overall reindexing time by |
| creating projects slices in parallel. |
| |
| * [Change 323215](https://gerrit-review.googlesource.com/323215) |
| [Change 322296](https://gerrit-review.googlesource.com/322296): |
| Disable auto flushing during offline Lucene indexing. |
| |
| Flushing of Lucene index entries happens only based on |
| [ramBufferSize](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.14/config-gerrit.html#index.name.ramBufferSize) and |
| [maxBufferedDocs](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.14/config-gerrit.html#index.name.maxBufferedDocs) |
| settings instead of every index call. |
| |
| * [Change 322835](https://gerrit-review.googlesource.com/322835): |
| Use thread count specified on offline reindex command line. |
| |
| Honor the `--threads` command line option when provided instead of |
| batchThreads property from `gerrit.config`. |
| |
| * [Change 323396](https://gerrit-review.googlesource.com/323396): |
| Avoid lucene index deletes during offline reindexing. |
| |
| When running offline reindexing, the first operation is the removal |
| of the index, hence the Lucene index updates are not needed: use the |
| add document Lucene primitive, avoiding removals from the index during |
| flushes. This reduces the number of Lucene flushes even if |
| [ramBufferSize](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.14/config-gerrit.html#index.name.ramBufferSize) |
| is not big enough. |
| |
| * [Change 324115](https://gerrit-review.googlesource.com/324115): |
| Avoid double indexing work during project reindexing. |
| |
| * Bug Fixes |
| |
| * [Issue 14963](https://crbug.com/gerrit/14963): |
| Fix /access REST APIs returning incorrect rule when group is duplicated for same rule. |
| |
| * [Issue 14097](https://crbug.com/gerrit/14097): |
| Fix GC action not shown in project commands with Gerrit in multi-site configuration. |
| |
| * [Issue 15293](https://crbug.com/gerrit/15293): |
| Fix fetch of group suggestions for projects with a `/` in their name. |
| |
| * [Issue 15251](https://crbug.com/gerrit/15251): |
| Ensure that user without edit permission can't change plugin configuration. |
| |
| * [Change 313561](https://gerrit-review.googlesource.com/313561): |
| Handle null account-ids when sending e-mails. |
| |
| * [Change 307602](https://gerrit-review.googlesource.com/307602): |
| Fix NPE while accessing draft refs. |
| |
| * [Change 307482](https://gerrit-review.googlesource.com/307482): |
| EqualsLabelPredicate: fix bug that prevents matching owner votes. |
| |
| * [Change 322935](https://gerrit-review.googlesource.com/322935): |
| Fix buggy Index-Interactive Executor. |
| |
| Fix index.threads when set to a negative value which was not using a |
| direct executor as mentioned in docs. |
| |
| * [Change 323255](https://gerrit-review.googlesource.com/323255): |
| Skip creating slices for projects with no changes during changes off-line reindexing |
| so that empty slices are no longer included in the slice count. |
| |
| * Plugin API fixes |
| |
| * [Change 314962](https://gerrit-review.googlesource.com/314962): |
| Fix DynamicOptions to invoke listeners registered to BeanParseListener. |
| |
| * Dependency Updates |
| |
| * Update JGit to 5.1.16.202106041830-r, which contains the following |
| improvements: |
| |
| * [Change 180697](https://git.eclipse.org/r/180697): |
| BatchRefUpdate: Skip saving conflicting ref names and prefixes in memory. |
| |
| * [Change 180559](https://git.eclipse.org/r/180559): |
| Avoid having to scan over ALL loose refs to determine if the name is nested |
| within or is a container of an existing reference. |
| |
| ### 3.2.13 |
| |
| * New Features |
| |
| * [Issue 14930](https://bugs.chromium.org/p/gerrit/issues/detail?id=14930): |
| Include `Command-Status` in the `httpd_log` and the `httpd_log.json` |
| |
| Indicates the overall result of the GIT _command_ over HTTP. |
| |
| Refer to the [docs](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.13/logs.html#_httpd_log) |
| for more details. |
| |
| * Bug Fixes |
| |
| * [Issue 9812](https://crbug.com/gerrit/9812) [Issue 7338](https://crbug.com/gerrit/7338): |
| Merge commit cannot be moved |
| |
| If a merge was targetting branch A, but then it was decided to create |
| a new branch for this merge named B, which starts from A - The merge |
| is still valid for B, and the user has no way to move it without amending |
| and creating a new change. |
| |
| * [Issue 15024](https://crbug.com/gerrit/15024): |
| Gerrit event json formatter produces inconsistent payload for different projects |
| |
| AllProjectsName and AllUsersName were serialised as: {"name":"All-Projects"} and {"name":"All-Users"} |
| while all other projects were serialised as a JSON string. The different JSON |
| payloads were causing issues with the HA configuration using the |
| [high-availability plugin](https://gerrit.googlesource.com/plugins/high-availability). |
| |
| * [Issue 14968](https://crbug.com/gerrit/14968): |
| PluginServletContext does not implement javax.servlet.ServletContext.getVirtualServerName() |
| |
| Remove the noise on error_log of c.g.g.h.p.PluginServletContext does not implement |
| j.s.ServletContext.getVirtualServerName(), when running Gerrit on Tomcat 8.5.69. |
| |
| ### 3.2.12 |
| |
| * Security Fixes |
| |
| * [Issue 14732](https://crbug.com/gerrit/14732): |
| Commits/IncludedIn exposes branch names without respecting the ACLs on branches |
| |
| When calling the REST endpoint for listing all branches that a commit SHA1 |
| is part of, the commit is properly checked for visibility against the ACLs |
| (it is a REST resource) but the branches are not checked. |
| |
| The included-in may expose the list of non-visible branches to a user that |
| has visibility of the SHA1. |
| |
| * [Issue 7282](https://crbug.com/gerrit/7282): |
| Hide repository name and description when user has no access |
| |
| Gitiles did not respect Gerrit's permission and would show the repo name |
| and description to any user who could guess the name. |
| The repositories list as well as the content APIs were not affected. |
| |
| * Bug Fixes |
| |
| * [Issue 14785](https://crbug.com/gerrit/14785): |
| Limit returned changes for a triplet without Change-Id |
| |
| Fix a bug where invoking the REST-API /changes/repo~branch~ without |
| mentioning the change-id resulted in the full scan of all changes |
| on a repository/branch causing a high CPU overload and occupying |
| the request threads for a long time. |
| |
| * [Issue 14776](https://crbug.com/gerrit/14776): |
| Prevent removing e-mail associated with OpenID external IDs |
| |
| Gerrit prevents the user from removing the email address |
| associated with their OpenId account. |
| |
| * [Change 312602](https://gerrit-review.googlesource.com/c/gerrit/+/312602): |
| Fix Mariadb status matching for AccountPatchReview |
| |
| Mariadb connector uses SQLException.getSQLState() which returns the ANSI |
| SQLSTATE value, not the MariaDB/mysql error code. |
| Fix the removal of duplicate key detection when an already reviewed file |
| opened up again returned 500 because of the incorrect handling of SQLSTATE |
| value. |
| |
| * [Change 312382](https://gerrit-review.googlesource.com/c/gerrit/+/312382): |
| Fix deleting edits when change is merged |
| |
| Fix the support of deleting a change edit after it has been merged or |
| abandoned. |
| |
| ### 3.2.11 |
| |
| * Breaking Changes |
| |
| * Elasticsearch: Support for [EOL versions](https://www.elastic.co/support/eol) |
| 7.4 and 7.5 is discontinued, as they became EOL earlier this year. |
| |
| * Bug Fixes |
| |
| * [Issue 14495](https://crbug.com/gerrit/14495): |
| SSH thread leak with authentication exception |
| |
| A show-queue will show tasks in the Batch (or Interactive) queue hanging forever |
| as a consequence of a Git/HTTP thread ended because of an error. |
| |
| * [Issue 14577](https://crbug.com/gerrit/14577): |
| Dedicated mergeable endpoint shouldn't be called if change.mergeabilityComputationBehavior |
| is set to API_REF_UPDATED_AND_CHANGE_REINDEX |
| |
| * [Issue 14600](https://crbug.com/gerrit/14600): |
| Empty registered field on profile settings screen |
| |
| * [Issue 14613](https://crbug.com/gerrit/14613): |
| Gerrit is killed before the gracefulStopTimeout |
| |
| Avoids gerrit.sh killing the in-flight Git/HTTP just after 30 seconds regardless of |
| the `httpd.gracefulStopTimeout` configuration value. |
| |
| * [Issue 14639](https://crbug.com/gerrit/14639): |
| Searching repositories by name is case-sensitive |
| |
| Restore the correct project search that was case-insensitive in 2.16.27, |
| 3.1.3 and 3.3.2. |
| |
| * [Issue 14645](https://crbug.com/gerrit/14645): |
| Username to lowercase conversion fails with duplicates |
| |
| Duplicated accounts names associated with the same account id was making |
| the conversion to lowercase fail. |
| |
| * [Change 307602](https://gerrit-review.googlesource.com/c/gerrit/+/307602): |
| Fix NPE while accessing draft refs |
| |
| * [Change 307482](https://gerrit-review.googlesource.com/c/gerrit/+/307482): |
| EqualsLabelPredicate: fix bug that prevents matching owner votes |
| |
| * Dependency Updates |
| |
| * Update JGit to 73f8acdc5c97e068143c86765995c4fb6923ee91. |
| |
| ### 3.2.10 |
| |
| * Bug Fixes |
| |
| * [Issue 14553](https://crbug.com/gerrit/14553): |
| Gerrit REST-API fails when using /a/ prefix and cookies |
| |
| Recent fix to support GerritAccount Cookie authentication for Git/HTTP |
| broke existing Python (or other) scripting when performing automation with |
| Gerrit REST-API. That is due to the generation of the GerritAccount cookie |
| in the HTTP response, which Python automatically manages to reuse in |
| subsequent calls. |
| |
| * [Issue 13721](https://crbug.com/gerrit/13721): |
| Don't serve polygerrit assets for git requests |
| |
| After migration to Polymer UI, PolyGerrit static resources are mounted at |
| the root of the gerrit URL, and would collide with project namespaces, so that |
| the project with these prefixes cannot be served with Git over HTTP protocol. |
| |
| ### 3.2.9 (withdrawn) |
| |
| * Fix `EqualsLabelPredicate` to not fail when calling match() from a plugin |
| |
| Calling `match()` on the `EqualsLabelPredicate` returned from |
| `ChangeQueryBuilder.parse()` in a plugin fails when in the context of an |
| HTTP query. |
| |
| * Fix registration redirect on OpenID |
| |
| * Log when a new SSH connection is rejected due to exceeded limit |
| |
| When the `sshd.maxConnectionsPerUser` got exceeded for a user, new |
| connections from that user were rejected but no log entry was reported. |
| |
| * [Issue 14127](https://crbug.com/gerrit/14127): |
| Fix binding of DELETE REST calls from plugins. |
| |
| The processing of the DELETE request actually never reached the |
| delete-project plugin due to bug in the RestApiServlet which wrongly |
| delegated the request to a child collection in Gerrit core. |
| |
| * [Issue 13140](https://crbug.com/gerrit/13140): |
| OpenID: Remove support for Yahoo! OpenID provider. |
| |
| Yahoo! discontinued support for OpenID provider: |
| "OpenID2 will be EOLed on 6/30/20" |
| |
| * [Issue 14246](https://crbug.com/gerrit/14246): |
| Creation of internal account does not respect `auth.userNameToLowerCase`. |
| |
| The CreateAccount SSH command and REST API was able to create accounts |
| with usernames that contained uppercase letters even if |
| `auth.userNameToLowerCase` was set to true. |
| |
| * [Issue 14490](https://crbug.com/gerrit/14490): |
| Missing LDAP metrics for authentication. |
| |
| Expose the LDAP metrics in terms of latency and call rates so that any |
| problem can be highlighted early on and potentially alerted to the Gerrit |
| admin. |
| |
| * [Issue 14497](https://crbug.com/gerrit/14497): |
| Git/HTTP traffic overloads LDAP with duplicate authentication requests. |
| |
| When authenticating incoming Git calls over HTTP the BasicAuth filter was |
| called 3 times per call triggering multiple authentications against the |
| backend. |
| |
| * [Issue 14508](https://crbug.com/gerrit/14508): |
| Allow GerritAccount Cookie authentication for Git/HTTP. |
| |
| Allow to create a Gerrit session from the GerritAccount cookie set on the |
| Git client, so that only the first HTTP call will actually authenticate |
| and create a session whilst all the others would just reuse the existing |
| cookie. |
| |
| * [Issue 11142](https://crbug.com/gerrit/11142): |
| ssh to gerrit with no args requires standard input to terminate. |
| |
| * [JGit Issue 552173](https://bugs.eclipse.org/bugs/show_bug.cgi?id=552173) |
| Too many open files when fetching repos with lots of refs |
| |
| JGit update fixes "Too many open files" errors. |
| |
| * Dependency Updates |
| |
| * Update JGit to f2e5bace4841758927d47db7d20e4a6f7353ce57. |
| |
| ### 3.2.8 |
| |
| * New Features |
| |
| * [Issue 14091](https://bugs.chromium.org/p/gerrit/issues/detail?id=14091): |
| Support the highlighting of LaTeX files with .tex extension. |
| |
| * Breaking Changes |
| |
| * Elasticsearch: Support for [EOL versions](https://www.elastic.co/support/eol) |
| 7.2 and 7.3 is discontinued. Both elasticsearch versions became EOL recently. |
| |
| * [Issue 13931](https://bugs.chromium.org/p/gerrit/issues/detail?id=13931): |
| Disallow editing the Change-Id during inline edits. |
| |
| * Bug Fixes |
| |
| * [Issue 12443](https://bugs.chromium.org/p/gerrit/issues/detail?id=12443): |
| Stop generating continuous "logging context is not empty" in error_log. |
| |
| * [Issue 12847](https://bugs.chromium.org/p/gerrit/issues/detail?id=12847) |
| [Issue 12862](https://bugs.chromium.org/p/gerrit/issues/detail?id=12862): |
| Fix NPE on trying to send email for user without email address. |
| |
| * [Issue 14097](https://bugs.chromium.org/p/gerrit/issues/detail?id=14097): |
| Allow enabling of Git GC button for non-local Git repository managers, such |
| as multi-site repositories. |
| |
| * [Issue 14118](https://bugs.chromium.org/p/gerrit/issues/detail?id=14118): |
| Quota management: enforce repository size on pack rather than on object. |
| |
| * [Issue 14193](https://bugs.chromium.org/p/gerrit/issues/detail?id=14193): |
| Ensure InternalUser can parse groups. |
| |
| * PolyGerrit Fixes |
| |
| * [Issue 14035](https://bugs.chromium.org/p/gerrit/issues/detail?id=14035): |
| Change --gr-formatted-text-prose-max-width from 80ch to 120ch. |
| |
| * [Issue 14104](https://bugs.chromium.org/p/gerrit/issues/detail?id=14104): |
| Decorate the number line element of a blank side, otherwise it won't be affected |
| by the "hide-left" action to hide one side of the diff |
| |
| * [Issue 14257](https://bugs.chromium.org/p/gerrit/issues/detail?id=14257): |
| Fix empty TopMenu drop down list. |
| |
| * Documentation updates |
| |
| * Align the recommended buildifier version to v4.0, the same used in the CI. |
| |
| * Development guidelines: mention that Optional in arguments is discouraged |
| (use @Nullable instead) but may be used as return type. |
| |
| * Dependency Updates |
| |
| * Update highlight.js to 10.6.0. |
| |
| ### 3.2.7 |
| |
| * New Features |
| |
| * Add change query option allowing administrators to skip visibility filtering. |
| |
| Add a new REST-API change query option "skip-visibility" to allow administrators |
| to skip visibility filtering. |
| |
| * Security Fixes |
| |
| * [Issue 13858](https://bugs.chromium.org/p/gerrit/issues/detail?id=13858) |
| [CVE-2021-22553](https://nvd.nist.gov/vuln/detail/CVE-2021-22553): |
| Fixed memory leak in Git-over-HTTP requests. |
| |
| Unauthenticated users could exploit this problem in a Denial of Service attack, |
| causing the server to go out-of-memory. |
| |
| * PolyGerrit Fixes |
| |
| * [Issue 11811](https://bugs.chromium.org/p/gerrit/issues/detail?id=11811): |
| Fix comments on partial text selection on Safari. |
| |
| * [Issue 13870](https://bugs.chromium.org/p/gerrit/issues/detail?id=13870): |
| Polygerrit: Remove license headers in minified gr-app.js. |
| |
| * Replication plugin fixes |
| |
| * Don't check read permission when authgroup isn't set. |
| |
| Do not check for read permission when authGroup is not set since |
| the user is a RemoteSiteUser that is-an InternalUser having |
| read access to everything. This fixes a regression introduced in v3.1.10 |
| that prevented the All-Users.git repository to be fully replicated to |
| Gerrit replicas. |
| |
| * Bug Fixes |
| |
| * [Issue 13803](https://bugs.chromium.org/p/gerrit/issues/detail?id=13803): |
| Limit number of ambiguous accounts in error message. |
| |
| Don't list more than 3 ambiguous accounts in error message of |
| UnresolvableAccountException in order to prevent flooding the log and |
| displaying a lot of sensitive account data in an error dialog. |
| |
| * [Issue 13936](https://bugs.chromium.org/p/gerrit/issues/detail?id=13936): |
| Fix badly formatted error message shown in error dialog. |
| |
| * [Issue 13884](https://bugs.chromium.org/p/gerrit/issues/detail?id=13884): |
| Fix 'is:submittable' query on multiple submit records. |
| |
| * Dependency Updates |
| |
| * Update highlight.js to 10.5.0. |
| |
| * Update Jetty to 9.4.35.v20201120. |
| |
| * Downgrade soy-template to 2019-10-08. |
| |
| ### 3.2.6 |
| |
| * Breaking Changes |
| |
| * Elasticsearch: Support for [EOL version](https://www.elastic.co/support/eol) |
| 6.8 is discontinued. This was the last supported minor version of |
| Elasticsearch 6 in Gerrit. From this release, Gerrit no longer supports V6 |
| but only the already supported versions 7.x of Elasticsearch. |
| |
| * Speaking of which, support for 7.0 and 7.1 is discontinued too, as both |
| elasticsearch versions also became [EOL](https://www.elastic.co/support/eol) |
| recently. |
| |
| * Security Fixes |
| |
| * [Issue 12629](https://bugs.chromium.org/p/gerrit/issues/detail?id=12629): |
| Verify hostname when sending emails via SMTP server with SMTPSClient. |
| |
| The SMTP server's certificate and hostname must be verified if |
| encryption is enabled with SSL verification in the host settings |
| (`sendemail.smtpEncryption` and `sendemail.sslVerify`). |
| |
| * PolyGerrit Fixes |
| |
| * Add a warning if submitting a change with an open change edit. |
| |
| * Bug Fixes |
| |
| * [Issue 13544](https://bugs.chromium.org/p/gerrit/issues/detail?id=13544) |
| Ensure that GC#deleteOrphans respects pack lock: |
| |
| If pack or index files are guarded by a pack lock (.keep file) |
| deleteOrphans() should not touch the respective files protected by the |
| lock file. |
| |
| * [Issue 13775](https://bugs.chromium.org/p/gerrit/issues/detail?id=13775) |
| Honor `toogleWipState` permission for `%ready` `%wip` push options: |
| |
| * [Issue 13781](https://bugs.chromium.org/p/gerrit/issues/detail?id=13781) |
| Compact the REST-API output JSON unconditionally: |
| |
| The output JSON was initially compacted only when |
| the Accept header was set to `application/json`: the compaction is now |
| done unconditionally, unless the `pp=1` query parameter is specified. |
| |
| * [Issue 13786](https://bugs.chromium.org/p/gerrit/issues/detail?id=13786) |
| ForRef#check should permit internal users to read all refs: |
| |
| [Make `PermissionBackend#ForRef` authoritative change](https://gerrit-review.googlesource.com/c/gerrit/+/288925) |
| introduced a regression where gerrit `internal users` (e.g. plugins) were |
| not taken into consideration when checking READ permission. As consequence |
| the `All-Users.git` repository did not get any of the user's refs replicated |
| to the slaves. After the upgrade it is required to trigger a forced replication |
| of the `All-Users.git` repository manually. |
| |
| * Avoid logging ssh exception for __stream is already closed__ when length=0 |
| if present in the stacktrace. |
| |
| * Documentation Updates |
| |
| * Clarify that 'm' push option sets patch set description. |
| |
| * Clarify that disk cache metrics require `cache.enableDiskStatMetrics`. |
| |
| * Dependency Updates |
| |
| * Upgrade Bazel toolchain to 3.1.0. |
| |
| * Upgrade testcontainers to 1.15.1. |
| |
| * Upgrade Jetty to 9.4.33.v20201020. |
| |
| ### 3.2.5.1 |
| |
| * Bug Fixes |
| |
| * [Issue 13698](https://bugs.chromium.org/p/gerrit/issues/detail?id=13698): |
| Java runtime mismatch on Java 8 since after upgrading to v3.2.5. |
| |
| ### 3.2.5 |
| |
| * Breaking Changes |
| |
| * Elasticsearch: Support for [EOL versions](https://www.elastic.co/support/eol) |
| 6.6 and 6.7 is discontinued. |
| |
| * [Issue 13184](https://bugs.chromium.org/p/gerrit/issues/detail?id=13184): |
| Logging: `--console-log`-flag of `gerrit.war daemon` respects `log.textLogging` |
| and `log.jsonLogging` options |
| |
| Change in the default behaviour of the `--console-log` flag. Since |
| `log.textLogging` in the `gerrit.config` is `true` by default, using the |
| `--console-log`-flag now writes logs to the `error_log`-file in addition |
| to stderr by default. This can be avoided by setting `log.textLogging = false`. |
| |
| * [Issue 13701](https://bugs.chromium.org/p/gerrit/issues/detail?id=13701): |
| X-Forwarded-Proto is now required because of underlying upgrade of the Jetty library, |
| when Gerrit is accessed through an HTTP(/S) reverse-proxy. |
| |
| * Security Fixes |
| |
| * [Issue 13621](https://bugs.chromium.org/p/gerrit/issues/detail?id=13621) |
| [CVE-2020-8919](https://nvd.nist.gov/vuln/detail/CVE-2020-8919): |
| Make `PermissionBackend#ForRef` authoritative. |
| |
| Fixes a misconception that leads to data being accessible through Gerrit |
| APIs that should be locked down. |
| |
| Gerrit had two components for determining if a Git ref is visible to a |
| user: `(Default)RefFilter` and `PermissionBackend#ForRef` (e.g., |
| `RefControl`). The former was always capable of providing correct results |
| for all refs. The latter only had logic to decide if a Git ref is visible |
| according to the Gerrit `READ` permissions. This includes all refs under |
| `refs/heads` as well as any other ref that isn't a database ref or a Git |
| tag. This component was unaware of Git tags and notedb-related refs. Hence, |
| when asked for a database reference such as `refs/changes/xx/yyyyxx/meta`, |
| the logic would allow access if the user has `READ` permissions on any of |
| the ref prefixes (such as the default "read refs/* Anonymous Users"). |
| |
| That was problematic, because it bypassed |
| [documented behavior](http://gerrit-documentation.storage.googleapis.com/Documentation/3.2.5/access-control.html) |
| where a user should only have access to a change if he can see the |
| destination ref. The same goes for other database references. |
| |
| * [Issue 13514](https://bugs.chromium.org/p/gerrit/issues/detail?id=13514) |
| [CVE-2020-8920](https://nvd.nist.gov/vuln/detail/CVE-2020-8920): |
| Work around Gitiles bug on `All-Users` visibility. |
| |
| Gitiles has a special `FilteredRepository` wrapper that allows carefully |
| hiding refs based on the project's ACLs. There is however an optimization |
| that skips the filtering in case a user has `READ` permissions on every ACL |
| pattern(s). When the target repository is `All-Users`, the optimization |
| turns into a security issue because it allows seeing all personal information |
| associated with all accounts, i.e.: |
| |
| * draft comments |
| * draft edits |
| * personally identifiable information (PII) of all users |
| * external ids |
| |
| This fix now blocks Gitiles or any other part of Gerrit to abuse this power |
| when the target repository is `All-Users`, where nobody can be authorized |
| to skip the ACLs evaluation anyway. |
| |
| * Bug Fixes |
| |
| * [Issue 13307](https://bugs.chromium.org/p/gerrit/issues/detail?id=13307): |
| Do not forward events generated by multiple Gerrit servers in high-availability |
| configuration. |
| |
| * [Issue 13349](https://bugs.chromium.org/p/gerrit/issues/detail?id=13349): |
| Allow disabling SSH on Gerrit replica, when disabled in gerrit.config. |
| |
| * [Issue 13408](https://bugs.chromium.org/p/gerrit/issues/detail?id=13408): |
| ReceiveCommits: potential NPE when auto-closing changes. |
| |
| * [Issue 13412](https://bugs.chromium.org/p/gerrit/issues/detail?id=13412): |
| `gerrit test-submit` is not available when ssh download is disabled. |
| |
| * PolyGerrit Fixes |
| |
| * [Issue 11706](https://bugs.chromium.org/p/gerrit/issues/detail?id=11706): |
| Allow editing the commit message as part of change edit. |
| |
| * [Issue 13175](https://bugs.chromium.org/p/gerrit/issues/detail?id=13175): |
| Fix `gr-hovercard-behavior` under Firefox. |
| |
| * [Issue 13328](https://bugs.chromium.org/p/gerrit/issues/detail?id=13328): |
| Project dashboard links stored in 'My' menu (GWT) lead to 'cannot load page' |
| in PolyGerrit. |
| |
| * [Issue 13350](https://bugs.chromium.org/p/gerrit/issues/detail?id=13350): |
| Cannot add group to (cc-)review if its UUID is not the internal one. |
| |
| * [Issue 13402](https://bugs.chromium.org/p/gerrit/issues/detail?id=13402): |
| Errors not displayed by delete-project plugin, if project deletion fails. |
| |
| * Replication plugin Fixes |
| |
| * [Issue 12769](https://bugs.chromium.org/p/gerrit/issues/detail?id=12769): |
| Pending replication events can delay the Gerrit startup for too long. |
| |
| * End-to-end Tests Improvements |
| |
| * [Issue 13082](https://bugs.chromium.org/p/gerrit/issues/detail?id=13082): |
| Add Eclipse support for Gatling-based development of the end-to-end tests. |
| |
| * Documentation Updates |
| |
| * New documentation for the GC section in |
| [jgit.config](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.5.1/config-gerrit.html#jgit-gc) |
| with the details of the relevant JGit settings for tuning the repositories GC. |
| |
| * New documentation for the receive section in |
| [jgit.config](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.5.1/config-gerrit.html#jgit-receive) |
| with the documentation of the `autogc` setting. |
| |
| * Documentation of how to enable Git protocol v2 on |
| [jgit.config](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.5.1/config-gerrit.html#jgit-protocol). |
| |
| * Documentation of Gerrit [logs format](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.5.1/logs.html). |
| |
| * Documentation of the `X-Forwarded-For` header on HTTP/HTTPS reverse proxy configuration. |
| |
| * New [sshd.gracefulStopTimeout](https://gerrit-documentation.storage.googleapis.com/Documentation/3.2.5.1/config-gerrit.html#sshd.gracefulStopTimeout) |
| setting for allowing incoming SSH connections to drain upon Gerrit shutdown. |
| |
| * Dependency Updates |
| |
| * Caffeine 2.8.5 |
| |
| * Jetty 9.4.32.v20200930 |
| |
| * JGit v5.8.1.202007141445-r |
| |
| * Google Truth 1.1 |
| |
| * Soy 2020-08-24 |
| |
| ### 3.2.4 |
| |
| This minor release has been withdrawn. |
| |
| ### 3.2.3 |
| |
| * Security Fixes |
| |
| * [Issue 12846](https://bugs.chromium.org/p/gerrit/issues/detail?id=12846): |
| BadMessageException: 500: Response header too large. |
| |
| [CVE-2019-17638](https://nvd.nist.gov/vuln/detail/CVE-2019-17638) |
| |
| Bump Jetty version to 9.4.30.v20200611 to fix regression introduced in Jetty |
| version: 9.4.27.v20200227. |
| |
| Response header overflow leads to buffer corruptions Jetty server always |
| allocates maximum response header size. |
| |
| For more details see also upstream issues: |
| |
| [Issue 4936](https://github.com/eclipse/jetty.project/issues/4936) |
| [Issue 4541](https://github.com/eclipse/jetty.project/issues/4541) |
| |
| * Bug Fixes |
| |
| * [Issue 12813](https://bugs.chromium.org/p/gerrit/issues/detail?id=12813): |
| e2e-tests: Add CheckMasterBranchReplica1 scenarios |
| |
| * [Issue 12934](https://bugs.chromium.org/p/gerrit/issues/detail?id=12934): |
| Fix selection on diff with range comments |
| |
| * [Issue 12952](https://bugs.chromium.org/p/gerrit/issues/detail?id=12952): |
| Handle duplicate label values on project load and push of config updates |
| |
| * [Issue 12959](https://bugs.chromium.org/p/gerrit/issues/detail?id=12959): |
| Submit: Use updated change for response |
| |
| The response was sent with the change instance from before it |
| got submitted, rather than the updated change. As a result, the |
| response contained the status "NEW" rather than "MERGED". |
| |
| * [Issue 12988](https://bugs.chromium.org/p/gerrit/issues/detail?id=12988): |
| Fix issue with auto registering ssh commands |
| |
| * [Issue 13166](https://bugs.chromium.org/p/gerrit/issues/detail?id=13166): |
| Include request latency in httpd_log.json |
| |
| The latency field was missing in the entries of JSON-formatted http logs. |
| |
| * PolyGerrit Fixes |
| |
| * [Issue 12994](https://bugs.chromium.org/p/gerrit/issues/detail?id=12994): |
| Fix toggle on iOS |
| |
| This works around an issue where by clicking on iOS causes the toggle |
| to act like a double tap, thus switches back off. |
| |
| * [Issue 13080](https://bugs.chromium.org/p/gerrit/issues/detail?id=13080): |
| Fix the position of the hovercard |
| |
| The desired position was 'right', but it appeared 'bottom-right', |
| because the height of the hovercard was calculated as 2px at the time |
| of updating the position. |
| |
| * [Issue 13054](https://bugs.chromium.org/p/gerrit/issues/detail?id=13054): |
| Restore keyboard shortcut for expand all diff context |
| |
| In gerrit 2.16 release the keyboard shortcuts system was redesigned, but |
| the binding for Shift+x shortcut for expand all diffs was lost. Restore |
| this binding and confirm that it is now listed in the help dialog and |
| works as expected. |
| |
| * Documentation Updates |
| |
| * [Issue 10385](https://bugs.chromium.org/p/gerrit/issues/detail?id=10385): |
| Document "Toggle Work In Progress state" permission |
| |
| * Replication plugin fixes: |
| |
| * [Issue 12779](https://bugs.chromium.org/p/gerrit/issues/detail?id=12779): |
| Only fire the specified pending event URI |
| |
| * [Issue 12940](https://bugs.chromium.org/p/gerrit/issues/detail?id=12940): |
| Fix issue with URI lock release after replication task cancellation |
| |
| * [Issue 12986](https://bugs.chromium.org/p/gerrit/issues/detail?id=12986): |
| Revert "Get a URI lock before running tasks." |
| |
| May still be missing some lock release calls and caused the loss of |
| replication events in queue when backed by the same task storage file. |
| |
| * Dependency Updates |
| |
| * JGit v5.8.1.202007141445-r |
| |
| ### 3.2.2 |
| |
| * Security Fixes |
| |
| * [Issue 12926](https://bugs.chromium.org/p/gerrit/issues/detail?id=12926): |
| Allow setting X-Frame-Options response header for preventing |
| [clickjacking attacks](https://owasp.org/www-community/attacks/Clickjacking). |
| |
| * Bug Fixes |
| |
| * [Issue 12680](https://bugs.chromium.org/p/gerrit/issues/detail?id=12680): |
| Run projects reindex after Gerrit init only when needed, speeding up the upgrade process. |
| |
| * [Issue 12778](https://bugs.chromium.org/p/gerrit/issues/detail?id=12778): |
| Fix `Included In` filter not working in the search box. |
| |
| * [Issue 12909](https://bugs.chromium.org/p/gerrit/issues/detail?id=12909): |
| Fx missing index creation after Gerrit init. |
| |
| * [Issue 12918](https://bugs.chromium.org/p/gerrit/issues/detail?id=12918): |
| Fix missing email notifications for project watches for changes created via cherry-pick. |
| |
| * [Issue 12884](https://bugs.chromium.org/p/gerrit/issues/detail?id=12884): |
| DatabasePubKeyAuth: Exclude comment from peer key line if present |
| |
| * PolyGerrit Fixes |
| |
| * [Issue 11368](https://bugs.chromium.org/p/gerrit/issues/detail?id=11368): |
| Fix Javascript error if project has incorrect access configuration in `Global Capabilities`. |
| |
| * [Issue 12899](https://bugs.chromium.org/p/gerrit/issues/detail?id=12899): |
| Speedup the rendering of changes with large number of comments by lazy loading them when expanded. |
| |
| * Documentation Updates |
| |
| * [Issue 12869](https://bugs.chromium.org/p/gerrit/issues/detail?id=12869): |
| Add documentation on how to move a change across branches. |
| |
| * [Issue 12870](https://bugs.chromium.org/p/gerrit/issues/detail?id=12870): |
| Update WIP workflow user guide. |
| |
| ### 3.2.1 |
| |
| * New Features |
| |
| * Support for [rolling upgrade](http://gerrit-documentation.storage.googleapis.com/Documentation/3.1.6/config-gerrit.html#gerrit.experimentalRollingUpgrade). |
| |
| * New interface `AccountActivationListener` available to plugins for listening |
| to accounts activation status changes. |
| |
| * Security Fixes |
| |
| * [Issue 12717](https://bugs.chromium.org/p/gerrit/issues/detail?id=12717): |
| Deny access over HTTP for disabled accounts. |
| |
| A disabled account was still able to access over HTTP until the existing |
| session expired. |
| |
| * Close active SSH connections associated to an account that has been disabled. |
| |
| * Bug Fixes |
| |
| * [Issue 12850](https://bugs.chromium.org/p/gerrit/issues/detail?id=12850): |
| Ignore WIP changes in "CCed on" dashboard section. |
| |
| * PolyGerrit Fixes |
| |
| * [Issue 11706](https://bugs.chromium.org/p/gerrit/issues/detail?id=11706): |
| Support commit message modification as part of the inline edit session. |
| |
| * Documentation Updates |
| |
| * Added missing documentation of |
| [notedb.changes.sequenceBatchSize](http://gerrit-documentation.storage.googleapis.com/Documentation/3.2.1/config-gerrit.html#notedb.changes.sequenceBatchSize) |