blob: 544044e122c380664ed56f59e82bda77fc385498 [file] [log] [blame] [view]
# Gerrit 2.14
Download: **[2.14.11](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.11.war)**
| [2.14.10](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.10.war)
| [2.14.9](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.9.war)
| [2.14.8](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.8.war)
| [2.14.7](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.7.war)
| [2.14.6](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.6.war)
| [2.14.5.1](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.5.1.war)
| [2.14.4](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.4.war)
| [2.14.3](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.3.war)
| [2.14.2](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.2.war)
| [2.14.1](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.1.war)
| [2.14](https://gerrit-releases.storage.googleapis.com/gerrit-2.14.war)
Documentation: **[2.14.11](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.11/index.html)**
| [2.14.10](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.10/index.html)
| [2.14.9](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.9/index.html)
| [2.14.8](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.8/index.html)
| [2.14.7](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.7/index.html)
| [2.14.6](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.6/index.html)
| [2.14.5.1](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.5.1/index.html)
| [2.14.4](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.4/index.html)
| [2.14.3](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.3/index.html)
| [2.14.2](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.2/index.html)
| [2.14.1](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14.1/index.html)
| [2.14](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/index.html)
[TOC]
## Release Highlights
* Changes can be assigned to specific users
* Open and Abandoned changes can be deleted
* HTML emails and new templating framework
* Support for receiving review comments by email
* New [Polymer](https://www.polymer-project.org/) based user interface
* Support for elliptic curve/ed25519 SSH keys
* Secondary index for groups
* Experimental support for Elasticsearch as secondary index **from [2.14.8](#2.14.8)**
## Important Notes
### Schema Changes
This release contains schema changes. To upgrade:
``` sh
java -jar gerrit.war init -d site_path
```
### Reindex for new groups index
Gerrit 2.14 introduces a new secondary index for groups. The initial version
of this index must be created by running the offline reindex before starting
Gerrit:
``` sh
java -jar gerrit.war reindex --index groups -d site_path
```
Note that it is not necessary to reindex the changes and accounts indexes
offline. These will automatically be reindexed by the online reindexer
after starting Gerrit.
### Java 8
Gerrit now requires Java Runtime Environment (JRE) version 8. It is no longer
possible to run Gerrit on JRE 7 and it is not compatible with JRE 9 or newer
yet. For more information, see
[Issue 7843](https://bugs.chromium.org/p/gerrit/issues/detail?id=7843).
### Bouncy Castle Libraries
The [Bouncy Castle Crypto API libraries](https://www.bouncycastle.org/) are now
distributed in the Gerrit `.war` file rather than being downloaded during site
initialization. When upgrading from a previous version of Gerrit, previously
downloaded Bouncy Castle `.jar` files remaining in the site's `/lib` folder will
be disabled by appending `.disabled` to the file name.
### HTTP Digest Authentication Removed
Support for HTTP Digest Authentiation is removed.
With the move to NoteDB, the per-account data (including the HTTP password) will
be stored in a branch in the `All-Users` repo, where it is subject to Gerrit ACLs.
Since these are notoriously hard to setup correctly, we want to avoid storing the
password in plaintext.
Existing passwords will be migrated to a hashed password during site initialization
when upgrading from an earlier version of Gerrit.
### Evaluation of BLOCK permission rules has changed
An exclusive ALLOW permission now has priority over a BLOCK permission when
both permissions are defined on the same project.
This means an exclusive ALLOW rule now overrules BLOCK rules on the same
project.
BLOCK rules still cannot be overruled by child projects.
This change makes it possible to allow a permission for a specific ref and to
block the same permission for all other refs. For example, it is now possible to
allow all users to push changes for review, but to block all direct pushes:
```
[access "refs/*"]
push = block group Anonymous Users
[access "refs/for/*"]
exclusiveGroupPermissions = push
push = group Registered Users
```
### Deprecation of Velocity Email Templates
This release deprecates the use of Velocity mail templates. In a future release
support will be removed and it will be necessary to upgrade custom mail templates
to Soy files.
### Tag Permissions
The permissions "Push Annotated Tag" and "Push Signed Tag" are renamed to
"Create Annotated Tag" and "Create Signed Tag". Existing project configurations
using the old permission names will be migrated during site initialization.
### Behavior change in `ref-update` hook
The `ref-update` hook is now only invoked for direct ref updates, i.e. branch
creation, branch deletion, and updates (fast-forward and non-fastforward) via
direct push. It is not invoked on commits received for review, or on submit of
changes.
A new hook named `commit-received` is added, which is invoked when a commit is
received for review, and can be used to prevent reviews from being created.
A new hook named `submit` is added **in [2.14.9](#2.14.9)**, which is invoked
when a user attempts to submit a change, and can be used to prevent the submit.
Sites using the `ref-update` hook to validate changes pushed for review, or to
validate submits, should migrate to the `commit-received` and `submit` hooks.
### Updated primary key on JdbcAccountPatchReviewStore {#patch-review-primary-key}
In version 2.14.4 the fields in the JdbcAccountPatchReviewStore primary key
are reordered to improve performance when clearing the reviewed flag for a
patch set.
Sites that have already upgraded from an earlier version to 2.13, or to a 2.14.x
version before 2.14.4, and want to take advantage of this performance improvement,
should manually drop and recreate the primary key as follows:
```
# drop the key
ALTER TABLE account_patch_reviews
DROP CONSTRAINT primary_key_account_patch_reviews;
# recreate the key
ALTER TABLE account_patch_reviews
ADD CONSTRAINT primary_key_account_patch_reviews
PRIMARY KEY (change_id, patch_set_id, account_id, file_name);
```
Note that this is optional. The site will continue to work without this update.
The update is not necessary when upgrading directly to 2.14.4 from a version
earlier than 2.13, as the primary key will be created with the updated order
anyway.
## New Features
### Change Assignee
Changes may be assigned to a specific user. This allows a workflow where the
user that is assigned to a change is responsible for reviewing the change and/or
passing the assignment on to another user.
In the UI, changes assigned to the currently logged in user are highlighted.
A new `assignee:` search predicate allows to find changes assigned to a given
user.
### Delete Changes
* [Issue 4509](https://bugs.chromium.org/p/gerrit/issues/detail?id=4509):
Open and Abandoned changes can be deleted by administrators and by users who have
the
[Delete Own Changes](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/access-control.html#category_delete_own_changes)
permission.
### Emails
#### HTML Emails
Gerrit email messages are made easier to read by sending HTML content parts in
addition to the existing text email content. This is enabled by default, and
can be disabled by setting
[`sendemail.html`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/config-gerrit.html#sendemail.html)
to `false`.
Users can opt to always receive plaintext emails by setting the
[Email Format preference](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/intro-user.html#email-format).
#### Closure Templates
Mail templates can now be written using
[Closure Templates (Soy)](https://developers.google.com/closure/templates/). Mail
templates written in Velocity (VTL) are deprecated but still supported. Support
for VTL will be dropped in a future release.
#### Review Comments by Email
Gerrit now supports
[receiving review comments by email](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/intro-user.html#reply-by-email).
### Secondary Index with Elasticsearch
It is possible to enable Elasticsearch as a secondary index by setting
[`index.type`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/config-gerrit.html#index.type)
to `ELASTICSEARCH` and configuring the
[Elasticsearch specific configuration parameters](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/config-gerrit.html#elasticsearch).
Note that the Elasticsearch implementation is still considered experimental
and it is not advised to use it for production systems.
### User Interface
* [Issue 3944](https://bugs.chromium.org/p/gerrit/issues/detail?id=3944):
Tags can be created and deleted via the Tags screen in the UI.
Although the [REST API](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-projects.html#create-tag)
supports creation of both lightweight and annotated tags from 2.14, the GWT UI
allows for annotation with 2.14.4 or later.
* For merge commits, the list of commits that will be merged into the destination
branch is included as the `/MERGE_LIST` magic file which is shown as `Merge List`
in the UI.
### REST API
#### Accounts
* [Get Account Status](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-accounts.html#get-account-status)
* [Set Account Status](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-accounts.html#set-account-status)
* [Get Account External IDs](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-accounts.html#get-account-external-ids)
* [Delete Account External IDs](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-accounts.html#delete-account-external-ids)
#### Changes
* [Get Assignee](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#get-assignee)
* [Get Past Assignees](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#get-past-assignees)
* [Set Assignee](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#set-assignee)
* [Delete Assignee](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#delete-assignee)
* [List Change Robot Comments](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#list-change-robot-comments)
* [Create Merge Patch Set](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#create-merge-patch-set-for-change)
* [Get Description](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#get-description)
* [Set Description](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#set-description)
* [Get Merge List](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#get-merge-list)
* [Get Submit Preview](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#submit-preview)
* [List Revision Reviewers](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#list-revision-reviewers)
* [List Revision Votes](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#list-revision-votes)
* [Delete Revision Vote](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#delete-revision-vote)
#### Groups
* [Query Groups](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-groups.html#query-groups)
* [Index Group](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-groups.html#index-group)
#### Projects
* [Delete Tag](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-projects.html#delete-tag)
* [Delete Tags](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-projects.html#delete-tags)
#### Revisions
* [List Robot Comments](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#list-robot-comments)
* [Get Robot Comment](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14/rest-api-changes.html#get-robot-comment)
### New User Interface ("PolyGerrit")
Gerrit now includes a new user interface, referred to as "PolyGerrit", based on
[Polymer](https://www.polymer-project.org/).
The UI can be switched between PolyGerrit and GWT by clicking the "New UI" and
"Old UI" links in the site footer. Alternatively, the UI can be switched by
adding `?polygerrit=1` or `?polygerrit=0` to the URL.
Note that PolyGerrit is still under development. Most use cases are supported,
but there are still some missing features compared to the GWT UI.
### SSHD
* [Issue 4507](https://bugs.chromium.org/p/gerrit/issues/detail?id=4507):
Add support for elliptic curve/ed25519 SSH keys.
### Creating Changes for Merged Commits
Normally, changes can be reviewed only before they are being merged. This new
feature allows for post-submit review of commits by creating a new merged
change, by using the
['merged' push option](https://gerrit-documentation.storage.googleapis.com/Documentation/2.14/user-upload.html#merged).
## Bugfixes
* [Issue 5234](https://bugs.chromium.org/p/gerrit/issues/detail?id=5234):
Fix SSH GSSAPI authentication.
* [Issue 5739](https://bugs.chromium.org/p/gerrit/issues/detail?id=5739):
Prevent `ref-update` hook from being invoked on every commit when pushing
multiple commits.
Instead of being invoked on every commit received, the `ref-update` hook
is now invoked before the ref update operation is finalized. Note that
the hook is no longer invoked on commits pushed for review or on changes
that are merged. It is invoked for creation/deletion of refs, and for
ref updates caused by direct pushes (i.e. bypassing review).
The previous behavior of the `ref-update` hook is moved into a new hook
named `commit-received`. A new parameter `--cmdref` is added, and the
special handling of `refs/for` and `refs/changes` is removed.
Sites using the `ref-update` hook should rename the hook file to
`commit-received`.
## Dependency Updates
* Update auto-value to 1.4
* Update Bouncy Castle to 1.56
* Update codemirror to 5.25.0
* Update commons-compress to 1.12
* Update Guava to 21.0 (updated to 22.0 in 2.14.6)
* Update Guice to 4.1.0
* Update GWT to 2.8.0 (updated to 2.8.2 in 2.14.6)
* Update gwtjsonrpc to 1.11
* Update gwtorm to 1.17
* Update JavaEWAH to 1.1.6
* Update JGit to 4.7.0.201704051617-r
* Update jsch to 0.1.54
* Update Lucene to 5.5.2
* Update mina to 2.0.16
* Update ow2-asm to 5.1
* Update prolog-cafe to 1.4.2
* Update SSHD to 1.4.0
## Bugfix Releases
### 2.14.11 {#2.14.11}
* Fix display of "Delete Changes" permission in access screen on GWT UI.
* Fix permission check when deleting a single branch with the "Delete Branches"
REST endpoint.
* Include cause in exception when failing to save config in the "Set Config"
REST endpoint.
* [Issue 9482](https://bugs.chromium.org/p/gerrit/issues/detail?id=9482):
Fix staleness checker for URL-encoded project names.
* [Issue 9153](https://bugs.chromium.org/p/gerrit/issues/detail?id=9153):
Upgrade JGit to 4.7.2.201807261330-r.
This version includes several fixes including a fix for issue 9153 which
prevented querying for filenames with special characters, and fixes
related to cleaning up ref directories after running GC.
It also includes the fix
[Honor trustFolderStats also when reading packed-refs](https://git.eclipse.org/r/#/c/112015/).
Users should note that for repositories with a high number of references
(for example in excess of 300K refs) and in a server with high traffic,
this solution may not scale well and should be tested carefully.
* Upgrade guice to 4.2.0.
Guice [version 4.2.0](https://github.com/google/guice/wiki/Guice42)
includes performance improvements.
* Upgrade metrics-core to 4.0.3.
* Upgrade elasticsearch-rest-client to 6.3.2.
### 2.14.10 {#2.14.10}
* Allow to assign "Delete Own Changes" permission to "Change Owners".
It was only possible for a user to delete their own change if they were
a member of a group that was assigned the "Delete Own Changes" permission.
This was counter-intiuitive as it was necessary to either create a specific
group, or assign the permission to "Registered Users".
It is now possible to assign this permission to the "Change Owners"
virtual group.
* [Issue 9354](https://bugs.chromium.org/p/gerrit/issues/detail?id=9354):
Add "Delete Changes" permission.
It was only possible for a user to delete another user's change if they
were a member of a group that was assigned the "Administrate Server"
permission.
A new "Delete Changes" permission is added. This permission can be
assigned to a group, or to the "Project Owners" virtual group.
* [Issue 9345](https://bugs.chromium.org/p/gerrit/issues/detail?id=9345):
Fix creation of plugin log file when `log4j.configuration` is set
When the environment variable `log4j.configuration` is set, log files
defined by plugins were not created because the appender couldn't be
found.
* Fix repeated `Change-Id` in error message when `Change-Id` line is not
in the footer.
* Add `ChangeReportFormatter` extension point for customizing the report output
from `git push`.
* [Issue 9373]:(https://bugs.chromium.org/p/gerrit/issues/detail?id=9373):
Align Elasticsearch connection configuration with Elasticsearch REST client.
In 2.14.9 the JEST client was replaced with the native Elasticsearch REST
client, but several settings that were only used by JEST were not removed.
The following settings are now removed:
* `elasticsearch.requestCompression`
* `elasticsearch.connectionTimeout`
* `elasticsearch.maxConnectionIdleTime`
* `elasticsearch.maxReadTimeout`
* `elasticsearch.maxTotalConnection`
A new setting `elasticsearch.maxRetryTimeout` is added. If not configured,
it defaults to 30000 ms which is the default used by the REST client.
* [Issue 9372](https://bugs.chromium.org/p/gerrit/issues/detail?id=9372):
Simplify the configuration of Elasticsearch servers.
Instead of specifying each server in a separate `[elasticsearch "name"]`
section, with separate values `protocol`, `hostname`, and `port`, the
servers are now configured as a list of `server` values in the
`[elasticsearch]` section.
This also fixes [Issue 9383](https://bugs.chromium.org/p/gerrit/issues/detail?id=9383)
where a "default" server `http://localhost:9200` would be added by
the site initialization even if other servers were already explicitly
configured.
During startup the list of configured Elasticsearch servers is logged
at info level.
* [Issue 9146](https://bugs.chromium.org/p/gerrit/issues/detail?id=9146) and
[Issue 9147](https://bugs.chromium.org/p/gerrit/issues/detail?id=9147):
Fix Elasticsearch queries for results with substrings in keywords.
Doing a query that involved the characters "." and "_" from full text fields
did not include results with keywords as a substring. This behavior was
different from Lucene, where these two characters are mapped to the space
character (" ") so that the query returns keywords separated by them.
* Allow to omit the `elasticsearch.username` setting.
If `elasticsearch.password` is specified, the `username` can be omitted and
it will default to `elastic` which is the default username configured
when running Elasticsearch with security enabled.
* Upgrade Elasticsearch REST client to 6.3.1.
* Upgrade commons-io to 2.2.
This version is needed by the gitblit plugin.
### 2.14.9 {#2.14.9}
* [Issue 6094](https://bugs.chromium.org/p/gerrit/issues/detail?id=6094)
and [Issue 9112](https://bugs.chromium.org/p/gerrit/issues/detail?id=9112):
Add support for Elasticsearch versions 5 and 6.
Support is added for Elasticsearch versions 5.6 (tested with versions 5.6.9
and 5.6.10), 6.2 (tested with version 6.2.4) and 6.3.0.
Version 2.4 is still supported (tested with version 2.4.6).
Instead of using the 'Jest' client to communicate with Elasticsearch, the
Elasticsearch low level API is now used.
Support for Elasticsearch is still considered experimental, and is not
recommended for production use.
* Allow to replace the default H2 persistent cache with a custom implementation.
The default H2 persistent cache can be replaced by a module that implements
the `CacheImpl` interface.
An implementation is provided for postgresql.
* [Issue 9245](https://bugs.chromium.org/p/gerrit/issues/detail?id=9245):
Return the correct information in JSON response after moving a change.
When moving a change by the REST API, the JSON response contained the
branch name of the original destination rather than the new destination.
* [Issue 8916](https://bugs.chromium.org/p/gerrit/issues/detail?id=8916):
Improve performance of `ownerin:` predicate for internal groups.
* Fix omission of 'branch' values when saving project config.
The 'branch' values were omitted when saving the config, resulting in them
being lost.
* [Issue 9195](https://bugs.chromium.org/p/gerrit/issues/detail?id=9195):
Strip comment lines out of commit message when creating change.
When a change was created from the UI (or via the 'Create Change' REST
API), and the commit message consisted of only a subject beginning with
a hash character (`#`), the change was created with a zero Change-Id.
This was beause lines beginning with `#` are considered to be comments,
and are stripped from the commit message by JGit before computing the
Change-Id for the commit.
Before attempting to create the change, Gerrit now strips out any comment
lines from the commit message and returns an error if this results in
the commit message being empty.
* Fix internal server error when generating email sender name for
non-existing account.
* Sanitize values of `user.name` and `user.email` from `gerrit.config`.
The `user.name` and `user.email` settings were being read as-is, which
would allow them to be configured with values that may interfere with
standard email name/address parsing.
* Fix the default text in the 'Password' field on the 'HTTP Password' screen.
The default text said "(click 'generate' to revoke an old password)" but the
label of the button is actually "Generate Password".
* Add reporting of work queue related metrics.
Metrics are reported for core work queues. For work queues created by plugins,
metrics are not reported.
* Fix double creation of SSH command execution queues.
* Don't trim leading whitespace from about.md content.
Leading spaces were trimmed, resulting in preformatted code blocks not
being rendered properly.
* Only abort online reindex if more than 50% of projects failed.
Reindexing would be aborted if a single project failed, for example if
the repository could not be opened.
* Fix user permission checks in APIs when invoked via the GerritApi.
Actions were incorrectly being denied because the user validation
was comparing user object instances rather than the account ID that
they represented.
* Various logging improvements.
* Various documentation improvements.
* Hooks plugin
* [Issue 9015](https://bugs.chromium.org/p/gerrit/issues/detail?id=9015):
Add a `submit` hook
The `submit` hook is invoked synchronously when a change is submitted. If
it returns a non-zero exit status, a `MergeValidationException` is thrown
and the submit is prevented.
This adds back the ability to block submit by a hook which was removed in
version 2.14 due to the reworking of the `ref-update` hook behavior.
* Fix repeated instantiation of the `ref-update` and `commit-received` hooks.
The hooks were not singletons, which caused new instances to be created
on every invocation.
* Wrap account ID in quotes when passing as hook argument.
* Improve logging to make it easier to track down hook execution problems.
When a hook exits with an error status (i.e. non-zero), or times out, an error
is now emitted to the log. Previously there was no log on timeout, and the exit
status was only logged at debug level.
The configured hooks path and resolved path for hook files is logged at info
level.
When a hook file does not exist, a message is logged at debug level.
* Improve documentation
* Expand and improve documentation related to debugging hooks.
* Restructure the hooks page to separate synchronous and asynchronous hooks, and
add a table of contents.
### 2.14.8 {#2.14.8}
* Elasticsearch is now available for early adopters as a secondary index.
* The implementation is limited to version 2.4.x of Elasticsearch.
* See the list of [fixed issues](#elasticsearch) below for more details.
* Expose plugin guice injectors in plugin test classes that derived from
`LightweightPluginDaemonTest` base class.
* [Issue 5181](https://bugs.chromium.org/p/gerrit/issues/detail?id=5181):
Limit assignee suggestion to users that can see the change.
* [Issue 8468](https://bugs.chromium.org/p/gerrit/issues/detail?id=8468):
Allow plugin configuration to be inherited by merging with parent config.
When using the `ProjectLevelConfig.getWithInheritance` method, any config
values from the parent are overridden by those of the child. This is not
useful for plugins like the reviewers plugin where the child configuration
should be merged with the parent's.
To solve this, a new variant of the `getWithInheritance` method is added,
which merges the configs rather than overriding.
* [Issue 8557](https://bugs.chromium.org/p/gerrit/issues/detail?id=8557):
Fix gitweb documentation to clarify that `gitweb.type` must be set to `gitweb`.
* [Issue 8558](https://bugs.chromium.org/p/gerrit/issues/detail?id=8558):
Fix internal server error when detecting change kind of root commit.
* [Issue 8715](https://bugs.chromium.org/p/gerrit/issues/detail?id=8715):
Fix internal server error when invalid index name is given to the `index start`
or `index activate` command.
* [Issue 8731](https://bugs.chromium.org/p/gerrit/issues/detail?id=8731):
Improve the wording in the revert notification email template.
* [Issue 8589](https://bugs.chromium.org/p/gerrit/issues/detail?id=8589):
Remove approval requirement search from basic search documentation.
Using approval requirements in basic search, for example `Code-Review=2`
without the explicit `label:` predicate can never work as expected because
the query is also considered as a comment search, which matches on all
changes that have received a vote on that label, regardless of the label
score.
The section about approval requirements is removed from the basic search
documentation to avoid confusion. It is also now recommended to use explicit
query predicates when predictable results are desired.
* [Issue 8597](https://bugs.chromium.org/p/gerrit/issues/detail?id=8597):
Clarify the behavior of `ownerin:` and `reviwerin:` queries.
When the ownerin: or reviewerin: predicate is used in a query without any
additional explicit index predicate, it will default to only include changes
in status 'OPEN'.
* Fix internal server error when using the `query:` search with a non-existing
named query.
* Fix internal server error when group UUID cannot be resolved when getting audit log.
* Display group UUID in group audit log if group name is missing.
The group name can be missing if there is no group backend that handles the
group. This can happen for example if a plugin that handled the group was
removed.
* Allow graceful rolling restarts.
Add a new setting, `httpd.gracefulStopTimeout`, which allows to set a
maximum period of time for the daemon to preserve incoming connections,
before starting the graceful shutdown process.
* Elasticsearch {#elasticsearch}
* [Issue 8523](https://bugs.chromium.org/p/gerrit/issues/detail?id=8523):
Fix configuration of elasticsearch during site initialization.
When the site was initialized with Elasticsearch as the secondary index,
the `elasticsearch.prefix` was not set, and Elasticsearch server-specific
settings were not correctly set under `elasticsearch.name.protocol`, etc.
* [Issue 8527](https://bugs.chromium.org/p/gerrit/issues/detail?id=8527):
Improve documentation of `index.maxLimit` for Elasticsearch.
When using Elasticsearch, `index.maxLimit` should not exceed the value
of `index.max_result_window` configured on the Elasticsearch server.
* [Issue 8553](https://bugs.chromium.org/p/gerrit/issues/detail?id=8553):
Fix reindexing of an already initialized site with Elasticsearch.
* [Issue 8690](https://bugs.chromium.org/p/gerrit/issues/detail?id=8690):
Allow to use the `index start` and `index activate` ssh commands with Elasticsearch.
* [Issue 8525](https://bugs.chromium.org/p/gerrit/issues/detail?id=8525):
Fix setting of changed lines in the change info.
* [Issue 8588](https://bugs.chromium.org/p/gerrit/issues/detail?id=8588):
Fix setting the star icon status in the change info.
* Change default Elasticsearch prefix to `gerrit_`.
### 2.14.7 {#2.14.7}
* [Issue 7652](https://bugs.chromium.org/p/gerrit/issues/detail?id=7652):
Avoid intermediate migration state for external IDs.
In the 2.14 series the accounts are not completely migrated to the git
backend and are written to both the git backend and database backend. This
results in risk of the backends getting out of sync.
* Fix `account_patch_reviews` for mysql.
Creation of the `account_patch_reviews` table failed on mysql due to the
`file_name` column being too long.
* [Issue 8053](https://bugs.chromium.org/p/gerrit/issues/detail?id=8053):
Don't fire `ref-updated` event twice for new patch sets.
* [Issue 8478](https://bugs.chromium.org/p/gerrit/issues/detail?id=8478):
Fix "concurrent modification" exception when posting reviews.
* [Issue 8279](https://bugs.chromium.org/p/gerrit/issues/detail?id=8279):
Always check for `Change-Id` in subject line during commit validation:
A commit with an empty commit message except for a `Change-Id` line in
the subject was only rejected if "Require Change-Id" was enabled.
* [Issue 8280](https://bugs.chromium.org/p/gerrit/issues/detail?id=8280):
Fix validation of `Change-Id` line when creating changes from the UI:
When a change was created via the UI (or via the REST API), the `Change-Id`
footer line was not validated. This resulted in it being possible to
create a change with an invalid `Change-Id`.
* [Issue 8284](https://bugs.chromium.org/p/gerrit/issues/detail?id=8284):
Fix unnecessary addition of `Change-Id` to changes created from the UI:
When a change was created via the UI (or via the REST API), a `Change-Id`
line was added without first checking if one already existed.
* [Issue 8299](https://bugs.chromium.org/p/gerrit/issues/detail?id=8299):
Fix insertion of `Signed-off-by` line after existing footer lines in changes
created from the UI.
When a change was created via the UI (or via the REST API) and the
commit message included a `Change-Id` line or any other footer line,
the `Signed-off-by` footer was appended to the end of the last footer
instead of on a new line.
* [Issue 8390](https://bugs.chromium.org/p/gerrit/issues/detail?id=8390):
Fix adding a group as reviewer when group name partially matches a username.
* Prevent possible internal server error when creating new email.
* Fix validation of email address when creating new email from a plugin.
When a plugin created a new email, the address was not validated.
* Trim leading and trailing whitespace from email address when adding
a new email address to an account.
* Adjust `commit-msg` hook to awk behavior change on Cygwin/MSYS.
Awk has stopped automatically stripping `\r` on Windows since
version 4.2.0.
* Improve hooks plugin documentation
Add documentation of how to enable debug logging, and how to reload
hooks configuration.
* Print progress information from the `MigrateAccountPatchReviewDb`
program.
* Honor `index.maxTerms` when using group predicate in queries.
* [Issue 7827](https://bugs.chromium.org/p/gerrit/issues/detail?id=7827):
Fix submit on push for same commit on multiple branches.
* [Issue 8301](https://bugs.chromium.org/p/gerrit/issues/detail?id=8301):
Fix reindexing of stale changes when a change or project is deleted.
* [Issue 8319](https://bugs.chromium.org/p/gerrit/issues/detail?id=8319):
Honor the `--threads` option in the offline `reindex` program.
* [Issue 8381](https://bugs.chromium.org/p/gerrit/issues/detail?id=8381):
Fix mergeability check during index for changes not visible to owner.
If a change becomes no longer visible to its owner, e.g. because the
user was removed from a group having exclusive visibility of the change's
project, reindexing the change would cause the `mergeable` field to
always be set to null in the index. As a result, the change was always
shown with "Merge Conflict" status in the change list.
* [Issue 4889](https://bugs.chromium.org/p/gerrit/issues/detail?id=4889):
Fix formatting of commit message when updating multiple submodule subscriptions.
* Prevent concurrent login by disabling form submission.
If a user double-clicks when logging in for the first time, it
resulted in two accounts being created for the same user.
* Fix internal server error in reviewer suggestion.
* Fix registration redirect for new OpenID users.
The redirect link included an extra `#` token, which resulted in the
link redirecting to a 404 response.
* Fix line breaks in error dialogs.
* Fix display of timestamp in `show-connections` command output.
When the SSH backend is MINA, the `show-connections` command shows the
connection start time. For connections started more than 1 day ago, the
start time is supposed to be shown in the format `MMM-dd` but was instead
always shown in the format `HH:mm:ss` due to incorrect calculation of the
elapsed time.
* Trim SSH commands' multi-line arguments for task name and SSH log.
Multi-line arguments in SSH commands are trimmed to make the the task name
and SSH log entries more readable.
* Allow plugins to intercept creation of SSH commands.
By implementing the [SshCreateCommandInterceptor](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14.7/dev-plugins.hmtl#ssh-command-interception)
interface, a plugin can intercept the creation of SSH commands and override them
with a custom implementation.
* Replication plugin:
* Fix creation of missing repository.
When replicating to a destination where the repository does not exist,
updating the `HEAD` reference failed because the passed reference name was
not absolute.
* Add documentation of how to exclude repositories from replication.
* Fix logging of new project creation and project deletion.
The "created" and "deleted" logs were emitted even when the operation
failed.
* Polygerrit UI:
* [Issue 6109](https://bugs.chromium.org/p/gerrit/issues/detail?id=6109):
Don't open "Your" menu items in a new tab.
* [Issue 8373](https://bugs.chromium.org/p/gerrit/issues/detail?id=8373):
Fix "Your" menu items when deployed with non-default base URL.
* Upgrade metrics-core to 4.0.2
* Upgrade jsinterop-annotations to 1.0.2
This is a transitive dependency of GWT and was missed in the previous
upgrade of GWT to 2.8.2
### 2.14.6 {#2.14.6}
* [Issue 7562](https://bugs.chromium.org/p/gerrit/issues/detail?id=7562):
Stop passing `--insecure` to `curl` in download-commands plugin.
Validating certs is an important feature of HTTPS that we should not
disable, especially when downloading code that is going to be trusted.
* Disable `ban-commit` ssh command on slaves.
Gerrit slaves are supposed to be read-only, but the `ban-commit` command
creates a Git note and hence writes to the repository.
* Fix error message when attempting to delete a branch without permission.
Branches can be deleted by a user having the "Push" permission with the
force flag set, or the "Delete Reference" permission. However, the error
message did not mention "Delete Reference", leading to users unnecessarily
requesting administrators to grant the force push permission.
* Fix status transition when directly pushing an abandoned change.
If a change was abandoned, but then directly pushed to the branch, its
status was not changed from "Abandoned" to "Merged".
* Keep old timestamps during data migration.
In some cases the "created on" field was updated to the time of the migration
when replacing the "Submitted" state with "New".
* Don't compress live log file `error_log.json`.
* Don't create GC log file when GC is not configured.
* Specify new tip of the branch when updating submodules.
In Gerrit 2.12, whenever a submodule was updated the corresponding commit
in the superproject included the SHA-1 of the new tip of the branch.
Restore this behavior to avoid breaking clients that extract this
information from the superproject commit message.
* Don't use account index to look up external IDs when authenticating with
OAuth or OpenID.
The account index is not available on slaves, causing authentication
with OAuth and OpenID to fail.
* [Issue 7647](https://bugs.chromium.org/p/gerrit/issues/detail?id=7647):
Gracefully handle malformed GPG keys input.
Posting a malformed GPG resulted in an internal server error.
* [Issue 7611](https://bugs.chromium.org/p/gerrit/issues/detail?id=7611):
Stop the project cache clock and await termination of index executor threads
on server shutdown.
* [Issue 5386](https://bugs.chromium.org/p/gerrit/issues/detail?id=5386):
Fix database connection leak in `suexec` command.
* Evict idle database connections.
Database idle connections in the pool were not evicted which could
lead to connections to the database being exhausted.
Idle connections are now evicted after 60 seconds.
* Enable CORS for plugin static files and documentation.
* Always include `createdOn` in change attribute in events.
This allows for aggregating review-time if defined as the timespan
between when a change is created and when it is merged.
* Allow to select and copy text in inline comment boxes.
* [Issue 7739](https://bugs.chromium.org/p/gerrit/issues/detail?id=7739):
Only enable the "Require Signed Push" project option for project owners.
* Upgrade Polymer to version 1.11.0.
This version includes a fix for deprecation of HTMLImports in Chrome.
* Upgrade GWT to version 2.8.2.
This version includes various fixes since 2.8.0.
* Upgrade Guava to version 22.0.
### 2.14.5.1 {#2.14.5.1}
* Fix regression introduced in 2.14.5
A regression was introduced when fixing the `set-reviewers` command to work
with change sha1s. The check for sha1 was done before the check for legacy
change number, so if a server had large enough change numbers they would be
erroneously interpreted as sha1 resulting in a "change not found" error.
### 2.14.5 {#2.14.5}
**WARNING: the 2.14.5 release includes a regression. Use 2.14.5.1 instead.**
* [Issue 7273](https://bugs.chromium.org/p/gerrit/issues/detail?id=7273):
On account creation evict account from account cache.
When an account was created by ssh or REST API, its username and full name
were not available until the account cache was flushed (e.g. by restarting
the server).
* [Issue 6885](https://bugs.chromium.org/p/gerrit/issues/detail?id=6885):
Fix over-eager caching of pages.
* [Issue 7098](https://bugs.chromium.org/p/gerrit/issues/detail?id=7098):
Fix diff base gitweb link.
* [Issue 5897](https://bugs.chromium.org/p/gerrit/issues/detail?id=5897):
Fix false-positive warning on gitweb requests.
* [Issue 6657](https://bugs.chromium.org/p/gerrit/issues/detail?id=6657):
Prevent invalid query operator from invalidating user's web session.
If the user entered an invalid query like `has:starss`, the user's web
session was invalidated.
* [Issue 7425](https://bugs.chromium.org/p/gerrit/issues/detail?id=7425):
Add `sshd.waitTimeout` configuration to set `WAIT_FOR_SPACE_TIMEOUT`.
In sshd a new channel property,
[channel-output-wait-for-space-timeout](https://issues.apache.org/jira/browse/SSHD-565),
was introduced with a default value of 30 seconds.
This was not being set, causing any clone operations lasting longer
than 30 seconds to fail.
Administrators may now increase this value by setting
[`sshd.waitTimeout`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14.5.1/config-gerrit.html#sshd.waitTimeout).
* Increase the value of `GERRIT_FDS` when an LFS plugin is configured.
`GERRIT_FDS` was set to double of `core.packedGitOpenFiles`, which was
not sufficient to account for the file descriptors used by Git LFS.
* [Issue 7357](https://bugs.chromium.org/p/gerrit/issues/detail?id=7357):
Fix bad rounding of relative dates like '1 year, 12 months ago'.
The date should be rounded to '2 years ago'.
* Fix parsing of permissions when expanding parameters.
* Skip adding `_moreChanges` when change query result is empty.
* Fix suppression of log file compression when exception occurs.
If any exception occurred, subsequent log compression was not done.
* Fix scheduling of log file compression.
The initial delay for log file compression scheduling was not being
calculated correctly, leading to the task's initial run being much
later than expected.
* Fix internal server error when reading changes.
When a change was not found, NullPointerException was thrown and this
caused the delete-project plugin to fail. Now, ChangeNotFoundException
is thrown.
* Fix parsing of email replies with "gmail_default" as class name.
The email parser was rejecting all blocks with a class starting with 'gmail'.
* Don't show weblinks for 'magic' files.
The magic files `/COMMIT_MSG` and `/MERGE_LIST` don't actually exist in the
git repository, so any links to them result in 404 on the viewer.
* Add missing registration of `vote-deleted` event.
The missing registration was causing listeners to fail with 'Unknown event type'.
* Allow to add reviewers to changes by commit sha1 using the `set-reviewers`
ssh command.
* Hooks plugin: Protect against null object IDs in ref updates.
* Polygerrit UI
* Fix avatars when using a URL prefix
* Fix redirection of URLs with context to GWT UI
### 2.14.4 {#2.14.4}
* Fix performance issue when clearing reviewed flag for a patch set.
Change the order of fields in the primary key of the
JdbcAccountPatchReviewStore table, to allow usage of implicit indices when
querying rows, improving performance when clearing the reviewed flag for a
patch set.
Sites that have already upgraded from an earlier version to either 2.13
or 2.14 need to manually recreate the primary key as described in the
warning [above](#patch-review-primary-key).
* [Issue 7086](https://bugs.chromium.org/p/gerrit/issues/detail?id=7086):
Disallow invalid combination of `auth.type` and `auth.gitBasicAuthPolicy`.
Update the documentation of [`auth.type`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14.4/config-gerrit.html#auth.type)
to clarify that the `HTTP_LDAP` and `CLIENT_SSL_CERT_LDAP` types only use
LDAP to gather basic information about the user, and not to actually perform
the authentication.
Also, add checks to make sure the combination of `auth.type` and
`auth.gitBasicAuthPolicy` is valid. If an invalid combination is used,
this could result in unintentionally disabling authentication, so raise
an error during startup.
* [Issue 7188](https://bugs.chromium.org/p/gerrit/issues/detail?id=7188):
Fix 'Cannot upgrade schema' during upgrade on Oracle database backend.
* Fix internal server error when invoking the `stream-events` ssh command
with the `--help` option.
* Add support for creating annotated tags from the tags list in the GWT UI.
Although the REST API allows to create annotated tags, the UI only supported
creating lightweight tags.
* Consistently use lower case when reading enumerations during initialization.
The list of supported options was converted to lower case, but the input
prompt did not do the same for the default value.
### 2.14.3 {#2.14.3}
* [Issue 6853](https://bugs.chromium.org/p/gerrit/issues/detail?id=6853):
Only attempt to parse `polygerrit` URL parameter on `GET` requests.
Attempting to parse the `polygerrit` parameter on all requests caused
failures when sending a `POST` or `PUT` request to the REST API via `curl`.
* [Issue 6922](https://bugs.chromium.org/p/gerrit/issues/detail?id=6922):
Fix comparison against edit revision.
* [Issue 6745](https://bugs.chromium.org/p/gerrit/issues/detail?id=6745):
Emit an event to the event stream when a vote is removed from a change.
When a reviewer was removed from a change, an event was emited to the
event stream, but when only a vote was removed (leaving the reviewer
on the change), no event was emitted
* Add user who removed reviewer into event that is emitted when a
reviewer is removed from a change.
* Improve error message when failing to create the first user.
* Allow to run the server without specifying `gerrit.canonicalWebUrl`.
The only situation where the setting is mandatory is when using OAuth
authentication, because the OAuth provider needs to have a fixed callback
URL with a single hostname.
* Align group reference from plugin with core group reference.
* Fix `PluginConfig.setGroupReference` method.
When the group reference was a new one, i.e. not already in the groups
file, it was not added to the groups file when saving the project
config.
* Fix support for plugin group reference with inheritance.
Group reference was not working when inherited from parent project
config.
* Use `-S` instead of `-s` as alias for `--start` in list branches and tags
REST API endpoints.
Using an upper case `-S` makes the API consistent with the other list APIs
(changes, groups, projects). This is a breaking change for any clients
that use `-s`.
* Allow to configure pool connection settings for patch review store.
Previously the pool connection settings were hard-coded. In high
traffic servers this can cause a bottleneck as the transactions start
to be queued when the maximum number of connetions is reached.
In the [accountPatchReviewDb section](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14.3/config-gerrit.html#accountPatchReviewDb)
of the `gerrit.config` file it is now possible to configure the
`url`, `poolLimit`, `poolMinIdle`, `poolMaxIdle`, and `poolMaxWait`
values.
* Polygerrit UI
* [Issue 6827](https://bugs.chromium.org/p/gerrit/issues/detail?id=6827):
Fix loading change screen with a slash following the patch set number.
* [Issue 6921](https://bugs.chromium.org/p/gerrit/issues/detail?id=6921):
Request all commits in the change detail.
* [Issue 5677](https://bugs.chromium.org/p/gerrit/issues/detail?id=5677):
Don't crash on empty diff selection.
* Add `:` to autocompleted predicates in search bar.
### 2.14.2 {#2.14.2}
* [Issue 6472](https://bugs.chromium.org/p/gerrit/issues/detail?id=6472):
Fix online reindexing for plugin-dependent rules.
* [Issue 6473](https://bugs.chromium.org/p/gerrit/issues/detail?id=6473):
Fix display of columns in projects tables.
* [Issue 6099](https://bugs.chromium.org/p/gerrit/issues/detail?id=6099):
Set reflog message and identity when merging changes.
* [Issue 6591](https://bugs.chromium.org/p/gerrit/issues/detail?id=6591):
Fix deletion of branches when the `refs/heads/` prefix is omitted.
* [Issue 6605](https://bugs.chromium.org/p/gerrit/issues/detail?id=6605):
Fix searching for change by Change-Id triplet when project name matches Change-Id pattern.
For projects whose name matched the Change-Id pattern, i.e. named something
like `iabcde`, it was not possible to search for changes using the Change-Id
triplet `project~branch~changeId`.
* [Issue 3345](https://bugs.chromium.org/p/gerrit/issues/detail?id=3345):
Preserve line endings in inline editor.
* [Issue 6508](https://bugs.chromium.org/p/gerrit/issues/detail?id=6508):
Hooks plugin: Fix hook configuration names to match documentation
Most hooks in the documentation are named with "Hook" suffix, but
in the code the "Hook" suffix was omitted. This prevented the hook
from being found when the administrator configured it with the
documented name.
* [Issue 6609](https://bugs.chromium.org/p/gerrit/issues/detail?id=6609):
Add "indent with tabs" configuration option in inline editor.
* [Issue 6544](https://bugs.chromium.org/p/gerrit/issues/detail?id=6544):
Allow project owners to update project configuration.
* [Issue 6527](https://bugs.chromium.org/p/gerrit/issues/detail?id=6527):
Use quoted-printable for SMTP transfer encoding.
* [Issue 6205](https://bugs.chromium.org/p/gerrit/issues/detail?id=6205):
Fix internal server error on `/register` with URL prefix.
* Fix line wrapping in inline editor.
The line wrapping preference was respected for the diff screens, but not
for the inline editor.
* Don't index missing accounts.
* Disable auto-reindexing if stale during offline Reindex.
* Fix title of revision field for creating new tag in the UI.
* Suggest `self` before other users in search operator suggestions.
For query operators that expect a user, the suggestion included other
users whose name begins with "sel" before "self". Since "self" is
more frequently used, it should be suggested first.
* Load external IDs from primary storage (ReviewDb).
On sign in we can't access the account index to lookup external IDs
since Gerrit slaves don't have an account index, but Gerrit slaves must
be able to sign in. Instead load the external ID from the primary
storage which is ReviewDb in 2.14.
* Extend `shortSubject` field to 72 characters in soy email template.
* Align lib modules load injector on Jetty and external containers.
Align the startup of Gerrit with a standalone Jetty container to the
WebAppInitializer and load the user-provided Guice modules in the
sysInjector instead of the DbInjector.
This Allows overriding some of the default bindings of Gerrit
(e.g. repository manager or permissions backend) with custom-made
alternate implementations.
* Fix cyclic dependency when using `site_path` from `system_config` table.
The starting mode where `site_path` is not specified (as a system property)
and Gerrit first connects to the database using the ReviewDb JNDI property
from the servlet container was broken since version 2.13 due to a cyclic
dependency in Guice bindings.
* Add missing `throws` declarations on `NotImplemented` classes in the
extension API.
The `throws` were removed as a cleanup in Gerrit 2.14, but this prevenented
classes that extend `NotImplemented` from throwing the exceptions.
* Add support for tag web links.
* Reindex accounts after updating external Ids in `LocalUsernamesToLowerCase`
program.
* Disallow using both `m` and `r` options together in branch and tag
list filters.
* Recognize all parts marked with `multipart/` in inbound emails.
Inbound emails would not be parsed when the message was signed and
therefore wrapped in a `multipart/signed` part.
* Replication plugin: Fix race condition when scheduling a replication
* Replication plugin: Use rescheduleDelay instead of replicationDelay when
rescheduling.
* PolyGerrit UI
* Add syntax highlighting for kotlin, php, shell, erlang, and puppet.
* [Issue 6557](https://bugs.chromium.org/p/gerrit/issues/detail?id=6557):
Enable multiline range comments in Firefox.
* [Issue 6062](https://bugs.chromium.org/p/gerrit/issues/detail?id=6062):
Fix register links to use base URL.
* [Issue 6693](https://bugs.chromium.org/p/gerrit/issues/detail?id=6693):
Fix back button behavior for hash redirects.
### 2.14.1 {#2.14.1}
* Add support for Git LFS locking.
Plugins implementing LFS may now include support for
[locking](https://github.com/git-lfs/git-lfs/blob/master/docs/api/locking.md).
* Upgrade JGit to 4.7.1.201706071930-r.
This includes a fix to make auto GC run in the background.
In some cases, the auto GC limit is lower than the true number of
unreachable loose objects, so auto GC will run after every (e.g) fetch
operation. This leads to the appearance of poor fetch performance.
Since these GCs will never make progress (until either the objects
become referenced, or the two week timeout expires), blocking on them
simply reduces throughput.
* Allow multiple Servlet filters on Jetty HTTPD.
It is now possible to specify multiple values for
[`httpd.filterClass`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14.1/config-gerrit.html#httpd.filterClass).
* Allow to set Jetty HTTPD socket timeout.
A new setting [`httpd.idleTimeout`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14.1/config-gerrit.html#httpd.idleTimeout)
makes the Jetty HTTPD socket timeout configurable so to tailor the socket
and thread consumption to the needs of setups with different latencies and
bandwidth.
* Add a `group indexed` extension point.
Similar to the existing `change indexed` and `account indexed `extension points,
this allows plugins to be notified when a group has been indexed.
* Extend upload validation interface to allow listening to negotiation start.
This can be used to check rate limits for fetch requests. Rate limits
should be checked before git transport negotation starts to avoid
unnecessary work in case the limit is already reached.
* Fix support for ECDSA and ED25519 SSH keys.
ECDSA and ED25519 SSH host keys were not generated during site initialization
and were not loaded if they existed.
* Fix initialization failure when removing old Bouncy Castle library fails.
During initialization, old Bouncy Castle libraries are renamed with a `.backup`
suffix, but if the destination file already existed the initialization would
fail with a fatal error. Now a warning is printed and the initialization
continues.
* [Issue 6278](https://bugs.chromium.org/p/gerrit/issues/detail?id=6278):
Fix internal server error when cloning from slave over HTTP.
* Fix firing change related events for deleted change.
* [Issue 5393](https://bugs.chromium.org/p/gerrit/issues/detail?id=5393):
Improve the performance of reviewer suggestion.
* [Issue 6173](https://bugs.chromium.org/p/gerrit/issues/detail?id=6173):
Fix setting
[`sshd.idleTimeout`](http://gerrit-documentation.storage.googleapis.com/Documentation/2.14.1/config-gerrit.html#sshd.idleTimeout)
for nio2 backend.
The idle timeout was not properly set for the nio2 backend, so connections
would always time out with the default value (10 minutes).
* Improve error message when publishing an already published change edit.
* Fix ref visibility checks in dashboards.
* Replication plugin: Fix replication retries when `maxRetries` is set to 0.
* Fix autocomplete for Firefox on LDAP login screen.
* Add support for mariadb in AccountPatchReviewStore.
* Fix notifications for comments on draft patch sets.
* Fix internal server error when deleting current patch set and previous patch
set doesn't exist.
* [Issue 6176](https://bugs.chromium.org/p/gerrit/issues/detail?id=6176):
Fix internal server error when old patch set is not found.
* Always use SSL implicitly for POP3 and IMAP.
If `receiveemail.encryption` is set to TLS/SSL, we always want to use the
implicit mode to execute the TLS/SSL command right after establishing
the conection with the mail server. Strict mail servers like Gmail would
close the connection prematurely otherwise.
* Allow plugins to non-transitively depend on prolog rules.
* [Issue 6367](https://bugs.chromium.org/p/gerrit/issues/detail?id=6367):
Allow to set blocking label range rules in permission rule editor.
* PolyGerrit UI
* [Issue 6096](https://bugs.chromium.org/p/gerrit/issues/detail?id=6096):
Add an "up" button to the diff screen.
* [Issue 6041](https://bugs.chromium.org/p/gerrit/issues/detail?id=6041):
Display `/MERGE_LIST` and `/COMMIT_MESSAGE` as `Merge List` and
`Commit Message`.
* [Issue 6080](https://bugs.chromium.org/p/gerrit/issues/detail?id=6080):
Allow editing status when full name is not editable.
* [Issue 6166](https://bugs.chromium.org/p/gerrit/issues/detail?id=6166):
Fix loading favicon on a prefixed URL.
* Make sure 'Merge Conflict' displays on change view.
* Use a default name for accounts that do not have a display name.