= Release notes for Gerrit 2.9.2

Download:
link:https://www.gerritcodereview.com/download/gerrit-2.9.2.war[
https://www.gerritcodereview.com/download/gerrit-2.9.2.war]

== Important Notes

*WARNING:* There are no schema changes from
link:ReleaseNotes-2.9.1.html[2.9.1], but when upgrading from an existing site
that was initialized with Gerrit version 2.6 or later the primary key column
order will be updated for some tables. It is therefore important to upgrade the
site with the `init` program, rather than only copying the .war file over the
existing one.

It is recommended to run the `init` program in interactive mode. Warnings will
be suppressed in batch mode.

----
  java -jar gerrit.war init -d site_path
----

*WARNING:* When upgrading from version 2.8.4 or older with a site that uses
Bouncy Castle Crypto, new versions of the libraries will be downloaded. The old
libraries should be manually removed from site's `lib` folder to prevent the
startup failure described in
link:https://code.google.com/p/gerrit/issues/detail?id=3084[Issue 3084].

== Bug Fixes

=== ssh

* Update SSHD to 0.13.0.
+
This fixes link:https://issues.apache.org/jira/browse/SSHD-348[SSHD-348] which
was causing ssh threads allocated to stream-events clients to get stuck.
+
Also update SSHD Mina to 2.0.8 and Bouncycastle to 1.51.

=== Database

* Update gwtorm to 1.14.
+
The primary key column order for compound keys was wrong for some Gerrit
database tables. This caused poor performance for those SQL queries which rely
on using a prefix of the primary key column sequence in their WHERE conditions.
+
This version of gwtorm fixes the issue for new sites. For existing sites that
were initialized with Gerrit version 2.6 or later, the primary key column
order will be fixed during initialization when upgrading to 2.9.2.

=== Secondary Index

* Fix "400 cannot create query for index" error in "Conflicts With" list.
+
The new
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.9.2/config-gerrit.html#index.defaultMaxClauseCount[
index.defaultMaxClauseCount] setting allows to increase the BooleanQuery limit
for the Lucene index.
+
Raising the limit avoids failing a query with `BooleanQuery.TooManyClauses`,
preventing users from seeing a "400 cannot create query for index" error
in the "Conflicts With" section of the change screen.

* link:https://code.google.com/p/gerrit/issues/detail?id=2996[Issue 2996]:
Delete a change from the index if it is not in the database.
+
If for some reason the secondary index is out of date, i.e. a change was deleted
from the database but wasn't deleted from the secondary index, it was impossible
to re-index (remove) that change.
+
Automatically remove the change from the secondary index if it doesn't exist in
the database. If a user clicks on search result from a stale change, they will
get a 404 page and the change will be removed from the index.

=== Change Screen

* link:https://code.google.com/p/gerrit/issues/detail?id=2964[Issue 2964]:
Fix comment box font colors of dark CodeMirror themes.
+
When using a dark-colored theme, for example "Twilight", the comments were
shown in a light color on a light background making them unreadable.

* link:https://code.google.com/p/gerrit/issues/detail?id=2918[Issue 2918]:
Fix placement of margin column in side-by-side diff.
+
The margin was placed approximately 10% too far to the right.

* link:https://code.google.com/p/gerrit/issues/detail?id=2970[Issue 2970]:
Fix display of accented characters in side-by-side diff.
+
On some browsers, accented characters were not displayed correctly
because the line was not high enough.

* link:https://code.google.com/p/gerrit/issues/detail?id=2960[Issue 2960]:
Show filename in side-by-side diff screen.
+
In the old side-by-side diff screen, the name of the file being diffed was shown
in the window title. This feature was missed in the new side-by-side diff screen.

* Remove 'send email' checkbox from reply box on change screen.

=== Plugins

* link:https://code.google.com/p/gerrit/issues/detail?id=543[Issue 543]
Replication plugin: Prevent creating repos on extra servers.
+
If using a group to replicate only certain repositories, it was possible
to be in a state where the authGroup is used on some servers but not
others.  If this happened, Gerrit would create the repository on all
servers, even if the authGroup would prevent replicating code to it.
By ensuring the authGroup can see the project first, the repository is
not created if it's not needed.

=== Security

* Do not throw away bytes from the CNSPRG when generating HTTP passwords.
+
The implementation generated LEN bytes of cryptography-safe random data and
applied base64 encoding on top of that. The base64 transformation, however,
inflated the size of the data by 33%, and this meant that only 9 bytes of
randomness were actually used.

* Increase the size of HTTP passwords.
+
The length of generated HTTP passwords is increased from 12 to 42 characters.

* Consider rule action while constructing local owners list
+
Previously rule action was not considered during computation of the local
owners list. This meant that members of a group that was given OWNER permission
with BLOCK or DENY action were considered as project owners.


=== Miscellaneous Fixes

* link:https://code.google.com/p/gerrit/issues/detail?id=2911[Issue 2911]:
Fix Null Pointer Exception after a MergeValidationListener throws
MergeValidationException.

* link:https://code.google.com/p/gerrit/issues/detail?id=2989[Issue 2989]:
Fix incorrect submodule subscriptions.
+
The gitlinks update failed after deleting a branch in a super project which had
other branches subscribed to the same submodule branch.

* Fix infinite loop when checking group membership.

* Fix quoted-printable encoding of e-mail addresses.
+
The "(Code Review)" part of the e-mail sender name was truncated when the
author's name was not pure ASCII.
