Download: 3.1.4 | 3.1.3 | 3.1.2 | 3.1.1 | 3.1.0
Documentation: 3.1.4 | 3.1.3 | 3.1.2 | 3.1.1 | 3.1.0
Support for git protocol v2
Polymer 2
Mandatory plugins
Performance logging and tracing
See the New Features section for further details.
This release does not contain any schema changes. To upgrade:
java -jar gerrit.war init -d site_path
reviewdb.client
package is renamed to entities
Plugins or extensions that import classes from the com.google.gerrit.reviewdb.client
package must change the imports to com.google.gerrit.entities
.
Id
and NameKey
classesPlugins and extensions that instantiate and use classes such as Account.Id
, Change.Id
, Project.NameKey
, Branch.NameKey
, etc, must adapt to the following changes.
The classes can no longer be instantiated with the new
operator. Instead they must be created with static factory methods.
new Account.Id(...)
--> Account.id(...)
new AccountGroup.Id(...)
--> AccountGroup.id(...)
new AccountGroup.UUID(...)
--> AccountGroup.uuid(...)
new Branch.NameKey(...)
--> BranchNameKey.create(...)
new Project.NameKey(...)
--> Project.nameKey(...)
‘Getter’ methods are now generated by the auto-value library and no longer have the get
prefix.
Account.getName()
-> Account.name()
Response<T>
REST API endpoint implementations must now return a Response
object that explicitly sets a status code. Plugins that currently only return an Object
must be adapted to the new interface.
The Powermock and Easymock libraries are no longer exported in the acceptance-framework
artifact, and are replaced by Mockito. Plugins that use Powermock and/or Easymock in their tests should either add explicit dependencies, or migrate the tests to Mockito.
The Gerrit frontend has been migrated from Polymer 1 to Polymer 2 and to using Shadow DOM. This may break JavaScript plugins, e.g. if they use document.getElementById()
to reach into the DOM. Instead, plugins will have to use dedicated plugin endpoints together with calling plugin.registerCustomComponent
.
Internet Explorer is not supported. Major browsers are supported for the following versions and newer: Firefox 68, Chrome 76, Safari 12.1.
refs/drafts/
is removedThe change.allowDrafts
configuration option is removed, and it is no longer possible to push new changes or patch sets to refs/drafts/<branch-name>
.
refs/changes/
is removedThe receive.allowPushToRefsChanges
configuration option is removed, and it is no longer possible to add a new patch set to a change by pushing to refs/changes/<change number>
.
.gitconfig
JGit's configuration options are now read from the $site/etc/jgit.config
file rather than the system level .gitconfig
.
Many NoteDb operations require walking the entire change meta ref and loading its contents into memory, so changes with arbitrarily many updates may cause high CPU usage, memory pressure, persistent cache bloat, and other problems.
A new configuration option change.maxUpdates
allows to set the maximum number of updates that are allowed.
container.slave
is renamed to container.replica
The container.slave
option is still recognized as an alias of container.replica
but is deprecated and will be removed in a future release.
MessageOfTheDay
extension point is removed.The MessageOfTheDay
functionality was not ported to the PolyGerrit-UI and the MessageOfTheDay
extension point was removed with the 3.1.3 release. However, the JS API provides the banner
entrypoint for plugins to add messages to the UI. Plugins that were previously using the MessageOfTheDay
extension point have to be adapted accordingly.
Git protocol V2 is now enabled by default. A new permission-aware ref database ensures that Gerrit only ever returns refs that the calling user has access to.
It is possible to configure which plugins are mandatory. Gerrit will fail to start if a mandatory plugin cannot be loaded.
Disabling and restarting of a mandatory plugin is rejected, but reloading of a mandatory plugin is still possible.
replication.config
The new option event.payload.listChangeOptions
allows to configure which options are used when rendering internal events. This can be used to reduce performance impact of rendering many options.
See the documentation for full details.
Accounts
DETAILS
query option on the query accounts endpoint now includes the status
and state
fields in the response.Changes
New SKIP_DIFFSTAT
option for the query changes endpoint.
Computation of the insertions
and deletions
fields may be expensive for large trees. The new SKIP_DIFFSTAT
option allows to omit it from the result.
New exclude-groups
option on the Suggest Reviewers endpoint.
New optional commit-message
field on the input for cherry-pick endpoints.
If the optional message is provided, it is used, otherwise the message from the cherry-picked change is used.
New optional topic
field on the input for the revert endpoint.
If the optional topic is provided, it is used, otherwise the topic from the reverted change is used.
Config
change.api.excludeMergeableInChangeInfo
is now included in the response from the Get Server Info endpoint.Projects
New endpoint: Update dashboard.
The new endpoint currently only works for the default dashboard.
Issue 5082: Fix internal server error when getting blame for removed/replaced file.
Issue 11918: Fix internal server error when deleting a ref by git push.
Issue 12246: Fix generation of duplicate Change-Id
s when creating a new change via REST.
The Change-Id
was computed from the commit content and the timestamp, which resulted in the possibility for two changes to get the same Change-Id
when two empty changes were created by REST at the same time.
The Change-Id
is now generated randomly.
Remove easymock, powermock and javassist from the acceptance framework
Remove promise-polyfill
Add mockito in the acceptance framework
Upgrade Apache sshd and mina-core to 2.3.0
Upgrade auto-value to 1.7
Upgrade bouncycastle to 1.61
Upgrade commons-compress to 1.18
Upgrade gitiles-servlet and blame-cache to 0.3-6
Upgrade jetty to 9.4.18.v20190429
Upgrade JGit to v5.5.1.201910021850-r-152-g63fc6970c
Upgrade polymer to 2.7.2
Upgrade polymerelements/iron-autogrow-textarea to 2.2.0
Upgrade polymerelements/iron-dropdown to 2.2.1
Upgrade polymerelements/iron-icon to 2.1.0
Upgrade polymerelements/iron-iconset-svg to 2.2.1
Upgrade polymerelements/iron-input to 2.1.3
Upgrade polymerelements/iron-overlay-behavior to 2.3.4
Upgrade polymerelements/iron-selector to 2.1.0
Upgrade polymerelements/iron-test-helpers to 2.0.1
Upgrade polymerelements/test-fixture to 3.0.0
Upgrade polymerelements/paper-button to 2.1.3
Upgrade polymerelements/paper-input to 2.2.3
Upgrade polymerelements/paper-item to 2.1.1
Upgrade polymerelements/paper-listbox to 2.1.1
Upgrade polymerelements/paper-tabs to 2.1.1
Upgrade polymerelements/paper-toggle-button to 2.1.1
Upgrade visionmedia/page.js to 1.11.4
Upgrade truth to 1.0
Breaking Changes
Metrics: Cache disk stat metric computation is disabled by default
Calculation of the cache disks stat metrics for persistent caches is disabled by default because it is a very expensive operation that can block a thread for several minutes on larger installations.
Installations that still want to use this metric must explicitly enable it with the cache.enableDiskStatMetrics configuration option.
Breaking Changes
The LogThreshold
annotation is removed.
The default log level for tests has been changed from DEBUG to INFO, and this annotation is no longer needed. It was originally introduced to allow classes to explicitly set their log level at level other than DEBUG.
Plugins that use this annotation must be adjusted.
New Features
Add support for Elasticsearch 7.6.x.
Include upload-pack
metrics in the sshd log.
In order to enable detailed performance and problem analysis, upload-pack
metrics are now included in the sshd log.
Add new configuration setting core.packedGitUseStrongRefs
.
When set to true, this option enables using strong references to reference packfile pages cached in the WindowCache. If this option is set Java gc can no longer flush the WindowCache to free memory if the used heap comes close to the maximum heap size. On the other hand this provides more predictable performance.
Add new configuration setting sendemail.denyrcpt
.
This new setting works alongside the existing sendemail.allowrcpt
, and allows to configure email addresses or domains that Gerrit may not send to.
Allow to format HTTP and SSH logs in JSON format.
When log.jsonLogging
is enabled, the HTTP and SSH logs are formatted as JSON, making it easier for them to be parsed. Note that the error log was already formatted in JSON when this option was enabled.
Add new metrics.
Metrics are added for:
Refer to the metrics documentation for full details.
Issue 11493: Add an “Edit” button to the diff view in the PolyGerrit UI.
Add support for fsharp in highlighting syntax in the PolyGerrit UI.
Issue 12364: Add support for going to a specific line number in the inline editor.
Add prolog predicate to determine number of parents.
The new predicate commit_parent_count
can be used to detect merge commits.
Add NamedFluentLogger
.
NamedFluentLogger
is an extension to Flogger that allows to create a logger with a given name rather than the name of the enclosing class.
Issue 12444: Add support for max_result_window
in Elasticsearch index configuration.
Add a Code Coverage layer and plugin API in the PolyGerrit UI.
See Chromium issue 939904 for details.
Allow customizing the Gerrit httpd.listenUrl configuration in Docker using the HTTPD_LISTEN_URL environment variable.
Library Upgrades
Upgrade jackson-core to 2.10.3
Upgrade Jetty to 9.4.24.v20191120, including a fix for supporting IPv6.
Upgrade JGit to v5.6.1.202002131546-r-15-g241557137
Upgrade rules_closure to forked version.
This fixes the “-parameters is not supported for target value 1.7. Use 1.8 or later.” warning when building. See PR 478.
Security Fixes
Issue 12440: Fix the access-path for AbstractGitCommand subclasses.
The access path for the Receive.currentUser in the receive-pack command was wrongly set to SSH_COMMAND instead of to GIT. This allowed project owners to force-update a ref using git-over-SSH without having en explicit permission for that.
Bug Fixes
Fix size explosion of All-Users
caused by draft comment removal.
Modify draft comments generation so that, when removed, they to point to an empty parent.
Issue 11772: Cancel deprecation of change identifiers that was planned since 2.16.
Since 2.16 the documentation of change identifiers states that the identifiers other than <project>~<numericid>
are deprecated and will be removed in a future release. Since then the identifiers have still not been removed and there is no clear plan to do so.
It is likely that “deprecated” identifiers are still used in links in places where they can't be updated, for example in emails and forum posts. Due to this, and since continuing to support all of the types does not add any technical burden, ESC decided that the deprecation should be cancelled.
The change.api.allowedIdentifier
configuration setting is now obsolete and has been removed.
Issue 3340: Fix internal server errors when setting project access permission with bad regex.
Fix removal of stale metrics from the metrics registry.
Issue 12349: Fix time attribute of file entries in plugin artifacts.
Make assumption on number of query results explicit for change Id arguments.
When a change Id passed as argument was resolved to multiple changes, the first returned change was arbitrarily used. Now an error will be raised and logged.
download-commands plugin: Set SSH default port to 22.
Document dependency from account deactivator to autoUpdateAccountActiveStatus and log a warning if the account deactivation task is configured but will not be scheduled.
Fix handling of ambiguous name in visibleto
search predicate.
If the visibleto
search predicate was used with a display name that resolved to more than one account, the first account in the result was arbitrarily used. Now, this case will result in an error.
Fix a dependency injection runtime error in DeleteZombieDrafts program.
Issue 12473: Fix broken links in Elasticsearch configuration documentation.
PolyGerrit UI Fixes
Issue 4616: Open commentlinks to changes on the same server in the same tab.
Issue 12031: Fix issues with caching edited commit message.
Remove target=_self
from commentlinks.
Replication Plugin Fixes
Check nulls in firePendingEvents at startup.
After a sudden reboot (for unknown reason) Gerrit at startup couldn't load because of NullPointerException.
Change default for the replicateOnStartup
to false.
Issue 12559: replicateOnStartup not loaded and always considered as false.
New Features
Include request description in HTTP thread names.
The HTTP worker threads had generic names like HTTP-100
, HTTP-101
, etc. While we could conclude from the stack trace what this thread was doing, we missed some important information like repository name, user name, etc.
The HTTP threads now have descriptive names. For example, if there is an ongoing git-fetch operation we will see a thread named like: HTTP POST /a/myProject/git-upload-pack (johndoe from 10.87.75.169)
.
This makes the naming consistent with SSHD threads, which are named like: SSH git-upload-pack /myProject (johndoe)
.
New metrics for Jetty threadpool.
The new metrics are exposed under http/server/jetty/*
.
Utility program to delete zombie draft comment refs.
Deletion of draft comment refs was broken until 2.16.14, resulting in draft comment refs not getting deleted properly. Although it has been fixed, it's still possible that zombie refs exist from previous versions. The new site program DeleteZombieCommentsRefs
can be used to remove them.
Highlight WORKSPACE
and BUILD.bazel
files as Python in the PolyGerrit UI.
Breaking Changes
The MessageOfTheDay
extension point is removed.
The MessageOfTheDay
functionality was not ported to the PolyGerrit-UI and the MessageOfTheDay
extension point was removed with the 3.1.3 release. However, the JS API provides the banner
entrypoint for plugins to add messages to the UI. Plugins that were previously using the MessageOfTheDay
extension point have to be adapted accordingly.
Bug Fixes
Issue 12097: Fix migration to NoteDb when orphan changes exist.
In the case where a change belonged to a repository that did not exist, the migration failed.
Issue 9296: Fix wrong diff of commit message between different patch sets of a merge commit.
Issue 7969: Fix internal server error when diffing MERGE_LIST
between different patch sets of a merge commit.
Issue 10397: Don't send notification email when publishing a change edit on a WIP change.
Issue 12243: Fix unexpected deactivation of service user accounts.
Fix editing name and email for service user accounts.
Fix internal server error when a change edit includes an invalid file path.
Invalid file paths are now rejected as ‘400 Bad Request’.
Fix internal server error when giving an invalid merge strategy to the ‘Create Merge Patch Set’ REST endpoint.
Fix a resource leak in the ‘Get Patch’ REST endpoint.
Don't check for conflicting refs when deleting a ref; improve performance of migration to schema 167.
The migration to schema 167 involves deletion of refs. The performance was poor for large installations (for example 30k user refs and 20k groups) because the ref deletion implementation was doing an unnecessary check for conflicting refs.
Fix setting _moreChanges
to the wrong value in change query REST results.
Upgrade highlight-js to get various fixes in source code highlighting:
PolyGerrit UI Fixes
Issue 11980: Fix handling of LDAP groups containing a dot in the PolyGerrit permissions screen.
Issue 12197: Fix rendering of commentlinks using link
.
Issue 11697: Fix rendering of commentlinks without leading whitespace.
Issue 12224: Honor the date format preference when displaying dates.
Issue 12184: Fix link in blame annotation to link directly to the commit.
Issue 12108: Add missing ‘Page ...’ on pagination links in the repository list.
Fix the size of the commit message box.
Fix a parse error on the repository list.
Fix multiple triggers when shift-r
is held.
Wrap filenames onto two lines in the file list if the filename is too long.
Add a right margin to the search bar.
This creates some space between the search bar and the header-browse-source
endpoint where you often see a ‘Repositories’ link.
Replace ‘Menlo’ font with ‘SF Mono’.
‘Menlo’ was replaced by ‘SF Mono’ from Mac OS 10.11, and ‘Menlo’ does not render symbols and characters correctly.
Other Changes
Upgrade JGit to v5.6.0.201912101111-r-31-g3d59d1b80.
Upgrade jackson-core dependency to 2.10.2
Improve logging when a metadata update fails.
Update external Ids documentation with information on how to find the sha1 of an external Id and how to show the corresponding change note.
New Features
Include thread name in the HTTPD and SSHD logs.
Having thread name in the HTTPD and SSHD logs makes it easier to match entries from the error log. The error log entries already contain the thread name, so with the thread name included in each entry in the HTTPD and SSHD logs, we have more data to match an error to a request than just the timestamp.
PolyGerrit UI Fixes
Other Fixes
Issue 12070: Fix internal server error on git over HTTP calls when SSHD is enabled.
Double cleanup of the request context caused an internal server error on push or fetch via git over HTTP.
Fix generation of SSH keys with empty passphrase.
The -N
option of ssh-keygen
was correctly used for generation of RSA keys, but for other types -P
was used.
Extend documentation of external Ids to include examples of how to generate the sha1 of an external Id and how to show the git note of the Id.
New Features
Issue 11973: Add copy-to-clipboard for generated HTTP password.
Add support for doctag in PolyGerrit UI syntax highlighter.
Add an event interface in the PolyGerrit API.
Add support for Elasticsearch 7.5.
Add documentation of how to perform backups of Gerrit.
PolyGerrit UI Fixes
Issue 12024: Fix undefined branch in create-destination-dialog.
Issue 11969: Fix tab index in reply dialog.
Issue 11993: Stop loading fonts from external resources.
Issue 11984: Fix top menu bar on iOS.
Issue 8282: Avoid browser caching for diff on edit patch.
Issue 9444: Fix syntax highlighting for multi-char char constants.
Issue 12020: Fix ‘New Contributor Agreement’ screen.
Fix gr-syntax-params
css class.
Fix overflow of branch name in change list.
Other Fixes
Issue 11989: Fix internal server error when pushing over SSH with git protocol v2.
Issue 11962: Fix advertisement of refs/meta/config
in git protocol v2 when client does not have access to it.
Issue 11986: Fix fetching individual ref with git protocol v2.
Issue 7645: Fix thread deadlock when loading accounts from the account cache.
Replacing Guava caches with Caffeine reduces the chances of having the deadlocks and improves the cache performance.
Issue 11918: Fix internal server error when deleting a tag or branch by git push.
Issue 11650: Fix reindexing of changes after project is deleted in the delete-project
plugin.
Disallow deleting the refs/meta/config
branch via the ‘Delete Branches’ REST API.
Disallow deleting the HEAD
ref via the ‘Delete Branches’ REST API.
Allow empty base revision in the ‘Create Branch’ and ‘Create Tag’ REST APIs.
Fix deletion of draft comment refs.
In some situations, draft comment refs were not properly deleted but left empty. This resulted in unused draft refs persisting in the All-Users
repository, polluting the namespace. Published draft comments as well as deleted draft comments were kept in the history of the draft ref, keeping them alive for GC, and causing a steady increase of repository size.
Use correct content type text/plain
instead of plain/text
in ‘Create SSH Key’ REST API.
Fix handling of interactive/batch users in the QoS filter.
For the git-over-http requests this filter didn't work properly because the basic authentication happened later in the filter chain and at the moment when the QoS filter was invoked the current user was not yet set.
Add project name to headers of outgoing change emails.
Fix and expand documentation of ref-update
and commit-received
hooks in the hooks plugin.
Upgrade JGit to v5.6.0.201912041214-rc1