blob: 80d68bc47999efd5309afdc66348da2683d74537 [file] [log] [blame] [view]
---
title: "Gerrit 3.0.x"
permalink: 3.0.html
hide_sidebar: true
hide_navtoggle: true
toc: true
---
Download: **[3.0.16](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.16.war)**
| [3.0.15](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.15.war)
| [3.0.13](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.13.war)
| [3.0.12](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.12.war)
| [3.0.11](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.11.war)
| [3.0.10](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.10.war)
| [3.0.9](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.9.war)
| [3.0.8](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.8.war)
| [3.0.7](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.7.war)
| [3.0.6](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.6.war)
| [3.0.5](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.5.war)
| [3.0.4](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.4.war)
| [3.0.3](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.3.war)
| [3.0.2](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.2.war)
| [3.0.1](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.1.war)
| [3.0.0](https://gerrit-releases.storage.googleapis.com/gerrit-3.0.0.war)
Documentation: **[3.0.16](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.16/index.html)**
| [3.0.15](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.15/index.html)
| [3.0.13](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/index.html)
| [3.0.12](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.12/index.html)
| [3.0.11](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.11/index.html)
| [3.0.10](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.10/index.html)
| [3.0.9](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.9/index.html)
| [3.0.8](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.8/index.html)
| [3.0.7](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.7/index.html)
| [3.0.6](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.6/index.html)
| [3.0.5](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.5/index.html)
| [3.0.4](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.4/index.html)
| [3.0.3](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.3/index.html)
| [3.0.2](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.2/index.html)
| [3.0.1](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.1/index.html)
| [3.0.0](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.0/index.html)
## Release Highlights
* Removal of GWT UI
The GWT UI is removed and PolyGerrit is now the only UI.
* Removal of ReviewDb
The database backend for changes, accounts, groups and projects ("ReviewDb") is
removed and this metadata is now stored in git ("NoteDb").
A database is still needed for account patch reviews, which stores the 'reviewed'
flag for files in a review per user. The default backend is H2, but MySQL,
PostgreSQL and MariaDb are also supported. See the
[documentation](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.0/config-gerrit.html#accountPatchReviewDb)
for details.
It is also possible for plugins to provide another backend by implementing the
[`AccountPatchReviewStore`](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.0/dev-plugins.html#account-patch-review-store)
interface.
* New quota enforcer extension point.
* [Issue 4040](https://bugs.chromium.org/p/gerrit/issues/detail?id=4040):
Support for signed push with GPG subkeys.
* New core plugins: `delete-project`, `gitiles`, `plugin-manager`, and `webhooks`.
## Important Notes
### 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.
### Breaking Changes
#### Reverse DNS lookup is now disabled by default
The `gerrit.disableReverseDnsLookup` option with default value false is replaced
by `gerrit.enableReverseDnsLookp` also with default value false. This means that
reverse DNS lookup is now disabled by default.
#### Private changes will be published (unmarked private) once merged
A warning dialog will be displayed to the user to confirm this on submission
using the UI. When submitted via push, this warning will not be shown. Already
merged changes cannot be marked private any longer.
#### The `urlAlias` configuration settings are removed
The URL rewriting feature introduced in 2.12 via the
[`urlAlias` configuration](https://gerrit-documentation.storage.googleapis.com/Documentation/2.16.12/config-gerrit.html#urlAlias)
was only supported in GWT, and thus removed with the 3.0 release.
See [issue 8054](https://bugs.chromium.org/p/gerrit/issues/detail?id=8054)
for details.
#### The `MessageOfTheDay` extension point is removed
The `MessageOfTheDay` functionality was not ported to the PolyGerrit-UI and
the `MessageOfTheDay` extension point was removed with the 3.0.7 release.
However, the JS API provides the `banner` entrypoint for plugins to add messages
to the UI. Plugins that were previously using the `MessageOfTheDay` extension
point have to be adapted accordingly.
## New Features
* New quota enforcer extension point.
Plugins may implement the
[QuotaEnforcer](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.0/dev-plugins.html#quota-enforcer)
interface to enforce
[quotas](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.0/dev-plugins.html#quota-enforcer).
* [Issue 4040](https://bugs.chromium.org/p/gerrit/issues/detail?id=4040):
Support for signed push with GPG subkeys.
It is now possible to use a GPG subkey when pushing commits with signed push.
* [Issue 6053](https://bugs.chromium.org/p/gerrit/issues/detail?id=6053):
Support for searching on mobile devices.
* [Issue 8535](https://bugs.chromium.org/p/gerrit/issues/detail?id=8535):
Support for plugin config entries in the PolyGerrit UI.
Configuration entries defined by server-side plugins are now displayed
in the UI.
* [Issue 10385](https://bugs.chromium.org/p/gerrit/issues/detail?id=10385):
New [Toggle Work In Progress state](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.12/access-control.html#category_toggle_work_in_progress_state) permission.
This allows for granting the "Toggle Work In Progress state" permission to
arbitrary users. This permission controls who is able to flip the Work In
Progress bit in addition to the three different groups that can do so already:
change owner, server administrator and project owners.
Note that the option was included in 3.0.0 but only documented since 3.0.12.
* New method to get UI top menus in the config API.
* New configuration option
[`change.api.excludeMergeableInChangeInfo`](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.0/config-gerrit.html#change.api.excludeMergeableInChangeInfo).
Computing mergeability of open changes becomes very expensive for hosts
that have fast-moving branches and a lot of open changes. Setting this
option to `true` disables it.
* New configuration option
[`change.move`](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.3/config-gerrit.html#change.move).
The `change.move` option allows to disable the "Move Change" REST API.
Note that the option was included in 3.0.0 but only documented since 3.0.3.
* New core plugins.
The `delete-project`, `gitiles`, `plugin-manager`, and `webhooks` plugins are
now core plugins bundled with the release, and can be installed during site
initialization.
## Dependency Updates
* Add dependency on resemblejs
* Remove dependency on apache derby
* Remove dependency on gwtjsonrpc
* Remove dependency on gwtorm
* Remove dependency on postgresql
* Upgrade asm to 7.0
* Upgrade auto-value to 1.6.5
* Upgrade codemirror-minified to 5.43.0
* Upgrade commons-lang3 to 3.8.1
* Upgrade gitiles-blame-cache and gitiles-servlet to 0.2-8
* Upgrade guava to 27.0.1-jre
* Upgrade guice to 4.2.2
* Upgrade prolog-cafe to 1.4.4
* Upgrade soy to 2019-03-11
* Upgrade truth to 0.43
## Native packaging
* Upgrade the Docker/Ubuntu image to Ubuntu 18.04
* Upgrade the Docker/CentOS image to CentOS 7.6.1810
* RPM/Deb: Remove Gerrit service start upon package setup.
Gerrit service is no longer started automatically after the package installation,
but requires manual invocation of the `/etc/init.d/gerrit start` command, or
the configuration of the service for auto-start and the reboot of the machine.
* Docker: auto-init the Gerrit site during first start of the container.
Simplify the configuration and management of Docker setups by automatically
detecting if a `$GERRIT_SITE/git/All-Projects.git` exists and, if it doesn't,
invoke the Gerrit init step in batch mode.
## Bugfix Releases
### 3.0.16
* 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.
* Bug Fixes
* [Issue 12287](https://bugs.chromium.org/p/gerrit/issues/detail?id=12287):
Add a warning if submitting a change with an open change edit.
* Dependency Updates
* Update JGit to 5.3.9.202012012026-r.
* Update Jetty to 9.4.33.v20201020.
### 3.0.15
* 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.0.15/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.
### 3.0.14
This minor release has been withdrawn.
### 3.0.13
* 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`.
* Bug Fixes
* [Issue 11706](https://bugs.chromium.org/p/gerrit/issues/detail?id=11706):
ChangeEdits: Don't wrap `Response.none()` in `Response.ok()`.
Wrapping of edit message modification `Response.none()` in `Response.ok()`
was erroneously added. Revert that part, as it broke the handling of that
specific request.
* [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):
Redirect GWT UI project dashboard links to Polygerrit endpoints.
Add a route to the Polygerrit UI router, to redirect such legacy GWT UI
endpoints, so that existing menu links are handled without any modifications.
Otherwise, switching from GWT to Polygerrit resulted in broken links to
project dashboards. This fix also handles bookmarked links.
* [Issue 13350](https://bugs.chromium.org/p/gerrit/issues/detail?id=13350):
Decode group id before using it to add cc-reviewers.
When a group is being suggested for cc-reviewer, its UUID gets encoded
by Gerrit prior to rendering it. That had no impact on Gerrit internal
groups, however external groups were affected. UUID prefixes contained
encoded characters where they shouldn't have. Hitting the Reply button
sent such encoded groups as is, leading to them not being found in Gerrit.
Decoding the URI before sending the group back to the UI fixes the issue.
* [Issue 13372](https://bugs.chromium.org/p/gerrit/issues/detail?id=13372):
Remove obsolete GWT change-related screenshot.
The GWT UI is not included anymore in Gerrit from v3.0 onwards.
* Replication Plugin Fixes
* Fixed synopsis in replication start command documentation.
`--url` is usable with `--all` or projects and on its own.
Update the usage to reflect this.
* [Issue 12769](https://bugs.chromium.org/p/gerrit/issues/detail?id=12769):
Don't wait for pending events to process on startup.
Previously, on large Gerrit installations with many projects and/or many
replication destinations, the replication plugin could take very long
periods of time to startup. This was particularly a problem if the
pending (persisted) event count was large as they all were rescheduled
before the plugin finished initializing.
Change this behavior so that startup merely begins the process of
scheduling the pending events, but does not wait for them to complete.
* End-to-end Tests Improvements
* Support an optional parent in the `CreateProject` scenario.
* Rely on a released version of `gatling-git` in stable branch.
* List of [plugins with scenarios](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/dev-e2e-tests.html#_plugin_scenarios)
updated.
* Documentation for
[Environment properties](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/dev-e2e-tests.html#_environment_properties)
was refactored and augmented with
[replication_delay](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/dev-e2e-tests.html#_replication_delay)
information, as the new `CheckNewProjectReplica1` core scenario was added.
* [Issue 12208](https://bugs.chromium.org/p/gerrit/issues/detail?id=12208):
Add [presentation links](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/dev-e2e-tests.html#_what_is_gatling)
to documentation.
* [Issue 13082](https://bugs.chromium.org/p/gerrit/issues/detail?id=13082):
Add [Eclipse support](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/dev-e2e-tests.html#_eclipse)
for Gatling tests.
* Other Improvements
* Introduced `sshd.gracefulStopTimeout`, documented
[here](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/config-gerrit.html#sshd.gracefulStopTimeout).
* Bumped the Bazel version to `3.5.0`.
* `MigrateToNoteDb` and `NoteDbMigrator` logging improvements.
* Documentation Updates
* Documented how to mitigate a broken
[Eclipse project on macOS](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/dev-eclipse.html#_eclipse_project_on_macos).
* Documented the `X-Forwarded-For` header under a new
[Reverse proxy and client IPs](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/config-reverseproxy.html#_reverse_proxy_and_client_ips)
section.
* Gerrit
[log files and their format](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/logs.html)
added as a new documentation page.
* Updated the
[recommended buildifier version](https://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/dev-contributing.html)
to `3.5.0`.
* Improved parts of the
[release process main documentation page](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.13/dev-release.html).
* Library Updates
* Upgraded Elasticsearch 6 support to `6.8.12` and 7 (elasticsearch-rest-client) to `7.8.1`.
* Upgraded jackson-core to version `2.11.2`.
* Upgraded caffeine to version `2.8.5`.
### 3.0.12
* 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 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.
* [Issue 12952](https://bugs.chromium.org/p/gerrit/issues/detail?id=12952):
Handle duplicate label values on project load and push of config updates
With the fix a validation error on load of the `project.config` file is
generated, but let the loading succeed and the duplicate value is filtered
out. Hence getting the project info of such a project no longer fails.
* [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.
### 3.0.11
* 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).
The setting [`gerrit.canLoadInIFrame`](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.11/config-gerrit.html#gerrit.canLoadInIFrame),
previously used by the GWT UI, is now honoured by the PolyGerrit UI.
* 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 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 12935](https://bugs.chromium.org/p/gerrit/issues/detail?id=12935):
Fix the output of the migrate-to-note-db program swallowing messaages after garbage collecting All-Users.
* PolyGerrit Fixes
* [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.
### 3.0.10
* 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.
* Bug Fixes
* [Issue 12777](https://bugs.chromium.org/p/gerrit/issues/detail?id=12777):
Hide "No Votes" notice for for labels added and approved by rules.
* [Issue 12844](https://bugs.chromium.org/p/gerrit/issues/detail?id=12844):
Update account full name when it changes in LDAP.
* [Issue 12850](https://bugs.chromium.org/p/gerrit/issues/detail?id=12850):
Ignore WIP changes in "CCed on" dashboard section.
* [Issue 11707](https://bugs.chromium.org/p/gerrit/issues/detail?id=11706):
Support `/COMMIT_MSG` for change edit REST endpoints.
* Do not fail for invalid change refs in `DefaultRefFilter`.
* Library Updates
* Upgrade elasticsearch-rest-client to 7.7.1.
* Documentation Updates
* Added missing documentation of
[notedb.changes.sequenceBatchSize](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.10/config-gerrit.html#notedb.changes.sequenceBatchSize)
### 3.0.9
* New Features
* Add a new metric for monitoring Java deadlocks.
The metric `proc/jvm/thread/num_deadlocked_threads` monitors the number of
threads that are deadlocked waiting for object monitors or ownable synchronizers.
* Add support for Elasticsearch 7.7.
* Breaking Changes
* Metrics: Cache disk stat metric computation is disabled by default
Calculation of the cache disks stat metrics for persistent caches is disabled
by default because it is a very expensive operation that can block a thread for
several minutes on larger installations.
Installations that still want to use this metric must explicitly enable it with the
[cache.enableDiskStatMetrics](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.9/config-gerrit.html#cache.enableDiskStatMetrics)
configuration option.
* Plugin API: Deprecated methods related to the draft workflow and change edits are removed
* `ChangeApi.getEdit()`
* `ChangeApi.publish()`
* `RevisionApi.delete()`
* `RevisionApi.publish()`
* [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
* End-to-end Tests Improvements
* Allow end-to-end tests to proportionally scale on their expected execution times.
A `power_factor` [environment property](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.9/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](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.9/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.
* Bug Fixes
* [Issue 12606](https://bugs.chromium.org/p/gerrit/issues/detail?id=12606):
Fix `visibleto` predicate for groups.
If a group name was used in the `visibleto` predicate, changes were
not returned even if the group had permission to see them.
* [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.
It was possible to remove the email address associated with the primary
id of a Realm, effectively resulting in the account being removed.
* [Isssue 12786](https://bugs.chromium.org/p/gerrit/issues/detail?id=12786):
Fix wrong status returned when auth backend couldn't be reached.
The response 401 was returned when the auth backend could not be
reached, instead of the response 503.
* [Issue 14242](https://bugs.chromium.org/p/gerrit/issues/detail?id=12424):
Fix email token verification failures caused by non-URL-encoded characters.
* [Issue 11625](https://bugs.chromium.org/p/gerrit/issues/detail?id=11625):
Avoid multiple notifications for existing reviewers.
* Fix internal server error on parsing commit message during receive commits.
* Add `autocomplete="off"` to LDAP login form.
Some security tools will flag the absence of the autocomplete flag as a
possible security issue, as it could allow for passwords to be saved and
automatically filled in on shared computers.
* Accept `--ownedby` as an alias of `--owned-by` in the groups REST API.
The option was incorrectly documented as `--ownedBy` which resulted in an
error "not a valid option" if anyone tried to use it.
The documentation is fixed, and `--ownedby` is added as an alias so that it
also works for anyone still referring to the old documentation.
* Fix various misuses of the Flogger API causing exception details to be omitted
in the log output.
Exceptions were not properly passed to the logger which would cause the
details to be omitted, or in some cases the message "ERROR: UNUSED LOG ARGUMENTS"
to be emitted.
* When an invalid PAPE response is received during OpenID authentication
* When a plugin config is invalid and cannot be loaded
* When an error occurs while migrating a change metadata entry to JSON
* When there is an unsupported charset in a patch text
* [Issue 12673](https://bugs.chromium.org/p/gerrit/issues/detail?id=12673):
Fix emitting debug logs while running tests.
* PolyGerrit UI Fixes
* [Issue 12707](https://bugs.chromium.org/p/gerrit/issues/detail?id=12707):
Apply diff preferences immediately after pressing "Save".
* [Issue 12690](https://bugs.chromium.org/p/gerrit/issues/detail?id=12690):
Only show the "Edit" button for open changes in the diff view.
* [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.
* [Issue 12385](https://bugs.chromium.org/p/gerrit/issues/detail?id=12385):
Fix memory leak in `gr-plugin-endpoints`.
* Replication Plugin Fixes
* [Issue 12678](https://bugs.chromium.org/p/gerrit/issues/detail?id=12678):
Fix missing replication Id in replication logs.
The migration to use Flogger in 2.16.17 caused a regression in the logging,
where the replication Id was omitted from the logs. This is fixed by reverting
back to slf4j logging for the replication log.
* [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.
If there was already a pending push (not an in-flight push) to the same endpoint,
the start for the push would be dropped when adding the push to the Destination.
This meant that a `replication start --wait` command would never complete when
one of its pushes was pending since its state would never receive the completion
notification for that push.
* [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.
* Fix URL matching to match real URLs in addition to templated URLs.
* Log when skipping deletion of a ref when pushing to a remote in mirror mode.
* Improve logging of push failures caused by a lock failure on the remote.
* Improve logging of refs to be pushed.
* Library Upgrades
* Upgrade rules_closure to forked version
This fixes the "-parameters is not supported for target value 1.7. Use 1.8 or later."
warning when building. See [PR 478](https://github.com/bazelbuild/rules_closure/pull/478).
* [Issue 12448](https://bugs.chromium.org/p/gerrit/issues/detail?id=12448):
Upgrade Guice to 4.2.3 and switch to using no-AOP Guice distribution
This allows to more easily support newer JDK versions.
* Upgrade asm to 7.2
* Upgrade jackson-core to 2.11.0
* Upgrade jetty to 9.4.27.v20200227
### 3.0.8
* Breaking Changes
* The `LogThreshold` annotation is removed.
The default log level for tests has been changed from DEBUG to INFO,
and this annotation is no longer needed. It was originally introduced
to allow classes to explicitly set their log level at level other than
DEBUG.
Plugins that use this annotation must be adjusted.
* New Features
* Add support for Elasticsearch 7.6.x.
* Include `upload-pack` metrics in the sshd log.
In order to enable detailed performance and problem analysis,
`upload-pack` metrics are now included in the sshd log.
* Add new configuration setting `core.packedGitUseStrongRefs`.
When set to true, this option enables using strong references to reference
packfile pages cached in the WindowCache. If this option is set Java gc can
no longer flush the WindowCache to free memory if the used heap comes close
to the maximum heap size. On the other hand this provides more predictable
performance.
* Add new configuration setting `sendemail.denyrcpt`.
This new setting works alongside the existing `sendemail.allowrcpt`, and
allows to configure email addresses or domains that Gerrit may not send to.
* Allow to format HTTP and SSH logs in JSON format.
When `log.jsonLogging` is enabled, the HTTP and SSH logs are formatted
as JSON, making it easier for them to be parsed. Note that the error log
was already formatted in JSON when this option was enabled.
* Add new metrics.
Metrics are added for:
* Jetty connections
* JGit WindowCache and total load time for block cache entries
* Available number of cores
* Average system load for the last minute
Refer to the metrics documentation for full details.
* [Issue 11493](https://bugs.chromium.org/p/gerrit/issues/detail?id=11493):
Add an "Edit" button to the diff view in the PolyGerrit UI.
* Add support for fsharp in highlighting syntax in the PolyGerrit UI.
* [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.
* Add prolog predicate to determine number of parents.
The new predicate `commit_parent_count` can be used to detect merge
commits.
* Add `NamedFluentLogger`.
`NamedFluentLogger` is an extension to Flogger that allows to create
a logger with a given name rather than the name of the enclosing class.
* [Issue 12444](https://bugs.chromium.org/p/gerrit/issues/detail?id=12444):
Add support for `max_result_window` in Elasticsearch index configuration.
* Add a Code Coverage layer and plugin API in the PolyGerrit UI.
See [Chromium issue 939904](https://bugs.chromium.org/p/chromium/issues/detail?id=939904)
for details.
* Library Upgrades
* Upgrade gitiles-servlet and blame-cache to 0.2-12
* Upgrade jackson-core to 2.10.3
* Upgrade Jetty to 9.4.24.v20191120, including a fix for supporting IPv6.
* Upgrade rules_closure to forked version.
This fixes the "-parameters is not supported for target value 1.7. Use 1.8 or later."
warning when building. See [PR 478](https://github.com/bazelbuild/rules_closure/pull/478).
* Security Fixes
* [Issue 12440](https://bugs.chromium.org/p/gerrit/issues/detail?id=12440):
Fix the access-path for AbstractGitCommand subclasses.
The access path for the Receive.currentUser in the receive-pack command
was wrongly set to SSH_COMMAND instead of to GIT.
This allowed project owners to force-update a ref using git-over-SSH
without having en explicit permission for that.
* Bug Fixes
* Fix size explosion of `All-Users` caused by draft comment removal.
Modify draft comments generation so that, when removed, they to point to an
empty parent.
* [Issue 11772](https://bugs.chromium.org/p/gerrit/issues/detail?id=11772):
Cancel deprecation of change identifiers that was planned since 2.16.
Since 2.16 the documentation of change identifiers states that the
identifiers other than `<project>~<numericid>` are deprecated and will
be removed in a future release. Since then the identifiers have still
not been removed and there is no clear plan to do so.
It is likely that "deprecated" identifiers are still used in links in
places where they can't be updated, for example in emails and forum
posts. Due to this, and since continuing to support all of the types
does not add any technical burden, ESC decided that the deprecation
should be cancelled.
The `change.api.allowedIdentifier` configuration setting is now
obsolete and has been removed.
* [Issue 3340](https://bugs.chromium.org/p/gerrit/issues/detail?id=3340):
Fix internal server errors when setting project access permission with bad regex.
* Fix removal of stale metrics from the metrics registry.
* [Issue 12349](https://bugs.chromium.org/p/gerrit/issues/detail?id=12349):
Fix time attribute of file entries in plugin artifacts.
* Make assumption on number of query results explicit for change Id arguments.
When a change Id passed as argument was resolved to multiple changes,
the first returned change was arbitrarily used. Now an error will be raised
and logged.
* download-commands plugin: Set SSH default port to 22.
* Document dependency from account deactivator to autoUpdateAccountActiveStatus
and log a warning if the account deactivation task is configured but will not
be scheduled.
* Fix handling of ambiguous name in `visibleto` search predicate.
If the `visibleto` search predicate was used with a display name that
resolved to more than one account, the first account in the result was
arbitrarily used. Now, this case will result in an error.
* Fix a dependency injection runtime error in DeleteZombieDrafts program.
* [Issue 12473](https://bugs.chromium.org/p/gerrit/issues/detail?id=12473):
Fix broken links in Elasticsearch configuration documentation.
* PolyGerrit UI 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 12031](https://bugs.chromium.org/p/gerrit/issues/detail?id=12031):
Fix issues with caching edited commit message.
* Remove `target=_self` from commentlinks.
* Replication Plugin Fixes
* Add method to push changes directly to given replica; intended to be used
by other plugins that extend the replication plugin.
* Check nulls in firePendingEvents at startup.
After a sudden reboot (for unknown reason) Gerrit at startup couldn't
load because of NullPointerException.
* Change default for the `replicateOnStartup` to false.
* Don't lose `ref-updated` events on plugin restart.
When a `ref-updated` event is received, persist the event in the directory
defined by the `replication.eventsDirectory`. When the updated ref is
replicated delete the persisted event.
* Packaging Fixes
* [Issue 12355](https://bugs.chromium.org/p/gerrit/issues/detail?id=12355):
Do not overwirte /etc/default/gerritcodereview upon upgrade.
* Other Fixes
* Fix various minor coding issues reported by Error Prone and Sonar Lint.
* Reduce log spam of 'Repository not found' stack traces.
* [Issue 11953](https://bugs.chromium.org/p/gerrit/issues/detail?id=11953):
Reduce log spam during tests by reducing the default log level to INFO.
The log level can now be explicitly set by the `GERRIT_LOG_LEVEL` system
variable.
The `LogThreshold` annotation is removed.
### 3.0.7
* New Features
* Include request description in HTTP thread names.
The HTTP worker threads had generic names like `HTTP-100`, `HTTP-101`,
etc. While we could conclude from the stack trace what this thread was
doing, we missed some important information like repository name, user name,
etc.
The HTTP threads now have descriptive names. For example, if there is an
ongoing git-fetch operation we will see a thread named like:
`HTTP POST /a/myProject/git-upload-pack (johndoe from 10.87.75.169)`.
This makes the naming consistent with SSHD threads, which are named like:
`SSH git-upload-pack /myProject (johndoe)`.
* New metrics for Jetty threadpool.
The new metrics are exposed under `http/server/jetty/*`.
* Utility program to delete zombie draft comment refs.
Deletion of draft comment refs was broken until 2.16.14, resulting in
draft comment refs not getting deleted properly. Although it has been fixed,
it's still possible that zombie refs exist from previous versions. The
new site program `DeleteZombieCommentsRefs` can be used to remove them.
* Highlight `WORKSPACE` and `BUILD.bazel` files as Python in the PolyGerrit UI.
* Breaking Changes
* The `MessageOfTheDay` extension point was removed.
The `MessageOfTheDay` functionality was not ported to the PolyGerrit-UI and
the `MessageOfTheDay` extension point was removed with the 3.0.7 release.
However, the JS API provides the `banner` entrypoint for plugins to add messages
to the UI. Plugins that were previously using the `MessageOfTheDay` extension
point have to be adapted accordingly.
* Bug Fixes
* [Issue 12246](https://bugs.chromium.org/p/gerrit/issues/detail?id=12246):
Fix generation of duplicate `Change-Id`s when creating a new change via REST.
The `Change-Id` was computed from the commit content and the timestamp,
which resulted in the possibility for two changes to get the same `Change-Id`
when two empty changes were created by REST at the same time.
The `Change-Id` is now generated randomly.
* [Issue 12097](https://bugs.chromium.org/p/gerrit/issues/detail?id=12097):
Fix migration to NoteDb when orphan changes exist.
In the case where a change belonged to a repository that did not exist,
the migration failed.
* [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 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 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 12243](https://bugs.chromium.org/p/gerrit/issues/detail?id=12243):
Fix unexpected deactivation of service user accounts.
* Fix editing name and email for service user accounts.
* Fix internal server error when a change edit includes an invalid file path.
Invalid file paths are now rejected as '400 Bad Request'.
* Don't check for conflicting refs when deleting a ref; improve performance of
migration to schema 167.
The migration to schema 167 involves deletion of refs. The performance was
poor for large installations (for example 30k user refs and 20k groups)
because the ref deletion implementation was doing an unnecessary check for
conflicting refs.
* Fix setting `_moreChanges` to the wrong value in change query REST results.
* Upgrade highlight-js to get various fixes in source code highlighting:
* fix(makefile) fix double relevance for assignments
* (xml) expand and improve document type highlighting
* fix(kotlin): fix termination of """ string literals
* (cpp) Add additional keywords
* Backslash is not used to escape in strings in standard SQL
* (javascript) fix jsx self-closing tag issues
* enh(ini) support arrays and much cleaner grammar
* (javascript) support jsx fragments
* PolyGerrit UI Fixes
* [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 12197](https://bugs.chromium.org/p/gerrit/issues/detail?id=12197):
Fix rendering of commentlinks using `link`.
* Other Changes
* Upgrade jackson-core dependency to 2.10.2
* Improve logging when a metadata update fails.
* Update [external Ids documentation](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.7/config-accounts.html#external-ids)
with information on how to find the sha1 of an external Id and how to show the
corresponding change note.
### 3.0.6
* New Features
* Include thread name in the HTTPD and SSHD logs.
Having thread name in the HTTPD and SSHD logs makes it easier to match entries
from the error log. The error log entries already contain the thread name, so
with the thread name included in each entry in the HTTPD and SSHD logs, we have
more data to match an error to a request than just the timestamp.
* PolyGerrit UI Fixes
* [Issue 12067](https://bugs.chromium.org/p/gerrit/issues/detail?id=12067):
Fix blank screen after upgrading.
* Other Fixes
* [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.
Double cleanup of the request context caused an internal server error on
push or fetch via git over HTTP.
* Fix generation of SSH keys with empty passphrase.
The `-N` option of `ssh-keygen` was correctly used for generation of RSA keys,
but for other types `-P` was used.
* Extend documentation of external Ids to include examples of how to generate
the sha1 of an external Id and how to show the git note of the Id.
### 3.0.5
* New Features
* [Issue 11973](https://bugs.chromium.org/p/gerrit/issues/detail?id=11973):
Add copy-to-clipboard for generated HTTP password.
* Add support for doctag in PolyGerrit UI syntax highlighter.
* Add an event interface in the PolyGerrit API.
* Add support for Elasticsearch 7.5.
* Add documentation of how to perform backups of Gerrit.
* Breaking Changes
* The default and minimum value of `execution.defaultThreadPoolSize` is
increased to 2.
* PolyGerrit UI Fixes
* [Issue 11993](https://bugs.chromium.org/p/gerrit/issues/detail?id=11993):
Stop loading fonts from external resources.
* [Issue 11984](https://bugs.chromium.org/p/gerrit/issues/detail?id=11984):
Fix top menu bar on iOS.
* [Issue 8282](https://bugs.chromium.org/p/gerrit/issues/detail?id=8282):
Avoid browser caching for diff on edit patch.
* [Issue 9444](https://bugs.chromium.org/p/gerrit/issues/detail?id=9444):
Fix syntax highlighting for multi-char char constants.
* [Issue 12020](https://bugs.chromium.org/p/gerrit/issues/detail?id=12020):
Fix 'New Contributor Agreement' screen.
* Fix `gr-syntax-params` css class.
* Fix overflow of branch name in change list.
* Other Fixes
* [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 11918](https://bugs.chromium.org/p/gerrit/issues/detail?id=11918):
Fix internal server error when deleting a tag or branch by git push.
* [Issue 5082](https://bugs.chromium.org/p/gerrit/issues/detail?id=5082):
Upgrade gitiles blame-cache to 0.2-11 to fix internal server error when getting
blame for file.
* [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.
* Disallow deleting the `refs/meta/config` branch via the 'Delete Branches'
REST API.
* Disallow deleting the `HEAD` ref via the 'Delete Branches' REST API.
* Allow empty base revision in the 'Create Branch' and 'Create Tag'
REST APIs.
* Fix deletion of draft comment refs.
In some situations, draft comment refs were not properly deleted
but left empty. This resulted in unused draft refs persisting in
the `All-Users` repository, polluting the namespace. Published draft
comments as well as deleted draft comments were kept in the history
of the draft ref, keeping them alive for GC, and causing a steady
increase of repository size.
* Use correct content type `text/plain` instead of `plain/text` in 'Create SSH Key'
REST API.
* Fix handling of interactive/batch users in the QoS filter.
For the git-over-http requests this filter didn't work properly because the
basic authentication happened later in the filter chain and at the moment when
the QoS filter was invoked the current user was not yet set.
* Add project name to headers of outgoing change emails.
* Fix and expand documentation of `ref-update` and `commit-received` hooks
in the hooks plugin.
* Upgrade jackson-core to 2.10.1.
### 3.0.4
* New features:
* Add a method on `ProjectConfig` to read from the repository.
Add a method that allows to read the config from the repository without
having to provide a `MetaDataUpdate` instance.
* New syntax highlighting files format supported.
Highlight handlebars, Jinja2, Jenkinsfile, Soy and VHDL formats;
associate cproj, xaml and svg as xml.
* New `getConfig()` method in the PolyGerrit Plugin RestApi interface.
Make the PolyGerrit RestApi interface to retrieve the server config and to cache it,
accessible to plugins.
* Add "readOnly" endpoint parameter to repo-config endpoint in PolyGerrit Plugin RestApi.
* PolyGerrit UI Fixes:
* Hide "HTTP Credentials" if auth is not `HTTP` or `HTTP_LDAP`.
* [Issue 11782](https://bugs.chromium.org/p/gerrit/issues/detail?id=11782):
Fix assignment of CSS style for CodeReview -1 labels within comments.
* [Issue 7083](https://bugs.chromium.org/p/gerrit/issues/detail?id=7083):
Stop query from executing if predicate is empty.
* [Issue 8513](https://bugs.chromium.org/p/gerrit/issues/detail?id=8513):
Add the SHA hash of each patchset in dropdown menu as it was in the old GWT UI.
* [Issue 11715](https://bugs.chromium.org/p/gerrit/issues/detail?id=11715):
Fix total additions/deletions counters when viewing diff against parent 1 on merge commit.
* [Issue 11682](https://bugs.chromium.org/p/gerrit/issues/detail?id=11682):
Fix some corner-cases in the diff view where the download file feature did not work for
added, renamed and deleted files.
* [Issue 10047](https://bugs.chromium.org/p/gerrit/issues/detail?id=10047):
Add shortcut to copy ssh-rsa public key.
* [Issue 7867](https://bugs.chromium.org/p/gerrit/issues/detail?id=7867):
Allow downloading a regular file from the patch set, from both base version
and specific patch set version. It is implemented as a dropdown.
* Elasticsearch Updates:
* Add support for Elasticsearch 7.4.
* Update elasticsearch-rest-client to 7.4.2.
* JGit Updates:
* Upgrade JGit to 5.3.6.201910020505-r.
This JGit version brings significant performance improvement in the case when
Gerrit loads all external-ids from NoteDb. This happens whenever the
external_ids_map cache gets invalidated or expires.
* Other fixes:
* Fix internal server error when non-existing base revision is given in input
to Cherry Pick Change REST API.
* Remove error log when user tried to delete current branch with the Delete Branch
REST API endpoint.
* Fix the response status code when an error occurred in the Delete Branch/Tag REST API
endpoint.
The endpoint returned "409 Conflict" but should return "500 Internal Server Error".
* Fix the response status code then an error occurred in the Update/Delete GPG Keys
REST API endpoint.
The endpoint returned "409 Conflict" but should return "500 Internal Server Error".
* [Issue 9001](https://bugs.chromium.org/p/gerrit/issues/detail?id=9001):
Fix external-id consistency checker e-mail validation.
Do not enforce emails on external IDs to be globally unique but allow the same e-mail
repeated multiple times as long as it associated to the same account id.
* Fix change message when automatically abandoning a change for a project
that has been deleted.
The change message and the message tag were inverted.
* Fix commit message subject when updating project description by REST API.
The tense of the commit message subject was inconsistent with other similar
messages.
* Fix commit timestamp when updating project configurations.
For some REST API operations that update the project configuration, the
commit that does the update on `refs/meta/config` had the wrong timestamp.
Rather than being the time of the actual commit, it was always the time
of the server startup.
This was the case for the following operations:
- Updating the description.
- Setting the parent project.
- Updating group names while getting access settings.
* Upgrade jackson-core to 2.10.0.
This version includes a fix for [CVE-2019-12384](https://nvd.nist.gov/vuln/detail/CVE-2019-12384).
* Add more detailed debug logging when not sending an outgoing email.
There are several conditions that could cause sending of an outgoing
email to be skipped. These are now logged at debug level.
* Increase severity to error for logging of exceptions during site initialization.
* [Issue 4824](https://bugs.chromium.org/p/gerrit/issues/detail?id=4824):
Handle multiple `httpd.listenUrl` values.
Per the [documentation](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.4/config-gerrit.html#httpd.listenUrl),
multiple values are supported, but if multiple values were specified Gerrit
would fail to start.
* Do not overwrite `httpd.listenUrl` during init, until the input has been checked as valid.
Fix a bug where during the Gerrit init in interactive mode the input was
invalid for the HTTP daemon settings, but still written to the configuration file.
* Add `adder` in the `reviewer-added` event.
### 3.0.3
* Breaking Changes
* The `weblinksOnly` option is removed from the `Get Diff` REST API endpoint.
This option was only used by the GWT UI which has been removed. This is a
breaking change for any other clients that are using it.
* New Features
* [Issue 6029](https://bugs.chromium.org/p/gerrit/issues/detail?id=6029):
Add support for downloading binary files.
* [Issue 11205](https://bugs.chromium.org/p/gerrit/issues/detail?id=11205):
Allow Gerrit admins to reindex a change even when Read access is not allowed
on its target branch.
* Extend the [`addMenuLink` method](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.3/pg-plugin-admin-api.html#_addmenulink)
in the PolyGerrit plugin API to allow plugins to specify a capability that
users must have in order to view a top menu item provided by the plugin.
* Utility script `remove-notedb-refs.sh` which can be used to remove all refs
created for NoteDb in case of rollback to ReviewDb.
* [Issue 11356](https://bugs.chromium.org/p/gerrit/issues/detail?id=11356):
Allow to override auto-detected Lucene index configuration.
The new settings
[`index.name.maxMergeCount`](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.3/config-gerrit.html#index.name.maxMergeCount),
[`index.name.maxThreadCount`](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.3/config-gerrit.html#index.name.maxThreadCount) and
[`index.name.enableAutoIOThrottle`](http://gerrit-documentation.storage.googleapis.com/Documentation/3.0.3/config-gerrit.html#index.name.enableAutoIOThrottle)
allow to manually configure the Lucene index, rather than using auto-detected
values, to improve performance.
* PolyGerrit UI Fixes
* [Issue 10166](https://bugs.chromium.org/p/gerrit/issues/detail?id=10166):
Add shortcuts for dashboard and watched changes in PolyGerrit.
* [Issue 11592](https://bugs.chromium.org/p/gerrit/issues/detail?id=11592):
Replace `${project}` in a `foreach` query for project dashboards.
* [Issue 10047](https://bugs.chromium.org/p/gerrit/issues/detail?id=10047):
Add missing copy buttons for SSH and GPG keys.
* [Issue 11623](https://bugs.chromium.org/p/gerrit/issues/detail?id=11623):
Remove leftover handling of GWT's change edit identifiers.
* [Issue 11562](https://bugs.chromium.org/p/gerrit/issues/detail?id=11562):
Fix handling of the "Send feedback" conditional display.
* Fix regular expression in link text parsing.
* [Issue 11682](https://bugs.chromium.org/p/gerrit/issues/detail?id=11682):
Fix edge cases in the download dropdown.
- Fix support for file addition, deletion and rename.
- Fix left side content URL when diffing against non base revision, e.g. `2..3`.
* Various improvements of the UX with colors in dark theme.
See [issue 11224](https://bugs.chromium.org/p/gerrit/issues/detail?id=11224),
[issue 11213](https://bugs.chromium.org/p/gerrit/issues/detail?id=11213), and
[issue 11004](https://bugs.chromium.org/p/gerrit/issues/detail?id=11004).
* Upgrade highlight.js to get various syntax highlighting improvements.
- [Issue 11666](https://bugs.chromium.org/p/gerrit/issues/detail?id=11666):
Improved support for dart keywords.
- SVG is added as an alias to xml.js and highlighted as XML.
- JavaScript supports big number syntax now.
- cpp syntax highlighting improved.
- JSON gains support for highlighting comments.
- C++ gains more keywords.
- YAML improves matching keys.
* Elasticsearch Updates
* Add support for Elasticsearch 7.4.
* Update elasticsearch-rest-client to 7.4.0.
* Other Fixes
* Various fixes in the 'Create Change' REST API endpoint:
- Fix internal server error when creating a merge commit fails with
`NoMergeBaseException`.
- Reject creation of a merge commit on a non-existing branch.
- Fail with the correct error message when destination branch does not
exist.
- Fix internal server error when target branch does not exist and the
parent option is given.
- Fix internal server error when base commit does not exist.
* [Issue 11644](https://bugs.chromium.org/p/gerrit/issues/detail?id=11644):
Fix setting project description when creating a project by REST API and setting
plugin configs at the same time.
* [Issue 11374](https://bugs.chromium.org/p/gerrit/issues/detail?id=11374):
Fix handling of plugin capabilities on modification of child collections.
* Fix init to not overwrite `httpd.listenUrl` until the input has been validated.
* [Issue 11246](https://bugs.chromium.org/p/gerrit/issues/detail?id=11246):
Allow duplicate email addresses to be associated to the same user account.
* [Issue 11367](https://bugs.chromium.org/p/gerrit/issues/detail?id=11367):
Fix querying inactive user changes.
* [Issue 11491](https://bugs.chromium.org/p/gerrit/issues/detail?id=11491):
Fix git clone/fetch/pull over SSH in high-latency network ending with
`SSH_MSG_CHANNEL_WINDOW_ADJUST` error.
* [Issue 11442](https://bugs.chromium.org/p/gerrit/issues/detail?id=11442):
Fix push failing with internal server error sporadically when
`notedb.changes.read=True` is configured.
* [Issue 11444](https://bugs.chromium.org/p/gerrit/issues/detail?id=11444):
Fix the wrong progress output during online migration in error_log and use
the correct charset conversion.
* Fix change message when automatically abandoning a change for a project
that has been deleted.
The change message and the message tag were inverted.
* [Issue 11137](https://bugs.chromium.org/p/gerrit/issues/detail?id=11137):
Remove the `gerrit.reportBugText` configuration option.
This option was only used in GWT, which has been removed.
* Upgrade JGit to 5.3.5.201909031855-r.
This version includes a fix for racy atomic ref updates.
* Replication Plugin Fixes
* [Issue 11145](https://bugs.chromium.org/p/gerrit/issues/detail?id=11145):
Drain replication queue before stopping the plugin.
* [Issue 11424](https://bugs.chromium.org/p/gerrit/issues/detail?id=11424):
Fix ReplicationTasksStorage exceptions in error_log when triggering replication
of all refs.
* [Issue 11573](https://bugs.chromium.org/p/gerrit/issues/detail?id=11573):
Fix dropping events during plugin restart.
* Singleusergroup Plugin Fixes
* [Issue 11498](https://bugs.chromium.org/p/gerrit/issues/detail?id=11498):
Fix group resolution for all numeric usernames.
### 3.0.2
* **Breaking Changes**
* Increase default number of SSHD threads to at least 4.
The default value of the `sshd.threads` setting is changed to be either two
times the number of available CPU cores, or 4, whichever is greater.
* [Issue 11216](https://bugs.chromium.org/p/gerrit/issues/detail?id=11216):
Remove hard-coded bug tracker URL and use configured value if present.
* New Features
* [Issue 11201](https://bugs.chromium.org/p/gerrit/issues/detail?id=11201):
Add ability to have custom label with a missing text value in PolyGerrit
* Add a PolyGerrit extension point to show a small banner next to the search bar.
A plugin or a site theme (gerrit-theme.html) may register a custom
Element to be inserted into this endpoint.
* Expose Gerrit's GWT client library in the plugin API
* [Issue 5791](https://bugs.chromium.org/p/gerrit/issues/detail?id=5791):
Add an extension point to allow setting a site banner.
* Add an extension point to allow custom site footers.
* Extend QuotaBackend and QuotaEnforcer extension points.
* Introduce repository size quota enforcer.
Introduce "/repository:size" quota group that gets examined
when commits get pushed to the repository.
* [Issue 11028](https://bugs.chromium.org/p/gerrit/issues/detail?id=11028):
Add support for "Link Another Identity" screen in PolyGerrit
* CommitApi: Add method to get commit info
* Allow to set content type in the PolyGerrit plugin REST API interface
* Add `changeCleanup.cleanupAccountPatchReview` configuration parameter to
wipe out AccountPatchReview data when change gets auto-abandoned.
* Elasticsearch Updates
* [Issue 11266](https://bugs.chromium.org/p/gerrit/issues/detail?id=11266):
Add support for Elasticsearch 6.8.
* [Issue 11267](https://bugs.chromium.org/p/gerrit/issues/detail?id=11267):
Add support for Elasticsearch 7.3.
* Update elasticsearch-rest-client to 7.3.1.
* PolyGerrit UI Fixes
* [Issue 11350](https://bugs.chromium.org/p/gerrit/issues/detail?id=11350):
Upgrade highlight.js to latest master revision.
* [Issue 11096](https://bugs.chromium.org/p/gerrit/issues/detail?id=11096):
Fix page not opening after a couple of times switching between GWT and PolyGerrit UI.
* Fix dialog popup when going to /admin/create-project.
* Add support for /groups
* Redirect /groups/self to /settings/#Groups
* [Issue 10733](https://bugs.chromium.org/p/gerrit/issues/detail?id=10733):
Fix anchors not working at page load on settings page
* [Issue 10062](https://bugs.chromium.org/p/gerrit/issues/detail?id=10062):
Fix Polygerrit converting plus (+) to space when calling email.confirm API,
and then failing with "invalid token"
* [Issue 11344](https://bugs.chromium.org/p/gerrit/issues/detail?id=11344):
Fix commentlink URL and HTML links when canonical URL includes a base link.
* Other Fixes
* [Issue 11348](https://bugs.chromium.org/p/gerrit/issues/detail?id=11348):
Display on error_log the progress of the online migration from ReviewDb to NoteDb.
* [Issue 11235](https://bugs.chromium.org/p/gerrit/issues/detail?id=11235):
Fix ls-user-refs reporting wrong results because it was not using the identity of the username
given as parameter.
* [Issue 11222](https://bugs.chromium.org/p/gerrit/issues/detail?id=11222):
Skip receive.maxBatchCommits when skip-validation option is passed and a commit validator implements
shouldValidateAllCommits
* [Issue 11083](https://bugs.chromium.org/p/gerrit/issues/detail?id=11083):
Set the correct new revision on change-merged events when submitting by push.
When multiple changes are submitted at the same time by push, the new revision
in all the change-merged events should be the revision of the head of the
destination branch after all changes are submitted.
* Adapt `gerrit.sh` script to work on Alpine Linux.
* [Issue 10855](https://bugs.chromium.org/p/gerrit/issues/detail?id=10855):
Fix standalone GWT plugin builds failing because of a broken transitive load of GWT_PLUGIN_DEPS for in-tree plugin builds
* [Issue 11148](https://bugs.chromium.org/p/gerrit/issues/detail?id=11148):
Speedup online reindex migration by skipping evaluation of submit rules for closed changes.
* [Issue 11016](https://bugs.chromium.org/p/gerrit/issues/detail?id=11016):
Fix Gerrit slave site init leads to update failure on system_config caused by read-only transaction
* [Issue 11106](https://bugs.chromium.org/p/gerrit/issues/detail?id=11106):
Fix missing comment context for left side in email notifications.
* [Issue 11110](https://bugs.chromium.org/p/gerrit/issues/detail?id=11110):
Do not swallow the exceptions that caused REST-API to return with a status >= 400.
* [Issue 11086](https://bugs.chromium.org/p/gerrit/issues/detail?id=11086):
When a WIP change is implicitly merged by direct push to the branch, its WIP
state is unset.
* [Issue 11082](https://bugs.chromium.org/p/gerrit/issues/detail?id=11082):
Close changes oldest first when submitting on push.
* Submit: Fix wrong conflict resolution
* Add methods on the change API to get comments and draft comments as lists.
* Make DefaultChangeReportFormatter extendible by plugins.
* Add back the oneByExternalId method on InternalAccountQuery.
This was removed in 2.16 but is added back so it can be used by plugins
and extensions.
* Fix and expand documentation of REST API to get revision files
* Fix detecting changes of parent trees when computing change kind for merge
commit.
A new patch set of a merge change is considered as NO_CHANGE if the
commits have the same delta and trees. For merge commits this includes
comparing the trees of the parent commits.
* Reduce log spam of "setting reductionLimit" debug messages of the Prolog
engine.
* [Issue 11325](https://bugs.chromium.org/p/gerrit/issues/detail?id=11325):
Do not update change set modified date on ReviewDb when a user delete all its
draft changes.
* Fix rebase change REST API returned status code.
The rebase change REST API return 422 Unprocessable Entity, instead of 500
Internal Server Error, If the specified base change is missing
* Catch all exceptions for reporting on Schema_130 migration and display the
name of the project that failed the migration.
* [Issue 11271](https://bugs.chromium.org/p/gerrit/issues/detail?id=11271)
Update rules_go to 0.18.6 for compatibility with Bazel 0.27.0
* [Issue 11248](https://bugs.chromium.org/p/gerrit/issues/detail?id=11248):
Ensures that a newly added label in a parent project is available in the ACL
configuration of a child project.
* Replication Plugin Fixes
* [Issue 10852](https://bugs.chromium.org/p/gerrit/issues/detail?id=10852):
Fix stale replications caused by in-flight pushes not properly removed when failed.
* [Issue 11204](https://bugs.chromium.org/p/gerrit/issues/detail?id=11204):
Fix creation of missing repository when replicating to a Gerrit server over HTTP.
* [Issue 11175](https://bugs.chromium.org/p/gerrit/issues/detail?id=11175):
Introduce new ref-filtering extension point for preventing replication of outdated SHA1s,
mostly useful in a multi-site scenario to prevent split-brain.
* [Issue 11055](https://bugs.chromium.org/p/gerrit/issues/detail?id=11055):
Fix failure to start when re-triggering persisted events
* [Issue 11172](https://bugs.chromium.org/p/gerrit/issues/detail?id=11172):
Fix persisted event is removed before all replications to all nodes are completed.
* When replication plugin is stopped or reloaded, mark all the currently pending replications as cancelled.
* Allow to configure timeout for SSH connections and SSH commands.
The timeouts can be configured with `gerrit.sshConnectionTimeout` and
`gerrit.sshCommandTimeout`, respectively.
* Make more classes and fields public/protected to ease extensibility.
* Improve handling of remote repository creation failures.
* Reintroduce boolean return value of methods in AdminApi.
* Refactor AdminApiFactory to an interface with a default implementation that
gets bound as a dynamic item, which can be replaced by derived implementations.
* When rescheduling due to in-flight push also log the in-flight task ID.
* Hooks Plugin Fixes
* [Issue 10823](https://bugs.chromium.org/p/gerrit/issues/detail?id=10823):
Allow to configure the number of hook execution workers.
By setting `hooks.executorThreads` the number of workers can be configured.
If not set, it defaults to 1 which was the previously fixed value.
### 3.0.1
* Upgrade JGit to 5.3.1.201904271842-r.
* [Issue 10858](https://bugs.chromium.org/p/gerrit/issues/detail?id=10858):
Fix starting Gerrit under Tomcat 8.
* [Issue 10664](https://bugs.chromium.org/p/gerrit/issues/detail?id=10664):
Fix duplicate key detection in MySQL patch review database.
* [Issue 11016](https://bugs.chromium.org/p/gerrit/issues/detail?id=11016):
Fix failure to initialize on slave.
* [Issue 10763](https://bugs.chromium.org/p/gerrit/issues/detail?id=10763):
Fix ACLs to allow regexes for tag and ref permissions.
The documentation states that reference names can also be described with
a regular expression by prefixing the reference name with `^`, but the UI
only showed the creation field when a non-regex name was used.
* [Issue 11082](https://bugs.chromium.org/p/gerrit/issues/detail?id=11082):
Close changes oldest first when submitting on push.
* [Issue 11059](https://bugs.chromium.org/p/gerrit/issues/detail?id=11059):
Fix setting `BLOCK` on partial label range in permissions.
* [Issue 10790](https://bugs.chromium.org/p/gerrit/issues/detail?id=10790):
Avoid evaluating submit rules twice for open changes.
Prolog submit rules were evaluated twice per page view for an open change,
which caused performance degradation on projects defining complex rules.
* [Issue 10943](https://bugs.chromium.org/p/gerrit/issues/detail?id=10943):
Set `References:` header on new change notification mail.
GMail changed the way
[emails are grouped in conversation view](https://gsuiteupdates.googleblog.com/2019/03/threading-changes-in-gmail-conversation-view.html),
which, combined with the fact that
[Amazon SES changes the `Message-ID` header](https://forums.aws.amazon.com/message.jspa?messageID=262855),
resulted in the new change notification email not being grouped with
subsequent emails related to the same change.
* [Issue 10952](https://bugs.chromium.org/p/gerrit/issues/detail?id=10952):
Fix definition of `PID` in `gerrit.sh`.
* [Issue 10852](https://bugs.chromium.org/p/gerrit/issues/detail?id=10852):
Replication plugin: Fix scheduling starvation.
* [Issue 10896](https://bugs.chromium.org/p/gerrit/issues/detail?id=10896):
Fix eliding project name without slash in notification emails.
* [Issue 10359](https://bugs.chromium.org/p/gerrit/issues/detail?id=10359):
LDAP: support servers that do not allow anonymous browsing.
Add `ldap.supportAnonymous` configuration setting in gerrit.config to support
servers that do not allow anonymous browsing. Default is true per standard and
best practice.
* Show submit button with tooltip when not allowed to submit.
The submit button was hidden when the user did not have permission to submit,
or other conditions prevented submit (for example the change being WIP).
* Don't send "GPG keys added" notification when no GPG keys were added.
A GPG key update can include both addition and removal of GPG keys. The
notification email for addition of new keys was always sent, even if the
update only removed keys.
* Update email notifications on changing security related settings.
Email notifications are now sent when a GPG or SSH key is removed, and
when the HTTP password is deleted or changed.
An email notification is now always sent when an SSH key is added to an
account, even when it was added by an administrator.
These notifications allow to alert the user if their account is compromised
and keys or password are altered by the attacker.
* Remove explicit dependency on protobuf_java.
The protobuf_java library is now consumed from rules_closure.
* Improve performance of migration of accounts to schema 146.
* Migration of the accounts is parallelized. The default number of threads
used is the number of available processors. This can be customized using
the `threadcount` system property.
* Before the migration, `gc --prune=now` is executed.
* When hosted on `FileRepository`, refs are packed after migration of every
1000 accounts.
* A progress indicator counts every 100 accounts migrated.
* Allow commit validation listeners to ignore the `skip-validation` push option.
Gerrit allows certain users to skip validation of new commits by passing
the `skip-validation` push option.
A new method `shouldValidateAllCommits` is added on the
`CommitValidationListener`, to allow plugin implemented validators to
override this option and always be invoked for new commits. The new
method has a default implementation that returns `false` meaning that
existing implementations don't need to be modified and will behave the
same as before.
* Optimize commit and ref operation validation for non-ff push.
On a non-ff push all the commits were validated before the ref operation
was validated. On a push with many commits, validating all the commits is
wasteful in the case where the ref operation is rejected. The logic is
changed so that the ref operation validation is performed before the commit
validation.
* Disallow change index task duplication.
It was possible for multiple index tasks to be queued for the same change.
* Fix formatting issues and inconsistencies in soy email templates.
* Use URL Formatter interface to generate URL in outgoing emails.
* Fix error message when JRE is not found when starting Gerrit.
The error message recommended to check for a JRE ">= 1.7", but Gerrit requires
Java 8 minimum.
* Expose the `createProject` method of the `CreateProject` class to plugins.
This allows plugins to directly invoke the project creation, avoiding the
checks that are performed when invoking via the `apply` method.
* Expose the jsr305 library in the plugin API.
* Upgrade gitiles to 0.2-10.
Includes a fix for rendering of metalinks in the navigation bar.
* Elasticsearch Fixes
* [Issue 10499](https://bugs.chromium.org/p/gerrit/issues/detail?id=10499):
Set default number of shards according to Elasticsearch version.
In Elasticsearch version 7.0 the default number of shards was reduced from
5 to 1.
See the [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-concepts.html#getting-started-shards-and-replicas)
for details.
* [Issue 10496](https://bugs.chromium.org/p/gerrit/issues/detail?id=10496) and
[Issue 10844](https://bugs.chromium.org/p/gerrit/issues/detail?id=10884):
Fix usage of `include_type_name` in index creation.
* Add support for Elasticsearch 7.1.
* Upgrade elasticsearch-rest-client to 7.1.1.
* PolyGerrit UI Fixes
* Only display 404 page on initial load.
* Don't reload when viewing dashboard.
* Fix hiding the HTTP password screen.
It was possible for the HTTP password to be un-hidden using CSS.
* Add an extension point to allow adding links to the user header.
* Documentation Updates
* [Issue 10897](https://bugs.chromium.org/p/gerrit/issues/detail?id=10897):
Update links to Google individual and corporate CLA pages.
* Clarify that account must have a username to be able to set HTTP password.
* Fix formatting in project config documentation.