blob: 6b7dd02ea8fe8d72a6e34768313cd448877db931 [file] [log] [blame] [view]
---
title: "Gerrit 3.6.0"
permalink: 3.6.html
hide_sidebar: true
hide_navtoggle: true
toc: true
---
Download: **[3.6.8](https://gerrit-releases.storage.googleapis.com/gerrit-3.6.8.war)**
| [3.6.7](https://gerrit-releases.storage.googleapis.com/gerrit-3.6.7.war)
| [3.6.6](https://gerrit-releases.storage.googleapis.com/gerrit-3.6.6.war)
| [3.6.5](https://gerrit-releases.storage.googleapis.com/gerrit-3.6.5.war)
| [3.6.4](https://gerrit-releases.storage.googleapis.com/gerrit-3.6.4.war)
| [3.6.3](https://gerrit-releases.storage.googleapis.com/gerrit-3.6.3.war)
| [3.6.2](https://gerrit-releases.storage.googleapis.com/gerrit-3.6.2.war)
| [3.6.1](https://gerrit-releases.storage.googleapis.com/gerrit-3.6.1.war)
| [3.6.0](https://gerrit-releases.storage.googleapis.com/gerrit-3.6.0.war)
Documentation: **[3.6.8](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.8/index.html)**
| [3.6.7](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.7/index.html)
| [3.6.6](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.6/index.html)
| [3.6.5](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.5/index.html)
| [3.6.4](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.4/index.html)
| [3.6.3](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.3/index.html)
| [3.6.2](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.2/index.html)
| [3.6.1](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.1/index.html)
| [3.6.0](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.0/index.html)
## Release highlights
Gerrit 3.6 is fully compatible with Java 17 LTS.
### Submit Requirements
Gerrit deprecates the use of Prolog for definition of custom logic in the submit rules. From this version
onwards the rules can be expressed using the new concept of [Submit Requirements](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.0/config-submit-requirements.html).
Submit Requirements have several advantages, compared to the legacy Prolog rules:
- Easier to understand, defined through simple boolean expressions using a
higher-level change search predicates and common boolean operator.
- Lower footprint: they do not require backtracking in their evaluation,
consuming less CPU cycles.
- Richer GUI: makes it easy for reviewers and change owners to identify and
understand missing requirements.
Existing projects relying on Prolog will still work as expected, allowing a
smoother project transition.
Submit requirements also introduce new handy functions that allow to achieve
complex rules equivalent to the old Prolog rules but with an easier syntax:
- support checking on content modifications and file diffs with the `file:`
operator.
- `distinctvoters` predicate allows gating submission on N distinct voters
across more than one label.
- `authoremail` operator similar to the older `commit_author` Prolog predicate
- `message` predicate to support regular expression on the commit message as a
condition.
> **NOTE**: With the new submit requirements, submit records are no longer emitted.
> This means that any queries with the label formats (`label:Code-Review=NEED` or `label:Code-Review=OK`) will
> no longer match with changes. See more details in [Change 330203](https://gerrit-review.googlesource.com/330203).
## Important notes
### Schema and index changes
This release doesn't formally contain schema changes, however the NoteDb format has
evolved and includes the following amendments:
- [Change 324937](https://gerrit-review.googlesource.com/c/gerrit/+/324937):
The label in NoteDb has a UUID suffix
- [Change 323897](https://gerrit-review.googlesource.com/c/gerrit/+/323897):
The review score is only read from the latest patch-set
> NOTE: Because of the above incompatibilities, upgrade is supported only from
> Gerrit v3.5.2 onwards, because of the need of the extra `copy-approvals` tool
> and the backward compatibility fix on UUID suffixed labels.
> Failing to run the `copy-approvals` tool in v3.5.2 would leave the changes
> with a potentially stale approval score once the site is migrated to v3.6.
The `changes` index version has been increased to version 77. By default the
index is automatically rebuilt upon the Gerrit startup after the
upgrade.
### Offline upgrade
Upgrade to [Gerrit v3.5.2](../3.5.html#352) or later and make sure that the `copy-approvals`
site program has been run at least once.
```sh
java -jar gerrit.war copy-approvals -d site_path
```
Download the [Gerrit v3.6.0 war](https://gerrit-releases.storage.googleapis.com/gerrit-3.6.0.war) and
run the `init` program:
```sh
java -jar gerrit-3.6.0.war init -d site_path
```
Run offline reindexing of the changes:
```sh
java -jar gerrit.war reindex --index changes -d site_path
```
### Online upgrade with zero-downtime
Gerrit v3.6.x supports zero-downtime upgrade from Gerrit v3.5.2 or later when
configured using a [high-availability configuration](https://gerrit.googlesource.com/plugins/high-availability/+/refs/heads/master/README.md),
and the Git repositories are stored in a shared filesystem such as NFS or
similar.
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 using any API.
The zero-downtime upgrade consists of the following steps:
1. Have Gerrit servers running v3.5.2 or later, in high-availability
configuration, healthy and able to handle the incoming traffic properly.
2. Run the `copy-approvals` SSH command against one of the Gerrit servers
and wait for completion on all changes for all projects.
3. Set the Gerrit server unhealthy.
4. Shutdown the Gerrit server, update gerrit.war and plugins to v3.6.x and start
Gerrit again.
5. Verify that the Gerrit server is working properly (e.g. run automated smoke
tests) and then make it healthy again.
6. Wait for the Gerrit server to start serving traffic normally.
7. Repeat steps 3. to 6. for all the other Gerrit servers.
### Update gerrit.reportBugUrl configuration
The issues of the Gerrit Code Review project have been migrated from
Monorail into the new Gerrit Tracker, see announcement at:
https://groups.google.com/g/repo-discuss/c/F4havFh_Bvw/m/D5MsV17yAgAJ
If the [gerrit.reportBugUrl](https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#gerrit.reportBugUrl)
setting on your Gerrit server is pointing to the Gerrit Monorail project, which
is deprecated now, please update the URL to point to the new Gerrit Tracker,
e.g. change https://bugs.chromium.org/p/gerrit/issues/entry?template=Bug+Report
to https://issues.gerritcodereview.com/issues/new.
### Breaking changes
* The __ignore__ feature is completely removed from Gerrit's web app; the `ignore`
and `unignore` actions and the associated `is:ignored` predicate are not supported
anymore.
Gerrit has the attention set feature since v3.4. If you want to ignore a change,
then you can remove yourself from the attention set or the list of reviewers/ccs.
That makes it also clearer to your collaborators that you don't want to participate.
The legacy __ignore__ feature did not have any effect on the user's dashboard or
attention set but was limited to the execution of the `is:ignored` predicate.
On Google hosted Gerrit the feature is used by about 5 users per week.
20% of __ignore__ action clicks were accidental.
* [Change 321607](https://gerrit-review.googlesource.com/321607):
_Assignee_ feature is completely removed from the Gerrit UI
The Attention Set feature has been launched in Gerrit v3.3, and assignee
has been turned off by default for three releases. The feature is now completely
removed and cannot be enabled anymore by config.
* [Project Owners implicit delete reference permission has been removed](https://gerrit-review.googlesource.com/c/gerrit/+/304054).
Before this release all Project Owners had implicit delete permission to all
refs unless force-push was blocked for the user.
Admins that are relying on previous behavior or wish to maintain it for their
users can simply add the permission explicitly in All-Projects:
```ini
[access "refs/*"]
delete = Project Owners
```
> **NOTE**: If you choose to do so, blocking force-push no longer has any effect
> on permission to delete refs by means other than git (REST, UI).
* Support for CentOS is dropped and the base image replaced by AlmaLinux
RedHat anticipated the [EOL of CentOS to December 2021](https://blog.centos.org/2020/12/future-is-centos-stream/) making
hard for the Gerrit community to continue to support existing Docker setups on
CentOS.
The default base image now uses [AlmaLinux 8](https://almalinux.org/)
which promises to have a much longer life as open-source OS and has an easy
[migration tool from CentOS 8](https://github.com/AlmaLinux/almalinux-deploy)
available.
* Apache Commons Lang v2 is removed
Gerrit moved to [Apache Commons Lang v3](https://commons.apache.org/proper/commons-lang/) replacing all legacy
use of the older lang v2 from its dependencies. Existing plugins and scripts
that are using Apache Commons Lang v2 must be rebuilt to use the new library
or declare the older Apache Commons Lang v2 as an explicit dependency.
### Other changes
## Plugin changes
* [Change 331259](https://gerrit-review.googlesource.com/331259):
Deprecate the `registerStyleModule()` JS plugin API
* [Change 330403](https://gerrit-review.googlesource.com/330403):
Support validation options for branch creation to be used in
RefOperationValidationListener implemented in plugins.
* [Change 330200](https://gerrit-review.googlesource.com/330200):
Add support for specifying validation options in rebase and cherry-pick REST
endpoint and implemented in plugins.
* Upgrade to gitiles v1.0.0
## Gerrit UI changes
* [Change 324242](https://gerrit-review.googlesource.com/324242):
Add syntax highlighting for Markdown
Reuse and enable highlight.js syntax highlighting of Markdown files.
* [Issue 15715](https://crbug.com/gerrit/15715):
Fix the editing workflow in the web app
* [Change 330301](https://gerrit-review.googlesource.com/330301):
Adding tab navigation for hovercards
* [Change 330919](https://gerrit-review.googlesource.com/330919):
Show Change actions regardless if logged in or not, because the
gr-change-actions correctly hides the actions that the current user cannot do.
* [Change 333299](https://gerrit-review.googlesource.com/333299):
Remove the front-end metric `diffViewFullyLoaded` replaced by `diffViewDiplayed`
to represent highlighting a whole file.
* [Change 330204](https://gerrit-review.googlesource.com/330204):
Adds changes and dashboard link to account hovercard.
* [Change 330084](https://gerrit-review.googlesource.com/330084):
__Status__ field renamed to __About me__ and no icon is shown.
## Documentation changes
* [Change 331879](https://gerrit-review.googlesource.com/331879):
Fixed links in the [Plugin Lifecycle doc](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.0/dev-plugins-lifecycle.html)
and improved its discoverability
## End-to-End tests changes
New test properties are available in the [End-to-End](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.0/dev-e2e-tests.html#_environment_properties)
tests:
- com.google.gerrit.scenarios.project_prefix
- com.google.gerrit.scenarios.context_path
- com.google.gerrit.scenarios.replica_hostname
- com.google.gerrit.scenarios.username
## JGit changes
* Update jgit to v6.1.0.202203080745-r
release notes:
[6.0](https://projects.eclipse.org/projects/technology.jgit/releases/6.0.0)
[6.1](https://projects.eclipse.org/projects/technology.jgit/releases/6.1.0)
most important changes since 5.13:
- [push] support the "matching" RefSpecs ":" and "+:"
- IndexDiff: use tree filter also for SubmoduleWalk
- Describe: add support for core.abbrev config option
- PersonIdent: Add ctors that accept Instant in addition to Date
- Cap describe abbrev option, minimum is 4, maximum is length of a full ObjectId
- DescribeCommand: Add support for --abbrev=0
- DescribeCommand: Support configuring the hash abbreviation
- PushCommand: determine remote from git config if not given
- PushCommand: consider push.default when no RefSpecs are given
- Support for git config push.default
- Support for "lfs.url" from ".lfsconfig"
- Support LFS Server URL without .git suffix
- [rebase] Enable users to have a Change-ID be generated when squashing or rewording commits.
- RepoCommand: Add API to set extra files in the destination repository
- RebaseCommand: better commit message rewording. Respect git config commit.cleanup for rewording.
- CommitCommand: implement git commit --cleanup.
- Provide git config commit.cleanup
- sshd: support the ConnectTimeout ssh config
- sshd: Skip unknown keys from the SSH agent
- sshd: support the AddKeysToAgent ssh config
- sshd: handle "IdentityAgent SSH_AUTH_SOCK" in ssh config
- sshd: Connector for the Win32-OpenSSH SSH agent
- sshd: handle IdentitiesOnly with an SSH agent
- shd: support IdentityAgent config
- Add config reader for user-defined difftools
- Add command line support for "git difftool"
- Transport: load all refs only if push refspecs have wildcards
- UploadPack v2 protocol: Stop negotiation for orphan refs
- PackBitmapIndexV1: support parallel loading of reverse index
- RefDirectory.scanRef: Re-use file existence check done in snapshot creation
- FileSnapshot: Lazy load file store attributes cache
- Support commit.template git config option
- ssh: Handle "ProxyJump none" from SSH config file
- OpenSshConfigFile: update handling of line comments and quoted strings following changes in OpenSSH
- OpenSshConfigFile: update token replacements. It appears that the OpenSSH documentation has changed; it now allows more flags for a number of keys.
- [sshd agent] Introduce ConnectorDescriptor
- sshd: add support for ssh-agent
- Binary and CR-LF detection: conclude file is binary if it contains a lone CR like C git
- Make the buffer size for text/binary detection configurable
- GarbageCollectCommand: add numberOfBitmaps to statistics
- Don't block in GC#gc until garbage collection finished
- Let ObjectDatabase implement AutoClosable
- Optimize RevWalk.getMergedInto() to improve performance
- improve how git system config is found
- Bump minimum required Java version to 11
- [checkout] Use .gitattributes from the commit to be checked out
- [push] Call the pre-push hook later in the push process
- Prevent that an instance of PushCommand is reused
- Stop initCause throwing in readAdvertisedRefs
- Make sure to close Repository in tests
- Fix resource leak in CancellableDigestOutputStreamTest
- RebaseCommand: fix commit message in "fixup" case
- BinaryHunkInputStream: accept CR-LF
- Merge conflict messages: prefix conflict lines with a hash
- ObjectWalk: close ObjectReader on close() if needed
- LFS: Fix error occurring during delete branch
- sshd: backport upstream fix for SSHD-1231
- Use FileSnapshot without using configs for FileBasedConfig
- TreeRevFilter: fix wrong stop when the given path disappears
- storage: file: De-duplicate File.exists()+File.isFile()
- Fix checkout of files with mixed line endings on text=auto eol=crlf
- Fix missing peel-part in lsRefsV2 for loose annotated tags
- Fix RevWalk.getMergedInto() ignoring annotated tags
- Reftable: close old Db in FileRepository#convertToPackedRefs
- Reftable: Reload the stack _before_ trying to delete the files. This ensures we don't trip over our own open file handles when deleting compacted tables.
- Reftable: drop code for truncated reads
- Reftable: pass on invalid object ID in conversion
## Other dependency changes
* Update sshd to 2.8.0
The highlights of SSHD update from Gerrit's perspective are:
- [SSHD-1216](https://issues.apache.org/jira/browse/SSHD-1216):
Server-side implementation of the RFC 8332 server-sig-algs
extension: the server announces that it prefers the SHA-2 signatures
for RSA keys.
- [SSHD-1197](https://issues.apache.org/jira/browse/SSHD-1197):
A race condition in key exchange fixed.
- [SSHD-1163](https://issues.apache.org/jira/browse/SSHD-1163):
DH group exchange got a fix relating to RSA SHA-2 signatures.
Additionally, sshd 2.8.0 now supports (and prefers) the
chacha20-poly1305@openssh.com cipher [SSHD-1017](https://issues.apache.org/jira/browse/SSHD-1017),
and supports the curve25519 and curve448 KEX algorithms [SSHD-704](https://issues.apache.org/jira/browse/SSHD-704).
* Update codemirror-minified to 5.65.0
* Update highlight.js to 11.5.0
* Update rules_nodejs version to 5.1.0
* Update rules_go version to 0.30
* Update protobuf version to 3.19.4
## Other core changes
* [Change 334747](https://gerrit-review.googlesource.com/334747):
Fixed missing return type in e2e-tests
* [Change 334557](https://gerrit-review.googlesource.com/334557):
Make the computing of the diff cache thread-safe.
The computation previously failed with a zlib exception that was logged as if
the packfile was corrupt even though it wasn't.
* [Change 333706](https://gerrit-review.googlesource.com/333706):
Added support for 'is:<VALUE>' in approval copy condition queries to make arbitrary voting values sticky
* [Change 332139](https://gerrit-review.googlesource.com/332139):
Stop adding project-owners to `To:` of the emails for new changes.
## Bugfix releases
### 3.6.8
* New Features
* [Change 377699](https://gerrit-review.googlesource.com/c/gerrit/+/377699):
Allow generating safe local-only documentation, without reference to external fonts in CSS
* [Change 390658](https://gerrit-review.googlesource.com/c/gerrit/+/390658):
Allow disable Prolog rules evaluation on closed changes
* [Change 390614](https://gerrit-review.googlesource.com/c/gerrit/+/390614):
Allow uploading changes to group refs except changes to group files
* [Change 389055](https://gerrit-review.googlesource.com/c/gerrit/+/389055):
Allow operator aliases to be used in submit requirement expressions
* [Change 387435](https://gerrit-review.googlesource.com/c/gerrit/+/387435):
Persisted caches now honors `refreshAfterWrite` and `maxAge` settings in `gerrit.config`
* [Change 386974](https://gerrit-review.googlesource.com/c/gerrit/+/386974):
SSH set-reviewers cmd now handles lock failures with retries
* Performance Fixes
* [Change 376094](https://gerrit-review.googlesource.com/c/gerrit/+/376094):
Introduce new cache `changes_by_project` to speedup git ref advertisements on replica and git-receive-pack on primary
* [Change 377814](https://gerrit-review.googlesource.com/c/gerrit/+/377814):
Skip building bloom filters by default speeding up offline reindex
* Security Fixes
* [Change 389374](https://gerrit-review.googlesource.com/c/gerrit/+/389374):
Update Jetty to 9.4.53.v20231009 with critical security fixes [CVE-2023-36478](https://nvd.nist.gov/vuln/detail/CVE-2023-36478) and [CVE-2023-44487](https://nvd.nist.gov/vuln/detail/CVE-2023-44487)
* Bug Fixes
* [Issue 40014568](https://issues.gerritcodereview.com/issues/40014568):
Fix ref-updated stream events consistency for change edits
* [Issue 304335624](https://issues.gerritcodereview.com/issues/304335624):
Fix the changing preferred email resulting in duplicate emails set in cache
* [Change 388054](https://gerrit-review.googlesource.com/c/gerrit/+/388054):
Eliminated startup warning for plugins whose SshModule only provides Ssh\*CommandInterceptors
* [Change 387217](https://gerrit-review.googlesource.com/c/gerrit/+/387217):
Fixed case where an exception in change visibility checking could break visibility of all refs in that repo
* [Change 387055](https://gerrit-review.googlesource.com/c/gerrit/+/387055):
Fix SSH set-topic cmd to consider 'editTopicName' permission
* [Issue 291102119](https://issues.gerritcodereview.com/issues/291102119)
Avoid NullPointerException when deleting a single ref
* [Change 387216](https://gerrit-review.googlesource.com/c/gerrit/+/387216):
Fixed potential OOM due to SubmitRuleEvaluator creating new metrics whenever an instance was created
* [Change 387214](https://gerrit-review.googlesource.com/c/gerrit/+/387214):
Fixed potential OOM due to DefaultRefFilter creating new metrics whenever an instance was created
* [Change 386976](https://gerrit-review.googlesource.com/c/gerrit/+/386976):
Fixed potential OOM due to \*QueryProcessor classes creating new metrics whenever an instance was provided
* [Issue 300976121](https://issues.gerritcodereview.com/issues/300976121):
Fix NPE when `auth.httpDisplaynameHeader` is configured but header is unset
* [Change 387054](https://gerrit-review.googlesource.com/c/gerrit/+/387054):
Fix `force topic edit` permission to consider change owner rule
* [Change 386994](https://gerrit-review.googlesource.com/c/gerrit/+/386994):
Fixed InactiveAccountDisconnector NPE due to race condition
* [Issue 295457464](https://issues.gerritcodereview.com/issues/295457464):
Fixed SSH query not returning copied approvals on per patchset level
* Documentation Fixes
* [Change 391858](https://gerrit-review.googlesource.com/c/gerrit/+/391858):
Document `ChecksApi.updateResult()` in PolyGerrit plugins checks API
* [Change 391696](https://gerrit-review.googlesource.com/c/gerrit/+/391696):
Document `check-result-expanded` plugin endpoint in PolyGerrit plugins checks API
* [Change 388936](https://gerrit-review.googlesource.com/c/gerrit/+/388936):
Explain in ls-projects SSH API when the "parent" field is "?-N"
* [Change 388530](https://gerrit-review.googlesource.com/c/gerrit/+/388530):
Explain in /projects/ REST API when the "parent" field is "?-N"
* Replication Plugin Updates
* [Change 384754](https://gerrit-review.googlesource.com/c/plugins/replication/+/384754):
Avoid opportunity to inadvertently block the distributor
* [Change 383694](https://gerrit-review.googlesource.com/c/plugins/replication/+/383694):
Reduced log level for Task deletion errors in MP setups
* Dependency Updates
* Update jgit to 82e277c813398c9f519f16e83d080a94fa29a27c
* Native Packaging
* [Issue 311414905](https://issues.gerritcodereview.com/issues/311414905):
Add trailing slash in default `canonicalWebUrl` in Docker containers
### 3.6.7
* New Features
* [Change 385116](https://gerrit-review.googlesource.com/c/gerrit/+/385116):
Support Cloud Spanner for AccountPatchReviewStore
* Bug Fixes
* [Change 385557](https://gerrit-review.googlesource.com/c/gerrit/+/385557):
Remove warning on persisted_projects cache on multi-servers setups
The implementation of the key for persisted_project includes the
project version, therefore it is safe when used in a multi-servers
scenarios (HA, multi-site).
* [Change 380154](https://gerrit-review.googlesource.com/c/gerrit/+/380154):
Documentation: NOTE on use of sshkeys, and \*projects cache on clusters
When using the sshkeys, and \*projects caches on a cluster, warn
the Gerrit admin he should be aware of those caches to be potentially
stale. The problem can be minimised by either disabling them
altogether or setting a low value of refreshAfterWrite.
* [Change 384214](https://gerrit-review.googlesource.com/c/gerrit/+/384214):
Align Jetty session timeout with Gerrit web_sessions maxAge
Do not leave Jetty having sessions kept forever but expire
them with the same timeout of Gerrit sessions.
Verified E2E that the Jetty sessions expires with the same
timeout of the web_sessions maxAge value.
* [Issue 290225204](https://issues.gerritcodereview.com/issues/290225204):
loginUrl and loginText are hardcoded in the UI
Gerrit UI ignored the settings in the auth section of the
configuration [1].
In particular auth.loginUrl [2] should be used if present and
auth.type is set to HTTP or HTTP_LDAP.
Also auth.loginText [3] should be used if auth.loginUrl is set.
This change backports change 381534 to stable-3.6. We didn't cherry-pick because the code changes significantly and had many conflicts.
[1]: https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#auth
[2]: https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#auth.loginUrl
[3]: https://gerrit-review.googlesource.com/Documentation/config-gerrit.html#auth.loginText
* [Issue 291102119](https://issues.gerritcodereview.com/issues/291102119):
Avoid NullPointerException when deleting multiple tags
To avoid NPE make sure that ref is not read again after checking if
ref exists. This prevent the issue when other call already removed
the tag and we try to read it. Proper behaviour is to try to delete it
and return `Cannot delete refs/tags/...: LOCK_FAILURE` if tag is already
deleted.
* [Issue 289505276](https://issues.gerritcodereview.com/issues/289505276):
Fix for: change can't be submitted if another branch contains exactly the same commit.
* [Change 380694](https://gerrit-review.googlesource.com/c/gerrit/+/380694):
Hide Move Change from UI if change.move is set to false
* [Issue 290641654](https://issues.gerritcodereview.com/issues/290641654):
Fix bug in API '/projects/*/access:review' ignoring 'message' field
Fix API endpoint 'CreateAccessChange' '/projects/*/access:review'
not hounouring 'message' field provided via 'ProjectAccessInput' object despite setting it.
Add condition to check if message is provided then use it instead of default 'Review access change'
* Plugin Updates
* [Change 383360](https://gerrit-review.googlesource.com/c/gerrit/+/383360):
Update webhooks plugin to 1dc0a71883
This includes the following changes:
1dc0a71 Add HTTP response code 'SC_ACCEPTED' (202) as success case in response handler
16110f3 Annotate methods that return a definitely null value with @Nullable
and fixes:
[Issue 40015349](https://issues.gerritcodereview.com/issues/40015349) "plugins/webhooks doesn't accept HTTP 202 response code"
### 3.6.6
* Breaking changes
* [Issue 40015585](https://issues.gerritcodereview.com/issues/40015585):
Enhance metric name sanitize function to remove collision on '_' between metrics.
Collision between the sanitized metric names can be easily
created e.g. `foo_bar` will collide with `foo+bar`. In order
to avoid collisions keep the rules about slashes and replace not
supported chars with `_0x[HEX CODE]_` string. The replacement prefix
`0x` is prepended with another replacement prefix.
* New Features
* [Issue 287484350](https://issues.gerritcodereview.com/issues/287484350):
Extend configurability of index pagination type
Add NONE option to disable index backend pagination, this option
needs to be honoured by the indexing backend and this change introduces
the correct implementation for Lucene.
* Bug Fixes
* [Issue 40014502](https://issues.gerritcodereview.com/issues/40014502):
Fix JdkObsolete issues with Date caused by JGit's PersonIdent class not supporting Instant
Gerrit has quite a lot of usages of JGit's PersonIdent class. PersonIdent
currently doesn't support Instant, but requires a java.util.Date as input.
This fix updates PersonIdent in JGit to support Instants (offer constructors
that accept Instant + add a getter that returns Instant), Upgrade JGit in Gerrit,
Fix Gerrit's usages of PersonIdent to use the new constructors and getters.
* [Change 376334](https://gerrit-review.googlesource.com/c/gerrit/+/376334):
Fix ExternalId differential loading when cache is inconsistent
JGit may return a failure to update a repository, even if it actually
succeeded. This can create an issue when loading externalIds, since
we would retry to insert the same value into the cache twice,
due to the retry performed by the client, leading the cache
loader to consistently blow up.
* [Change 347316](https://gerrit-review.googlesource.com/c/gerrit/+/347316):
Fix Bazel build on Apple M2 ARM64 chip
Bazel fails to select the correct java-tools binaries for Apple's ARM64
chip and download the generic x86. This fix disable the download
of the pre-compiled java_tools, allowing Bazel to build them
locally using the correct architecture.
* [Change 373186](https://gerrit-review.googlesource.com/c/gerrit/+/373186):
Turn on JavaUtilDate bug pattern and fix related issues
Upcoming Bazel release 5.0 includes recent error prone release that
flags JavaUtilDate bug pattern. Demote the severity to warning to not
block Bazel upgrade and promote it to error severity again, when all
places were adapted.
* [Change 357634](https://gerrit-review.googlesource.com/c/gerrit/+/357634):
Fix parsing legacy labels for users with comma
This change fixes a bug introduced by [336883](https://gerrit-review.googlesource.com/c/gerrit/+/336883)
when parsing labels where a UUID was present together with a user name containing a comma.
* [Issue 289321387](https://issues.gerritcodereview.com/issues/289321387):
Preserve refs order in the GitBatchRefUpdateEvent event
[Change 335758](https://gerrit-review.googlesource.com/c/gerrit/+/335758)
introduced the concept of the single event representing batch ref update.
However this new event did not preserve original order of the updated refs.
This impacts event consumers behaviour and can cause failures. For example
if meta ref is processed before patchset ref indexing operation will
fail because of the missing patchset.
The timeline of events is kept in the same order they are generated,
to make sure that refs order is preserved and backward compatibility
is kept.
* Documentation fixes
* [Issue 40014489](https://issues.gerritcodereview.com/issues/40014489):
Announce / document that building with Java 8 is no longer supported
Documents that building with Java 8 is no longer supported.
Java 11 is now required and remove now unused error_prone_warnings_toolchain.
### 3.6.5
* New Features
* [Change 364591](https://gerrit-review.googlesource.com/c/gerrit/+/364591)
Allow to hide download schemes from the UI
Allow hiding a download scheme in the UI by still allowing to use it.
* Bug Fixes
* [Change 362914](https://gerrit-review.googlesource.com/c/gerrit/+/362914)
Fix internal server error caused by double flush in BaseCommand.TaskThunk
Ignore `SshChannelClosedException` when flushing the task's output and error
streams. JGit commands like `UploadPack` flush these streams already. When
`TaskThunk` tries to flush them again `SshChannelClosedException` is thrown
and leads to an internal server error.
* [Change 364478](https://gerrit-review.googlesource.com/c/gerrit/+/364478):
AndSource: Run `isVisibleToPredicate` based on its cost
`isVisible` check can be expensive and always running it ahead of other
cheaper predicates can increase the query time. Update `AndSource` to treat
`isVisibleToPredicate` like any other predicate so that it runs based on its
estimated cost.
* [Issue 16819](https://crbug.com/gerrit/16819):
Enable LDAP "Remember me" in login form per default
When users are presented with the LDAP login page, the "Remember me" checkbox
is disabled by default. This might be a problem because, if the user doesn't
explicitly click the checkbox, the session will be tied to the browser
session.
* [Issue 16814](https://crbug.com/gerrit/16814):
Improve `Rebase-SubmitStrategy` performance in some cases
Set uninteresting branches based on project configuration:
`create_new_change_for_all_not_in_target`.
* [Change 369415](https://gerrit-review.googlesource.com/c/gerrit/+/369415):
Fix metric computation with file paths in metric name.
Don't fail metric computation due to duplicated metric names.
* [Change 370354](https://gerrit-review.googlesource.com/c/gerrit/+/370354):
Improved performance of queries when backend index returns more results than needed
Matching changes more than the limit is just extra work that is discarded at
the end when the results are trimmed to match the limit. This can help improve
performance of queries where a small percentage of changes are filtered in the
initial page and the remaining results are obtained from the next page.
* [Change 357834](https://gerrit-review.googlesource.com/c/gerrit/+/357834):
Improved performance for plugin-provided SSH commands that perform multiple
permission checks or ref lookups for the same project
Move creation of `PerThreadCache` to `SshCommand` so that the cache is available
to most commands, including plugins.
* [Change 360221](https://gerrit-review.googlesource.com/c/gerrit/+/360221):
Add metric for memory allocated by all threads
Introduce [proc/jvm/memory/allocated](https://gerrit-review.googlesource.com/Documentation/metrics.html#_process)
which can be used to monitor total memory allocation rate causing work for the Java gc.
* [Change 361434](https://gerrit-review.googlesource.com/c/gerrit/+/361434):
Mark `LabelType.Builder#setFunction` as deprecated
Align the code with the
[documentation](https://gerrit-documentation.storage.googleapis.com/Documentation/3.6.3/config-labels.html#label_function).
* [Issue 16823](https://crbug.com/gerrit/16823):
Fix the search by query in the project filter
Fix regression introduced in [Change 337994](https://gerrit-review.googlesource.com/c/gerrit/+/337994),
in context of [Issue 15134](https://crbug.com/gerrit/15134).
* Download-commands plugin fixes
* [Issue 15944](https://crbug.com/gerrit/15944):
scp command for retrieving commit-sh hook fails with OpenSSH 9.0
Http should always be available from primary servers and using scp is getting
complicated since the implementation of scp varies between different OpenSSH
versions.
* Dependency Updates
* Update jgit to 5ae8d28faaf6168921f673c89a4e6d601ffad78d.
* [JGit Bug 565854](https://bugs.eclipse.org/bugs/show_bug.cgi?id=565854)
`SshdSession`: close channel gracefully
Close the channel gracefully to give the server a chance to clean up properly on
its side.
* Update bouncycastle to 1.72.
* Update commons-compress to 1.22.
### 3.6.4
* New features
* [Issue 16565](https://crbug.com/gerrit/16565):
Introduce cache.threads option to allow custom executors for Caffeine caches.
The introduction of `cache.threads` in `gerrit.config` allows to configure
a separate thread pool which can be tuned and decoupled from the
rest of the JVM common threads.
* [Change 353177](https://gerrit-review.googlesource.com/c/gerrit/+/353177):
Add tsconfig-plugins-base.json to Gerrit TypeScript Plugin API.
Adds `tsconfig-plugins-base.json` to the npm package so downstream plugins
can easily use the same set of TypeScript settings.
* [Issue 16445](https://crbug.com/gerrit/16445):
Add slice number to the change indexing task description.
To indicate to the administrator each task is indeed doing something
different, add the slice number if there is more than one slice in
total.
* [Change 356215](https://gerrit-review.googlesource.com/c/gerrit/+/356215):
Support `init --reindex-threads=-1` to skip reindexing after init.
Admins may wish to run other commands after `init` and before `reindex`, but
previously would have needed to observe and interrupt the `init` command
process once it started reindexing in order to do so. Providing an option to
`init` that skips the reindexing phase simplifies that workflow and makes it
less error prone.
* [Change 356234](https://gerrit-review.googlesource.com/c/gerrit/+/356234):
Add CUDA syntax highlighting.
* [Change 352534](https://gerrit-review.googlesource.com/352534):
Introduce `--show-cache-stats` for printing cache stats during `init` and `reindex`,
disabled by default.
* Bug Fixes
* [Change 351674](https://gerrit-review.googlesource.com/c/gerrit/+/351674):
SSH review cmd handles lock failures with retries.
Retrying on lock failures helps mitigating lock failures when there is
contention to lock the notedb ref. Retries were already implemented
in REST API code path at a high enough layer so that it applies for all
REST APIs.
* [Change 353594](https://gerrit-review.googlesource.com/c/gerrit/+/353594):
Inserting new patch-sets is retried on lock failures.
Mitigates failures when creating new patch-sets fails if the notedb
ref is locked for another update on the change.
* [Issue 14686](https://crbug.com/gerrit/14686), [Issue 14779](https://crbug.com/gerrit/14779), [Issue 16030](https://crbug.com/gerrit/16030):
In [Change 293978](https://gerrit-review.googlesource.com/c/gerrit/+/293978), eTag was
removed from GetRevisionActions, but not RevisionResource. This resulted
in the UI to show a stale 'submit' action on the change in the same
submission chain. The UI now uses RevisionResource eTag, that does not include
MergeSuperSet (all related changes).
* [Issue 16409](https://crbug.com/gerrit/16409):
Report pack protocol errors to the client via smart-HTTP.
A regression introduced by [JGit Change 1926771](https://git.eclipse.org/r/c/jgit/jgit/+/192677),
caused pack protocol errors to be reported as 500 Server errors.
Such situations should be reported to the user as a 200 OK containing the
details of the failed operation.
* [Change 351759](https://gerrit-review.googlesource.com/351759):
Fix `contrib/find-duplicate-usernames.sh` output when usernames contain spaces.
* [Issue 16449](https://crbug.com/gerrit/16449):
Fix project root computation in Gitweb servlet.
* [Change 356715](https://gerrit-review.googlesource.com/356715):
Fixed bug with negated label for queries with external groups.
* [Change 359176](https://gerrit-review.googlesource.com/359176):
Fix LabelPredicate group matching for included external groups.
* [Change 357874](https://gerrit-review.googlesource.com/357874):
Fixed ownerin/uploaderin for internal groups that include external groups.
* [Change 355054](https://gerrit-review.googlesource.com/355054):
Wrap #mobileSearch in a div.
Fixes an issue on wikimedia where the search button was hidden
even though the rules executed to make it show.
* [Issue 16433](https://crbug.com/gerrit/16433):
Fix 404 page shown after login using OpenID
* Dependency Updates
* Update jgit to a1901305b26ed5e0116f138bc02837713d2cf5c3.
Update from stable-6.1 to stable-6.5:
* Notable enhancements and fixes from [6.2.0](https://projects.eclipse.org/projects/technology.jgit/releases/6.2.0) are:
* [4dd9a94e](https://git.eclipse.org/r/c/jgit/jgit/+/192433): Better feedback on SSH authentication failure
* [7b1c8cf14](https://git.eclipse.org/r/c/jgit/jgit/+/191924): Retry reading a file when there are concurrent writes
* [fed1a5493](https://git.eclipse.org/r/c/jgit/jgit/+/197714): Refresh 'objects' dir and retry if a loose object is not found
(Fixes cases where a new loose object is not immediately visible on a NFS
client if it was created on another client)
* [011c26ff3](https://git.eclipse.org/r/c/jgit/jgit/+/193939): Fix connection leak for smart http connections
* [ac127a793](https://git.eclipse.org/r/c/jgit/jgit/+/196849): Do not handle internal git errors as an HTTP error
* Notable enhancements and fixes from [6.3.0](https://projects.eclipse.org/projects/technology.jgit/releases/6.3.0) are:
* [1a364c49e](https://git.eclipse.org/r/c/jgit/jgit/+/194200): JGit blame very slow for large merge commits that rename files
* [66ace4b9](https://git.eclipse.org/r/c/jgit/jgit/+/193496): Do not check reachability of visible SHA1s in git-upload-pack
* [035e0e23](https://git.eclipse.org/r/c/jgit/jgit/+/194500): Do not prematurely terminate timer in case of error during git-upload-pack
* Notable enhancements and fixes from [6.4.0](https://projects.eclipse.org/projects/technology.jgit/releases/6.4.0) are:
* [fe9aeb02e6](https://git.eclipse.org/r/c/jgit/jgit/+/196497), [93097f0018](https://git.eclipse.org/r/c/jgit/jgit/+/196323): Receive and parse client [git session-id](https://git-scm.com/docs/gitprotocol-capabilities#_session_idsession_id)
* [59029aec3](https://git.eclipse.org/r/c/jgit/jgit/+/196905): Add option to allow using JDK's SHA1 implementation
* [3e7281662](https://git.eclipse.org/r/c/jgit/jgit/+/197151): UploadPackServlet#doPost use try-with-resource to ensure
UploadPack is closed
* [1e04046a6](https://git.eclipse.org/r/c/jgit/jgit/+/194411): Fix crashes on rare combination of file names
(This issue has been seen during offline reindex of changes with specific merge commits)
* Update sshd to 2.9.2
* [CVE-2022-45047](https://nvd.nist.gov/vuln/detail/CVE-2022-45047): Avoid using Java deserialization to load a serialized java.security.PrivateKey
* [SSHD-1302](https://issues.apache.org/jira/browse/SSHD-1302): Reading again from exhausted ChannelExec#getInvertedOut() throws IOException instead of returning -1
* [SSHD-966](https://issues.apache.org/jira/browse/SSHD-966): Deadlock on disconnection at the end of key-exchange
* [SSHD-1231](https://issues.apache.org/jira/browse/SSHD-1231): Public key authentication: wrong signature algorithm used (ed25519 key with ssh-rsa signature)
* [SSHD-1257](https://issues.apache.org/jira/browse/SSHD-1257): Shell is not getting closed if the command has already closed the OutputStream it is using.
* [SSHD-1261](https://issues.apache.org/jira/browse/SSHD-1261): Sometimes async write listener is not called
* [SSHD-1290](https://issues.apache.org/jira/browse/SSHD-1290): Race condition is logged in ChannelAsyncOutputStream
* Update mina-core to 2.0.23
* Update reviewnotes to 10db2cf772989d031c6f3558010c51fe07cf9722
* Documentation fixes
* [Change 353177](https://gerrit-review.googlesource.com/353177):
Document Gerrit TypeScript Plugin API @gerritcodereview/typescript-api in pg-plugin-dev.
### 3.6.3
* New features
* [Issue 16322](https://crbug.com/gerrit/16322):
Limit the number of changes that can be submitted together
When chaining changes together, the sequence of commits to navigate
was previously unbound, causing the potential operations explosion.
The explosion could have also been accidental and caused by the push
of a change with a non-existent branch, which would have resulted
in the full scan of the repository for changes.
Introduce a new Gerrit configuration `change.maxSubmittableAtOnce` with
a safe default of `1024`, which would allow any use case that would have
also worked before this change.
* [Change 347496](https://gerrit-review.googlesource.com/c/gerrit/+/347496):
Enable project_list cache warmer when `cache.project_list.maxAge` is set
* [Change 341454](https://gerrit-review.googlesource.com/c/gerrit/+/341454):
GitwebServlet: Retrieve git path from FileRepository so that it can be used
with multi-site and cached-refdb modules
* Native packaging
* GerritForge RPM repository updated for arm64 architecture
[GerritForge RPM v1.4](https://gerritforge.com/gerritforge-repo-1-4.noarch.rpm)
has been released, including the native packages for arm64 architecutre.
* DockerHub images for arm64 architecture
[DockerHub Gerrit images](https://hub.docker.com/r/gerritcodereview/gerrit/tags?page=1&name=3.6.3)
include images for arm64 architecture.
* Performance Fixes
* [Change 350577](https://gerrit-review.googlesource.com/c/gerrit/+/350577)
copy-approvals: use multiple threads for copy-approvals, improve performance
Split the work into slices of changes and then utilize one thread per slice.
Also skip unnecessary reindexing. On a large Gerrit site with 1.3 million
changes, this reduced the time for copy-approvals from 5 hours to 15-20
minutes.
* [Change 350236](https://gerrit-review.googlesource.com/c/gerrit/+/350236)
Optimized change visibilty checking when the project is hidden
Looping over every change when the whole project isn't readable is a
waste of CPU. It's a bigger waste to fetch all the change data in the
first place.
* [Issue 16379](https://crbug.com/gerrit/16379):
Remove key locking for disabled caches
This change also makes the memoryLimit behaviour consistent with the
diskLimit set to zero means disabling the implementation of the cache.
* [Change 349895](https://gerrit-review.googlesource.com/c/gerrit/+/349895):
Add AndCardinalPredicate and OrCardinalPredicate
Before this change, IndexSource derived cardinality from predicate
which implement `HasCardinality`. Since `AndPredicate` and `OrPredicate`
does not return cardinality, IndexSource defaults to 10 when query
comprises more than one predicate. Due to this behavior, `AndSource`
chooses IndexSource almost always when query contains more than one
index predicate.
This helps `AndSource` to choose the right source more often.
* [Change 347956](https://gerrit-review.googlesource.com/c/gerrit/+/347956):
Introduce possibility to define the cardinality so that `AndSource` predicate
can work more efficiently
Before this change, cardinality of the IndexSource was always set to
10. This makes `AndSource` to choose IndexSource over other sources most of
the time.
Add a `HasCardinality` interface which can be used by all the predicates
which implement IndexPredicate to set a cardinality. This helps
AndSource to choose the right datasource.
* [Change 349355](https://gerrit-review.googlesource.com/c/gerrit/+/349355):
Cache repository locations in LocalDiskRepositoryManager
Obtaining the actual location of a repository using base-path
and project name can be slow as it involves some guessing to
locate the repository. Cache the locations once they are
obtained to avoid repeated work, thereby improving performance
when opening repositories.
* [Change 347955](https://gerrit-review.googlesource.com/c/gerrit/+/347955):
Consider cardinality while choosing the data source for `AndSource` predicate
Before this change, `AndSource` considered cost to choose a datasource.
Ideally cost should be used to determine which predicate to run
`#match()` against first, so that queries are faster. Cardinality should
be used to determine which datasource to be picked so that there are
fewer changes to process.
Consider cardinality of the datasource to choose the source and use
cost when cardinality is same.
* Bug Fixes
* [Change 350576](https://gerrit-review.googlesource.com/350576)
copy-approvals: continue when there are corrupt meta-refs in a project
If there was a corrupt meta-ref in a project, the copy-approvals
failed for all changes in that project. Mitigates [Issue 16326].
* [Change 350575](https://gerrit-review.googlesource.com/350575)
copy-approvals: don't stop when it fails on one project
When copying of approvals failed in one project it skipped copying of
approvals for other projects where it would potentially finish
successfully.
* [Change 350414](https://gerrit-review.googlesource.com/c/gerrit/+/350414)
Fix index rewriter to rewrite all Or/AndPredicates.
AndSource chooses right source more often
* [Change 349314](https://gerrit-review.googlesource.com/349314)
Fix reindex with label copyCondition containing group.
* [Change 77495](https://gerrit-review.googlesource.com/c/gerrit/+/347495):
Fix for IllegalStateException during the Gerrit start when
`cache.projects.refreshAfterWrite` is set to true and prolog rules are used
* [Change 350014](https://gerrit-review.googlesource.com/c/gerrit/+/350014):
Do not set cherryPickOf on RevertSubmission
The RevertSubmission internally uses CherryPickChange operation. It
creates the 'normal' revert for the first change in the relation chain,
for each subsequent change it creates a revert commit that is then
cherry-picked. This cherry-pick is not a cherry-pick of the reverted
change. This is a cherry-pick of the revert commit of the original
change.
This change fixes the bug in the logic that sets cherryPickOf to the
original (reverted) change, using the CherryPickChange operation.
* [Change 349894](https://gerrit-review.googlesource.com/c/gerrit/+/349894):
Don't always rewrite And/OrPredicate to And/OrSource
Before this change OrPredicate was always rewritten to OrSource. This
is not the right thing to do as `OrSource#read()` will eventually fail
when there is at least one non-datasource child. Since
[Change 347955](https://gerrit-review.googlesource.com/c/gerrit/+/347955),
`AndSource` picks a source which has the lowest cardinality
which makes the `OrSource#read()` failures more visible.
Rewrite `OrPredicate` to `OrSource` only when all the children in the
predicate are DataSources.
* [Change 348715](https://gerrit-review.googlesource.com/c/gerrit/+/348715);
Clarify that a restart is needed before changes to email templates take
effect
* [Issue 16182](https://crbug.com/gerrit/16182):
Reintroduce the Change-Id footer in change screen
This change reintroduce the Change-Id footer below the commit message on
the Gerrit UI.
* [Issue 10168](https://crbug.com/gerrit/10168):
Fix HTTP 404 when browsing tags on Gitweb
The Gitweb links to tags have been broken in v2.14.10 onwards.
Gitweb supports the 'a=tags' rendering action for annotated tags
only, returning 404 for all lightweight tags.
Use the generic 'a=shortlog' for Gitweb links to tags which would
work for both annotated and lightweight ones.
* [Change 347495](https://gerrit-review.googlesource.com/c/gerrit/+/347495):
Fix for IllegalStateException during the Gerrit start when
`cache.projects.refreshAfterWrite` is set to true and prolog rules are used
* [Issue 15997](https://crbug.com/gerrit/15997):
Make DelegateRepository#delegate() method public to allow plugins/modules to
access it
### 3.6.2
* Security Fixes
* [Issue 16054](https://crbug.com/gerrit/16054):
Fix confidentiality leak by users with create ref permission
using the create branch REST-API
Any user with create ref permission was able to gain
access to any SHA1 or refs, including the ones that they would
not have permission to see.
* Breaking changes
* [Issue 15941](https://crbug.com/gerrit/15941):
Fix SSH queries to not show commit-message unless --commit-message is provided
This issue has existed for several years and should be considered
breaking as users might expect commit message to be included by
default in SSH query results.
Obtaining the commit message is a costly operation as the commit
data has to be loaded. So, showing it even when --commit-message
is not provided degrades the performance of SSH queries.
* [Change 344300](https://gerrit-review.googlesource.com/344300):
Add missing return values in MetricMaker's `newCallbackMetric` and
`newConstantMetric`
When new callback and constant metrics were created the RegistrationHandle
was not returned, making impossible to de-register them.
The method signature is now aligned, however, all plugins, including the core ones,
that were registering callback or constant metrics would need to be rebuilt from
source or downloaded from the latest build on
[Gerrit-CI](https://gerrit-ci.gerritforge.com).
* New features
* [Change 343096](https://gerrit-review.googlesource.com/343096):
Introduce `index.paginationType=SEARCH_AFTER` configuration for speeding up
query pagination
* [Change 343798](https://gerrit-review.googlesource.com/343798):
Introduce `index.pageSizeMultiplier` configuration to paginate index
queries with increasing size
* [Change 344334](https://gerrit-review.googlesource.com/344334):
Implement `no-limit` queries with multiple pages, make them usable with
Elasticsearch
* [Change 345017](https://gerrit-review.googlesource.com/345017):
Add public `EventTypes.getRegisteredEvents()` for accessing all stream
event types from plugins
* [Change 340714](https://gerrit-review.googlesource.com/340714):
Introduce metrics configuration for different data reservoirs
* [Change 347496](https://gerrit-review.googlesource.com/347496):
New configuration option to periodically warm the project_list cache
Reduce the likelihood of the project_list cache being evicted
by providing an option to periodically warm it up.
When this warmer is enabled, change detail page loads are
consistently faster.
* Performance Fixes
* [Change 338154](https://gerrit-review.googlesource.com/338154):
Lazy load change notes when submit by push
Improves performance of change submit via push
* [Change 338614](https://gerrit-review.googlesource.com/338614)
Optimize SSH queries to avoid loading individual accounts
This improves performance of SSH queries.
* [Change 338474](https://gerrit-review.googlesource.com/338474):
Allow async receive-commits to have a thread-local cache
Improve caching when merging changes through git push
* [Change 338574](https://gerrit-review.googlesource.com/338574):
Cache ProjectControl instances in SSH queries
A PerThreadCache is used to cache ProjectControl instances to
improve SSH query performance.
* [Change 338834](https://gerrit-review.googlesource.com/338834):
Avoid creating an IdentifiedUser multiple times in a SSH query
This improves performance of SSH queries.
* Bug Fixes
* [Issue 16306](https://crbug.com/gerrit/16306):
Fix Bazel build on Apple M2 ARM64 chip
* [Issue 16284](https://crbug.com/gerrit/16284):
Fix performance issues with git-upload-pack on repositories with a large number
of changes
* [Issue 16043](https://crbug.com/gerrit/16043):
Fix reindexing for changes with a commit message longer than 32766 bytes
* [Change 347474](https://gerrit-review.googlesource.com/347474):
Fix DefaultMemoryCacheFactory to correctly set refreshAfterWrite
Setting refreshAfterWrite in gerrit.config now works and does not mistakenly
set expireAfterAccess
* [Change 340635](https://gerrit-review.googlesource.com/340635):
Fix CSS of the Contributor Agreement screen which was preventing to sign CLAs
* [Issue 15997](https://crbug.com/gerrit/15997):
Make delegate() method public
git-repo-metrics plugin now works with multi-site setup
* [Issue 16018](https://crbug.com/gerrit/16018)
Don't try to mark files as reviewed when not logged in
Fix marking of reviewed flag when not logged in. "Log in is required to perform that action" popup is no longer seen
when viewing file diffs unauthenticated.
* [Issue 16038](https://crbug.com/gerrit/16038):
Fix "internal error" when pushing to refs/users/xx/xxxx
Push over HTTP to refs/users/* branch now works and doesn't fail with "error: internal error" / Not Signed In
* [Issue 16001](https://crbug.com/gerrit/16001):
AsciiDoctor: skip attribute when looking for title
Fix documentation search showing :linkattrs: instead of the document title
* [Issue 15134](https://crbug.com/gerrit/15134):
Apply the match operator to filter projects
Next-arrow is now not hidden when searching for repositories in the Repository section
* [Change 337474](https://gerrit-review.googlesource.com/337474):
Use sane value for QueryProcessor's effective limit on "--no-limit"
Fix errors seen when --no-limit query option is used with ES index backend
* [Change 339754](https://gerrit-review.googlesource.com/339754):
Fix gerrit review command with branch option
The gerrit review command was not able to find the commit with branch
option; ensure "refs/heads/" prefix is present for branch option.
* [Issue 16106](https://crbug.com/gerrit/16106):
Fix label operator to work with external groups, which never worked before since
its addition in v2.10.
* [Change 331762](https://gerrit-review.googlesource.com/331762):
Cache permission filtering for All-Projects, allowing a faster ACL evaluation
to any refs.
* [Change 343694](https://gerrit-review.googlesource.com/343694):
Improve performance of queries that check the visibility of changes wrt a non-current user
* [Change 346254](https://gerrit-review.googlesource.com/346254):
Fix change queries evaluation of `AND` terms to run match on predicate whose cost is
least
Sort the change queries predicates in `AND` based on cost and cardinality, which
was broken since [Change 79391](https://gerrit-review.googlesource.com/79391).
**WARNING**: queries containing predicates with poorly defined costs or cardinalities
could perform worse now.
* Dependency Updates
* Update JGit to d01376106af8800017ac3c08d7c7ac1fd5ccc9ee, including the following fixes
and improvements:
* 011c26ff3 - Fix connection leak for smart http connections
* d67ac798f - Remove stray files (probes or lock files) created by background threads
* 035e0e23f - UploadPack: don't prematurely terminate timer in case of error
* 66ace4b9a - UploadPack: do not check reachability of visible SHA1s
* 8984e1f66 - HTTP Smart: set correct HTTP status on error
* Documentation fixes
* [Change 340534](https://gerrit-review.googlesource.com/340534)
Fix link to change.mergeabilityComputationBehavior in user-search.txt
* [Change 339235](https://gerrit-review.googlesource.com/339235)
Add copy-approvals SSH command link to the index page
* [Change 338949](https://gerrit-review.googlesource.com/338949)
Fix auto-generated documentation header for plugins
* [Change 337835](https://gerrit-review.googlesource.com/337835)
rest-api-projects: Fix documentation for #inherited-boolean-info
* [Change 340114](https://gerrit-review.googlesource.com/340114)
sshd config: Reference implementation sections upstream
* [Change 339819](https://gerrit-review.googlesource.com/339819)
Supplement key exchange supported by Apache MINA
* [Change 339818](https://gerrit-review.googlesource.com/339818)
Supplement 'encrypt-then-MAC' supported by Apache MINA
* [Change 339815](https://gerrit-review.googlesource.com/339815)
Supplement cipher algorithms in sshd.cipher section
* Other Fixes
* [Change 337835](https://gerrit-review.googlesource.com/337835):
rest-api-projects: Fix documentation for #inherited-boolean-info
* [Change 340245](https://gerrit-review.googlesource.com/340245)
Propagate auto flush value to external index module
* [Change 340534](https://gerrit-review.googlesource.com/340534):
Fix link to change.mergeabilityComputationBehavior in user-search.txt
### 3.6.1
* Bug Fixes
* [Issue 15957](https://crbug.com/gerrit/15957):
Fix loading ssh and gpg keys in Gerrit UI and make the text areas have a white background
The Gerrit UI did not display the list of the user's SSH and GPG keys, even if they were present
in the user's profile and working as expected.
* Other Fixes
* [Change 337014](https://gerrit-review.googlesource.com/337014):
Plugins named with hyphens can now define query operators