Download: 3.3.0
Documentation: 3.3.0
Java 11 by default for Gerrit
New logs timestamp format
Attention Set
The java language level is now set to Java 11 by default for Gerrit.
Issue 13494; Generate a Java 11 Eclipse project by default
Update dev-{eclipse,intellij} development for Java 11.
This release contains schema changes. To upgrade:
java -jar gerrit.war init -d site_path
Upgrading to this schema version (184) renames the Non-Interactive Users
group to Service Users
.
Gerrit supports zero-downtime upgrade from Gerrit v3.2 when configured using a high-availability configuration, when the Git repositories are stored in a shared filesystem such as NFS or similar.
For upgrading with zero-downtime, you should enable the rolling upgrade migration in gerrit.config
on both Gerrit servers by setting the gerrit.experimentalRollingUpgrade
to true
.
During the zero-downtime upgrade, Gerrit end-users would not notice any outage or service disruption. They will be able to perform any read/write Gerrit operation on the GUI or using the Git protocol.
The zero-downtime upgrade consists of the following steps:
gerrit.experimentalRollingUpgrade
to true
in gerrit.config
on both Gerrit servers.gerrit.experimentalRollingUpgrade
from gerrit.config
on both Gerrit servers.NOTE: The schema version 184 is tolerated by the Gerrit v3.2 because the group-id of the Non-Interactive Users
remains the same, hence all existing ACLs are evaluated as expected also when the group is renamed to Service Users
. During steps 4, 5 and 6, the Gerrit server still running v3.2 will display Service Users
on the repositories ACLs screen.
Downgrade to any Gerrit v3.2.x release is possible, but requires the following manual steps:
refs/meta/version
) to 183
(see git hash-object and git update-ref)refs/meta/group-names
)The new format supports both ISO-8601 and RFC3339, which means that if you are parsing it as general ISO-8601 it should work as before. However you will be affected if you are parsing the timestamp with a static format.
Similar to the ChangeAttributeFactory, a ChangePluginDefinedInfoFactory allows plugins to provide additional data in change results. ChangePluginDefinedInfoFactory has the advantage that it allows plugins to know the full set of changes up front so that they can do bulk operations.
ChangeAttributeFactory will be removed in the next release.
receive.autogc
optionBy JGit's default, git-receive-pack
will run auto gc after receiving data from git-push and updating refs.
Init step is added to auto-disable receive.autogc
configuration option in $gerrit_site/etc/jgit.config
file.
By JGit's default, git wire protocol version 2 is disabled. Given, that git wire protocol version 2 on the server side is considered to be now very stable, activate it per default in init site program, so that gerrit sites benefit from improved fetch performance.
Issue 13621; CVE-2020-8919: Make PermissionBackend#ForRef
authoritative.
Fixes a misconception that leads to data being accessible through Gerrit APIs that should be locked down.
Gerrit had two components for determining if a Git ref is visible to a user: (Default)RefFilter
and PermissionBackend#ForRef
(e.g., RefControl
). The former was always capable of providing correct results for all refs. The latter only had logic to decide if a Git ref is visible according to the Gerrit READ
permissions. This includes all refs under refs/heads
as well as any other ref that isn't a database ref or a Git tag. This component was unaware of Git tags and notedb-related refs. Hence, when asked for a database reference such as refs/changes/xx/yyyyxx/meta
, the logic would allow access if the user has READ
permissions on any of the ref prefixes (such as the default “read refs/* Anonymous Users”).
That was problematic, because it bypassed documented behavior where a user should only have access to a change if he can see the destination ref. The same goes for other database references.
Issue 13514; CVE-2020-8920: Work around Gitiles bug on All-Users
visibility.
Gitiles has a special FilteredRepository
wrapper that allows carefully hiding refs based on the project's ACLs. There is however an optimization that skips the filtering in case a user has READ
permissions on every ACL pattern(s). When the target repository is All-Users
, the optimization turns into a security issue because it allows seeing all personal information associated with all accounts, i.e.:
This fix now blocks Gitiles or any other part of Gerrit to abuse this power when the target repository is All-Users
, where nobody can be authorized to skip the ACLs evaluation anyway.
Issue 12629; Verify hostname when sending emails via SMTP server with SMTPSClient
.
The SMTP server's certificate and hostname must be verified if encryption is enabled with SSL verification in the host settings (sendemail.smtpEncryption
and sendemail.sslVerify
).
SMTPSClient
from Apache Commons Net used for SSL processing. It has the following downside: if encryption is not required, SMTPSClient
is used in ‘explicit’ mode with the upgrade to TLS never called. Thus, the client is somewhat misused.
Allow to use init as a param in docker run
This allows to easily run the Gerrit image with the init
argument to explicitly re-run the initialization on an existing or new site.
CentOS docker image upgrade to v8.2.2004
For every change Gerrit maintains an “Attention Set” with users that are currently expected to act on the change. Both on the dashboard and on the change page, this is expressed by an arrow icon before the user name.
Enabled by default. The former assignee feature is therefore now disabled by default.
Reply dialog posts patchset level comments instead of change messages.
Issue 13670; Introduce cache.openFiles setting in gerrit.config.
Persistent caches might require the allocation of additional file descriptors depending on their configuration and backend engine. This new setting allows the gerrit.sh to be aware of that and increase the number of files accordingly before starting Gerrit.
E.g. when swapping the default H2 persistent cache implementation with the chronicle-map implementation the number of open files needs raising, since the latter is bound to open more file descriptors, mostly due to its usage of memory mapped files.
Reject REST requests with invalid enum values as bad request
Expose ‘Service User’ tag on the REST API
Add endpoints to allow enhancement on submit requirements
Add parameter for added reviewers on reply-reviewers endpoint
Add an alternate CreateChange
endpoint
Issue 13357; Add the work_in_progress option to the revert and revertSubmission endpoints
Issue 13082; Add Eclipse support for Gatling tests
New command: “Reset To”
Add a new command that allows to reset the current branch to the commit that was fetched. This is useful in cases when the user is working on a local branch and the existing commands are not appropriate:
“Checkout” will check out the FETCH_HEAD, i.e. moving off the current branch and leaving the local repository in ‘detached head’ state.
“Cherry-Pick” will commit the fetched change again, resulting in a ‘new’ commit (i.e. changed sha1) which will result in a new patch set if the user creates any commits on top of it and pushes for review.
Issue 10021; Avoid quoting on basic strings
Add method to push changes directly to given replica
This makes it possible to push changes directly to given replica instance without sending unnecessary requests to others.
The method is intended to be used by other plugins that extend the replication plugin.
Prevent persistent task listing interruptions on IOExceptions
Improved the logging by differentiating between failures that are severe versus potentially related to other node actions since in a multi-primary scenario with shared storage, it is common for operations on one node to “interfere” with task listing operations on another node without causing a malfunction. Specifically, improve the exception handling so that the logging in these latter cases have a likely explanation of the listing error, and do not consider these specific filesystem errors operational errors.
NOTE: The multi-primary replication is still experimental.
Issue 12769; Fix synopsis in replication start cmd documentation
--url
is usable with --all
or projects and on its own. Updated the usage to reflect this.
Issue 12769; Don't wait for pending events to process on startup
Previously, on large Gerrit installations with many projects and/or many replication destinations, the replication plugin could take very long periods of time to startup. This was particularly a problem if the pending (persisted) event count was large as they all were rescheduled before the plugin finished initializing. Change this behavior so that startup merely begins the process of scheduling the pending events, but does not wait for them to complete.
Issue 13480; Don't output directories during task walk
Add comment icon to CR column of the dashboard
Lock scroll for background when reply-dialog open
Fix use of registration dialog instead of overlay
A11y - Add meaningful label for Edit button on change page
Enable download dialog shortcut in diff page
Add title and shortcuts for some links and buttons
Fix titles for buttons
Add help icon to search bar with link to the doc
Fix first and last focusable elements in download and diff pref dialogs
Refine the UX on account chips
Add doc/bug icons to hovercard and change to help-outline icon
Re-use logic for opening up download dialog from ‘d’
Update hovercard text to say Your/their turn to take action
Offer an option to hide the file comment button
Update pg-plugin-dev document with polymer 3 examples
Fix broken link/icon to the master build status
Add link icon to messages in change log
A11y - Fix label and navigation for More Actions Button
Disable the ‘Send’ button when a comment is being edited
Fix the dangling comma after reviewer on dashboard
Fix Shift-A shortcut for hiding the left side of the diff
Issue 7458; Fix iron-dropdown positioning
Issue 13080; Fix the position of the hovercard
Issue 13175; Fix gr-hovercard-behavior under Firefox
Issue 13328; Redirect GWT links to project dashboard to Polygerit
Issue 13433; Unlock scroll if hovercard detached
Issue 13543; Fix navigate back to change page with ‘[’ on first diff.
Issue 13658; Convert comment counts to comment thread counts around the UI
config-reverseproxy.txt: Document X-Forwarded-For header
Document possibility to resume reviews with meetings
Document how to mitigate the issue of broken Eclipse project on MacOS
Clarify documentation about parent project access right
Document jgit options respected by gerrit gc; receive
Issue 13544; Ensure that GC#deleteOrphans
respects pack lock.
If pack or index files are guarded by a pack lock (.keep
file), deleteOrphans()
should not touch the respective files protected by the lock file. Otherwise it may interfere with PackInserter
concurrently inserting a new pack file and its index.
Issue 13694; Fix the git wire protocol v2 issue on JDK 15
ElasticContainer: Upgrade V6_8 to elasticsearch 6.8.13
ElasticContainer: Upgrade V7_8 to elasticsearch 7.8.1
Issue 12704; Simplify Init for Elasticsearch
Upgrade caffeine to 2.8.5
Upgrade jackson-core to 2.11.3
Upgrade metrics-core to 4.1.12.1
Upgrade soy to 2020-08-24
Issue 13474; Upgrade testcontainers to 1.15.0
Limit graceful shutdown to SSH sessions serving git requests
NoteDbMigrator: Improve log message when saving ref updates
Explicitly check READ permission when processing a git push
Introduce sshd.gracefulStopTimeout
Fix eclipse project generation
Update instructions for running on Docker
Fix links and file name in emails for patchset-level comments
Add JavaScript style guide
Issue 11637; Add a process to remove a core plugin
Issue 11774; Change filtering of messages in experimental ChangeLog
Issue 12707; Apply diff preferences immediately after clicking save
Issue 12934; Fix selection on diff with range comments
Issue 12994; Fix toggle on iOS
Issue 13014; Clean up disrespectful terms
Issue 13054; Restore keyboard shortcut for expand all diff context
Issue 13073; Fix highlight on multi-line range comments
Issue 13184; Respect log.textLogging and log.jsonLogging using --console-log
Issue 13266; Allow to use ‘Apply fix’ several times on the commit message
Issue 13349; When SSH is disabled, it should also be disabled on replica
Issue 13350; Decode group id before using it to add [cc-]reviewers
Issue 13376; Make sure that comment drafts are sorted to the end
Issue 13464; Use persistent cache provided by libModule for offline reindex
Issue 13754; Fix NPE with StoredCommentLinkInfoSerializer when enabled is null
Breaking changes
Elasticsearch: support for EOL version 6.8 is discontinued. This was the last supported minor version of Elasticsearch 6 in Gerrit. From this release, Gerrit no longer supports V6 but only the already supported versions 7.x of Elasticsearch.