= Release notes for Gerrit 2.12.4

Gerrit 2.12.4 is now available:

link:https://gerrit-releases.storage.googleapis.com/gerrit-2.12.4.war[
https://gerrit-releases.storage.googleapis.com/gerrit-2.12.4.war]

== Schema Upgrade

*WARNING:* There are no schema changes from link:ReleaseNotes-2.12.3.html[
2.12.3] but a manual schema upgrade is necessary when upgrading from 2.12.

When upgrading a site that is already running version 2.12, the `patch_sets`
table must be manually migrated using the `gerrit gsql` SSH command or the
`gqsl` site program.

For the default H2 database, execute the command:

----
  alter table patch_sets modify push_certficate clob;
----

For MySQL, execute the command:

----
  alter table patch_sets modify push_certficate text;
----

For PostgreSQL, execute the command:

----
  alter table patch_sets alter column push_certficate type text;
----

For other database types, execute the appropriate equivalent command.

Note that the misspelled `push_certficate` is the actual name of the
column.

When upgrading from a version earlier than 2.12, or from 2.12.1 or 2.12.2
having already done the migration, this manual step is not necessary and
should be omitted.

== Known Issues

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4323[Issue 4323]:
'value too long for type character varying(255)' in patch_sets table when
migrating to schema version 108.
+
This error may occur under some circumstances when running the schema
migration from an earlier version of Gerrit.
+
On sites where this occurs, it can be fixed with a manual schema update
according to the comments in the issue.

== Bug Fixes

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4400[Issue 4400]:
Fix `AlreadyClosedException` in Lucene index.
+
If a Lucene indexing thread was interrupted by an SSH connection being
closed, this would also close file handles being used to read the index.
+
Lucene queries are now executed on background threads to isolate them
from SSH threads.
+
This may also reduce latency for user dashboards on a multi-core system as
each query for the different sections can now run on separate threads and
return results when ready.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4249[Issue 4249]:
Fix 'Duplicate stages not allowed' error during indexing.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4238[Issue 4238]:
Fix 'not found' error when browsing tree in gitweb.
+
The `refs/heads/` prefix was incorrectly being added to `HEAD`, causing a
'404 Not Found' error.

* Allow to read repositories that do not end with `.git`.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4262[Issue 4262]:
Fix GPG push certificate for first patch set of new changes.
+
The GPG certificate was not being set for the first patch set of new
changes.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4296[Issue 4296]:
Fix internal error when a query does not contain any token.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4241[Issue 4241]:
Fix 'Cannot format velocity template' error when sending notification emails.

* Fix `sshd.idleTimeout` setting being ignored.
+
The `sshd.idleTimeout` setting was not being correctly set on the SSHD
backend, causing idle sessions to not time out.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4324[Issue 4324]:
Set the correct uploader on new patch sets created via the inline editor.

* Log a warning instead of failing when invalid commentlinks are configured.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4136[Issue 4136]:
Fix support for `HEAD` requests in the REST API.
+
Sending a `HEAD` request failed with '404 Not Found'.

* Return proper error response when trying to confirm an email that is already
used by another user.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4318[Issue 4318]
Fix 'Rebase if Necessary' merge strategy to prevent introducing a duplicate
commit when submitting a merge commit.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4332[Issue 4332]:
Allow `local` as a valid TLD for outgoing emails.

* Bypass hostname verification when `sendemail.sslVerify` is disabled.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4398[Issue 4398]:
Replication: Consider ref visibility when scheduling replication.
+
It was possible for refs to be replicated to remotes despite not being
visible to groups mentioned in the `authGroup` setting.

* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4036[Issue 4036]:
Fix hanging query when using `is:watched` without authentication.
