= Release notes for Gerrit 2.9.1

There are no schema changes from link:ReleaseNotes-2.9.html[2.9].

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

*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

* link:https://code.google.com/p/gerrit/issues/detail?id=2801[Issue 2801]:
Set default for review SSH command to `notify=ALL`.
+
In 2.9 the default was incorrectly set to `notify=NONE`, which prevented
mail notifications from being sent for review comments that were added by
build jobs based on the Gerrit Trigger plugin.

* link:https://code.google.com/p/gerrit/issues/detail?id=2879[Issue 2879]:
Remove fixed limit of results returned by secondary index query.
+
The limit was hard-coded to 1000 results, which overrode the value set in
the global query limit capability.

* Don't require secondary index when running server in daemon mode.
+
The server failed to start if a secondary index was not present when starting
the daemon in slave mode.
+
Now the daemon can be started in slave mode without requiring the index
to be present.
+
The reindex program and the ssh query command are no longer available on
a server that is running in slave mode.

* Add full names for options on list groups REST API.

* Add full names for options on list projects REST API.

* link:https://code.google.com/p/gerrit/issues/detail?id=2878[Issue 2878]:
Make `-S` an alias of `--start` in changes query REST API.

* Run change hooks and ref-updated events after indexing is done.
+
The change hooks and ref-updated events were run parallel to the change
(re)indexing. This meant that the event-stream sent events to the clients
before the change indexing was finished.

* link:https://code.google.com/p/gerrit/issues/detail?id=2877[Issue 2877]:
Fix NullPointerException when ReviewInput's message is empty.

* link:https://code.google.com/p/gerrit/issues/detail?id=2500[Issue 2500],
link:https://code.google.com/p/gerrit/issues/detail?id=1748[Issue 1748]:
Fix replication of tags.

* Fix NullPointerException in `/projects/{name}/children?recursive` when a
project has a parent project that is does not exist.

* Fix NullPointerException when submitting review with inline comments via REST.

* Improve error logging in MergeabilityChecker.

* Gracefully skip mergeability checking on broken changes.

* link:https://code.google.com/p/gerrit/issues/detail?id=2861[Issue 2861]:
Replace "line" with "end_line" when range is given in inline comment.
+
Also update the documentation with an example of a range comment.

* Fix mutual exclusivity of --delete and --submit review command options.

* link:https://code.google.com/p/gerrit/issues/detail?id=2848[Issue 2848]:
Add support for CSharp syntax highlighting.

* link:https://code.google.com/p/gerrit/issues/detail?id=2831[Issue 2831]:
Add missing call to ref-updated hook for submodule updates.

* link:https://code.google.com/p/gerrit/issues/detail?id=2773[Issue 2773]
Fix stale dates in committer field.

* Prevent NullPointerException when trying to add an account that doesn't
exist as a reviewer.

* Fix potential NullPointerException in cherry-pick submit strategy.

* Add `--start` option to skip changes in ssh `query` command.

* Fix loading of javascript plugins when using non-root Gerrit URLs.
+
When Gerrit is not on the root URL path the javascript plugins failed to
load because of the exact matching required on the request URL.

* link:https://code.google.com/p/gerrit/issues/detail?id=2279[Issue 2279]:
Display parents for all changes, not only merge commits.
+
In the new change screen the parent commit is now also shown for regular
commits, as well as merge commits. This makes it consistent with the old
change screen.

* Fix handling of permissions for user-specific refs.
+
Push permission granted on a ref using the `${username}` placeholder, for
example `refs/heads/users/${username}/*`, was not honored if this was the
only ref on which the user had push permission.
