Release notes for Gerrit 2.11.1
===============================

Gerrit 2.11.1 is now available:

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

Gerrit 2.11.1 includes the bug fixes done with
link:ReleaseNotes-2.10.4.html[Gerrit 2.10.4] and
link:ReleaseNotes-2.10.5.html[Gerrit 2.10.5]. These bug fixes are *not* listed
in these release notes.

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


New Features
------------

* link:http://code.google.com/p/gerrit/issues/detail?id=321[Issue 321]:
Use in-memory Lucene index for a better reviewer suggestion.
+
Instead of a linear full text search through a list of accounts, use an
in-memory Lucene index. The index is periodically refreshed. The refresh period
is configurable via the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11.1/config-gerrit.html#suggest.fullTextSearchRefresh[
suggest.fullTextSearchRefresh] parameter.


Bug Fixes
---------

Performance
~~~~~~~~~~~

* link:http://code.google.com/p/gerrit/issues/detail?id=3363[Issue 3363]:
Fix performance degrade in background mergeability checks.
+
When neither `index.batchThreads` nor `changeMerge.threadPoolSize` was defined,
the background mergeability check fell back to using an interactive executor.
+
This led to a severe performance degradation during git push operations because
the `ref-update` listener was reindexing all open changes on the target branch
interactively. The degradation increased linearly with number of open changes on
the target branch.
+
Now, instead of indexing interactively, it falls back to a batch thread pool
with the number of available logical CPUs.

* Reduce unnecessary database access when querying changes.
+
Searching for changes was retrieving more information than necessary from the
database. This has been optimized to reduce database access and make better use
of the secondary index.

* Remove unnecessary REST API call when opening the 'Patch Sets' drop down.
+
The change edit information was being loaded twice.

Index
~~~~~

* Fix `PatchLineCommentsUtil.draftByChangeAuthor`.
+
There is not a native index for this, and the ReviewDb case was not properly
filtering a result by change.

* Don't show stack trace when failing to build BloomFilter during reindex.

Permissions
~~~~~~~~~~~

* Require 'View Plugins' capability to list plugins through SSH.
+
The 'View Plugins' capability was required to list plugins through the REST API,
but not through SSH.

* Fix project creation with plugin config if user is not project owner.
+
On project creation it is possible to specify plugin configuration values that
should be stored in the `project.config` file. This failed if the calling user
was not becoming owner of the created project, because only project owners can
edit the `project.config` file.


Change Screen / Diff / Inline Edit
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* link:http://code.google.com/p/gerrit/issues/detail?id=3191[Issue 3191]:
Always show 'Not Current' as state when looking at old patch set.
+
For merged changes it was confusing for users to see the status as 'Merged' when
they look at an old patch set.

* link:http://code.google.com/p/gerrit/issues/detail?id=3337[Issue 3337]:
Reenable 'Revert' button when revert is cancelled.

* link:http://code.google.com/p/gerrit/issues/detail?id=3378[Issue 3378]:
Improve the cursor style in side-by-side diff and inline editor.
+
The cursor style is changed from an underscore to a solid vertical bar.
+
In the side-by-side diff, the cursor is placed on the first column of the diff,
rather than at the end.

Web Container
~~~~~~~~~~~~~

* Fix `gc_log` when running in a web container.
+
All logs supposed to be in the `gc_log` file were ending up in the main log
instead when deploying Gerrit in a web container.

* Fix binding of SecureStore modules.
+
The SecureStore modules were not correctly added when Gerrit was deployed in a
web container with the site path configured using the `gerrit.site_path`
property.

Plugins
~~~~~~~

* link:http://code.google.com/p/gerrit/issues/detail?id=3310[Issue 3310]:
Fix disabling plugins when Gerrit is running on Windows.
+
When running Gerrit on Windows it was not possible to disable a plugin due to an
error renaming the plugin's JAR file.

* Replication

** Fix creation of missing repositories.
+
Missing projects were not being created on the destination.

** Emit replication status events after initial full sync.
+
When `replicateOnStartup` is enabled, the plugin was not emitting the status
events after the initial sync.

Miscellaneous
~~~~~~~~~~~~~

* link:http://code.google.com/p/gerrit/issues/detail?id=3328[Issue 3328]:
Allow to push a tag that points to a non-commit object.
+
When pushing a tag that points to a non-commit object, like
link:https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/tag/?id=v2.6.11[
`v2.6.11` on linux-stable] which points to a tree, or
link:https://git.eclipse.org/c/jgit/jgit.git/tag/?id=spearce-gpg-pub[
`spearce-gpg-pub` on jgit] which points to a blob, Gerrit rejected the push with
the error message 'missing object(s)'.

* link:http://code.google.com/p/gerrit/issues/detail?id=3323[Issue 3323]:
Fix internal server error when cloning from a slave while hiding some refs.

* link:http://code.google.com/p/gerrit/issues/detail?id=3342[Issue 3342]:
Log `IOException` on failure to update project configuration.
+
Without logging these exceptions it's hard to guess why the update of the
project configuration is failing.

* Remove temporary GitWeb config on Gerrit exit.
+
A temporary directory was being created but not removed.

* link:http://code.google.com/p/gerrit/issues/detail?id=2791[Issue 2791]:
Fix email validation for new TLDs such as `.systems`.

* Assume change kind is 'rework' if `LargeObjectException` occurs.

Documentation
~~~~~~~~~~~~~

* link:http://code.google.com/p/gerrit/issues/detail?id=3325[Issue 3325]:
Add missing `--newrev` parameter to the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11.1/config-hooks.html#_change_merged[
change-merged hook documentation].

* link:http://code.google.com/p/gerrit/issues/detail?id=3346[Issue 3346]:
Fix typo in the
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11.1/config-reverseproxy.html[
Apache 2 configuration documentation].

* Fix incorrect documentatation of
link:https://gerrit-documentation.storage.googleapis.com/Documentation/2.11.1/config-gerrit.html#auth.registerUrl[
auth types].

Updates
-------

* Update CodeMirror to 5.0.

* Update commons-validator to 1.4.1.
