0
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 0
What’s new in Gerrit 3.1
… and beyond
Luca Milanesio
Gerrit Code Review Maintainer
GerritForge
1
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 1
About GerritForge
Founded in
the UK
HQ in
London
Committed to
OpenSource
+ Sunnyvale
CA
2
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 2
Gerrit v3.1 in numbers
Source: analytics.gerrithub.io
3
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 3
Migration path to v3.1
• v2.14 / ReviewDb
• v2.15 / ReviewDb
• v2.16 / ReviewDb
• v2.16 / NoteDb
•v3.0
•V3.1 https://www.workeastren.co.uk/case-studies/paul-steps-to-success-case-study/
4
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 4
New non-core plugins
Checks (Native CI integration, yeah!)
Multi-site (!!!)
Pull-replication
Zookeeper (global ref consistency)
5
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 5
What’s new in v3.1
Polymer 2.0 and shadow DOM
Git Protocol v2 (secured)
Performance improvement and logging
Stability and Fixes
More CI integration (checks plugin)
6
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 6
Git protocol v2
From https://opensource.googleblog.com/2018/05/introducing-git-protocol-version-2.html
• Server-side filtering of references
• Easy extensibility for new features
7
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 7
Git protocol v2: server-side filtering
From https://opensource.googleblog.com/2018/05/introducing-git-protocol-version-2.html
• Previously: servers responded to all fetch commands with an initial reference
advertisement, listing all references in the repository.
• Sent even when a client only cares about updating a single branch
• Chromium repository (over 500k refs): the server is sending 10s of megabytes of data
that get ignored.
• Projects have seen a performance improvement of 3x for no-op fetches of a single
branch on repositories containing 500k references.
8
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 8
Git protocol v2: done in 3 attempts
See https://groups.google.com/d/topic/repo-discuss/nEkvNVCZzNM/discussion
• v2.16 and v3.0 reverted attempted, because of security vulnerability issues
• Patrick (Google) created PermissionAwareRefDatabase, permission aware repository
abstraction, that will only ever return refs that the user has access to.
• Then Stefano (GerritForge) took over this change and fixed some problems
• Adjustments in JGit, Thanks for review to Matthias (SAP)
• The whole series in Gerrit was reviewed by Han Wen (Google), Thanks!
9
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 9
Git protocol v2: how we tested it
In context of the third attempt to enable Git wire protocol v2 in Gerrit:
• Start the whole nine yard Gerrit server using StandaloneSiteTest base class
• Retrieve both SSH and HTTP ports assigned during server start
• Configure SSH private/public keys for SSH access and upload them to Gerrit using
plugin API
• Configure HTTP passwords for test users using Gerrit plugin API
• Access Gerrit server with git-core client using Java's ProcessBuilder facility
10
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 10
Git protocol v2: how to enable it
In context of the third attempt to enable Git wire protocol v2 in Gerrit:
<gerrit-site>/etc/jgit.config
[protocol]
version = 2
* Verify that recent Git client is installed (v2.18 or later):
$ git --version
git version 2.23.0
* Activate protocol.version 2 in ~/.gitconfig
* Demo Git protocol v2:
$ GIT_TRACE_PACKET=1 git ls-remote https://review.gerrithub.io/GerritCodeReview/bazlets
07:59:25.849401 pkt-line.c:80 packet: git< version 2
11
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 11
Breaking changes in v3.1
Push to refs/drafts/* removed
Push to refs/changes/* removed
12
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 12
Breaking changes in v3.1
JGit config read from
$GERRIT_SITE/etc/jgit.config
(bye bye ~/.gitconfig)
13
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 13
Roadmap to Gerrit v3.2 and beyond
• Pluggable authentication backends
• Group deletion
• Polymer 3
• Introduction of the ”attention set” instead of
assignee
• Robot comments
• Support for apply/fix feature
14
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 14
Roadmap to Gerrit v3.2 and beyond
• Performance improvements
• Git push performance
• PolyGerrit UI latency
• Gerrit caches with caffeine
• Repos with large number of refs (experimental: reftable)
• Faster persistent cache than H2
• Support for large mono-repos
• Support for Java 11
• Better GC algorithm: ZGC
• Support for very large heaps (up to TBytes of memory)
15
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 15
Roadmap to Gerrit v3.2 plugins
• Replication plugin
• Multi-master support
• External replication queue
• Checks plugin
• Support for sub-checks
• Override status
• High-availability plugin
• Integration with global ref-db
• Multiple concurrent writes on all nodes
16
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 16
Q&A: excited about the future of Gerrit?
Image from: http://cypp.rutgers.edu/ru-voting/political-information/public-opinion-polls/
17
Gerrit User Summit 2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 17
Wants to know more?
GerritForge.com/contact

What's new in Gerrit Code Review v3.1 and beyond

  • 1.
    0 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 0 What’s new in Gerrit 3.1 … and beyond Luca Milanesio Gerrit Code Review Maintainer GerritForge
  • 2.
    1 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 1 About GerritForge Founded in the UK HQ in London Committed to OpenSource + Sunnyvale CA
  • 3.
    2 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 2 Gerrit v3.1 in numbers Source: analytics.gerrithub.io
  • 4.
    3 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 3 Migration path to v3.1 • v2.14 / ReviewDb • v2.15 / ReviewDb • v2.16 / ReviewDb • v2.16 / NoteDb •v3.0 •V3.1 https://www.workeastren.co.uk/case-studies/paul-steps-to-success-case-study/
  • 5.
    4 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 4 New non-core plugins Checks (Native CI integration, yeah!) Multi-site (!!!) Pull-replication Zookeeper (global ref consistency)
  • 6.
    5 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 5 What’s new in v3.1 Polymer 2.0 and shadow DOM Git Protocol v2 (secured) Performance improvement and logging Stability and Fixes More CI integration (checks plugin)
  • 7.
    6 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 6 Git protocol v2 From https://opensource.googleblog.com/2018/05/introducing-git-protocol-version-2.html • Server-side filtering of references • Easy extensibility for new features
  • 8.
    7 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 7 Git protocol v2: server-side filtering From https://opensource.googleblog.com/2018/05/introducing-git-protocol-version-2.html • Previously: servers responded to all fetch commands with an initial reference advertisement, listing all references in the repository. • Sent even when a client only cares about updating a single branch • Chromium repository (over 500k refs): the server is sending 10s of megabytes of data that get ignored. • Projects have seen a performance improvement of 3x for no-op fetches of a single branch on repositories containing 500k references.
  • 9.
    8 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 8 Git protocol v2: done in 3 attempts See https://groups.google.com/d/topic/repo-discuss/nEkvNVCZzNM/discussion • v2.16 and v3.0 reverted attempted, because of security vulnerability issues • Patrick (Google) created PermissionAwareRefDatabase, permission aware repository abstraction, that will only ever return refs that the user has access to. • Then Stefano (GerritForge) took over this change and fixed some problems • Adjustments in JGit, Thanks for review to Matthias (SAP) • The whole series in Gerrit was reviewed by Han Wen (Google), Thanks!
  • 10.
    9 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 9 Git protocol v2: how we tested it In context of the third attempt to enable Git wire protocol v2 in Gerrit: • Start the whole nine yard Gerrit server using StandaloneSiteTest base class • Retrieve both SSH and HTTP ports assigned during server start • Configure SSH private/public keys for SSH access and upload them to Gerrit using plugin API • Configure HTTP passwords for test users using Gerrit plugin API • Access Gerrit server with git-core client using Java's ProcessBuilder facility
  • 11.
    10 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 10 Git protocol v2: how to enable it In context of the third attempt to enable Git wire protocol v2 in Gerrit: <gerrit-site>/etc/jgit.config [protocol] version = 2 * Verify that recent Git client is installed (v2.18 or later): $ git --version git version 2.23.0 * Activate protocol.version 2 in ~/.gitconfig * Demo Git protocol v2: $ GIT_TRACE_PACKET=1 git ls-remote https://review.gerrithub.io/GerritCodeReview/bazlets 07:59:25.849401 pkt-line.c:80 packet: git< version 2
  • 12.
    11 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 11 Breaking changes in v3.1 Push to refs/drafts/* removed Push to refs/changes/* removed
  • 13.
    12 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 12 Breaking changes in v3.1 JGit config read from $GERRIT_SITE/etc/jgit.config (bye bye ~/.gitconfig)
  • 14.
    13 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 13 Roadmap to Gerrit v3.2 and beyond • Pluggable authentication backends • Group deletion • Polymer 3 • Introduction of the ”attention set” instead of assignee • Robot comments • Support for apply/fix feature
  • 15.
    14 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 14 Roadmap to Gerrit v3.2 and beyond • Performance improvements • Git push performance • PolyGerrit UI latency • Gerrit caches with caffeine • Repos with large number of refs (experimental: reftable) • Faster persistent cache than H2 • Support for large mono-repos • Support for Java 11 • Better GC algorithm: ZGC • Support for very large heaps (up to TBytes of memory)
  • 16.
    15 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 15 Roadmap to Gerrit v3.2 plugins • Replication plugin • Multi-master support • External replication queue • Checks plugin • Support for sub-checks • Override status • High-availability plugin • Integration with global ref-db • Multiple concurrent writes on all nodes
  • 17.
    16 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 16 Q&A: excited about the future of Gerrit? Image from: http://cypp.rutgers.edu/ru-voting/political-information/public-opinion-polls/
  • 18.
    17 Gerrit User Summit2019 – GerritForge Inc – Sunnyvale CA GerritForge.com 17 Wants to know more? GerritForge.com/contact