commit | 15ca7b0bcb8782a9d493e3abb8df669c59debfd6 | [log] [tgz] |
---|---|---|
author | Edwin Kempin <ekempin@google.com> | Wed Jun 15 17:58:58 2016 +0200 |
committer | Björn Pedersen <iceelch@googlemail.com> | Thu Jun 23 09:52:36 2016 +0200 |
tree | e3b895548ea067f8617cccafcd4cf3eecfbb7150 | |
parent | 9c3d23bb93dcf86567ce2d939cfb4d85f3c1d34e [diff] |
Migrate reviewed flags to local H2 database With NoteDb Gerrit will no longer have a database. Hence all data from ReviewDb must be migrated away from it. This change migrates the reviewed flags from ReviewDb to a local H2 database. Reviewed flags are tuples of (patch set ID, file, account ID) and record whether a user has reviewed a file in a patch set. Each user can easily have thousands of reviewed flags and the number of reviewed flags is growing without bound. Most data from ReviewDb is migrated to be stored in git, but for reviewed flags a git-based storage is not very well suitable because there is a relatively high write latency [1]. Also depending on the exact storage format updating reviewed flags may create a huge git history which is not good for anything since an audit log for reviewed flags is not needed [1]. Since reviewed flags are small per-user bits that are quickly read and updated a database seems to be the best storage [2]. This is why with this change the reviewed flags will be stored in a local H2 database. This store implements the AccountPatchReviewStore extension point that was added by change Iaaacd9f0a. Plugins can implement this extension point and replace the local H2 database with another storage. To support multi-master the local H2 database must be replaced by a storage that supports replication, e.g. a MySQL replication system [2]. This can be done by implementing the AccountPatchReviewStore extension point. A schema migration copies all reviewed flags from ReviewDb to the local H2 database and the old ACCOUNT_PATCH_REVIEWS table in ReviewDb is dropped. Not using gwtorm to access the local H2 database is intentional. When ReviewDb is gone, we want to drop the dependency to gwtorm, and hence we don't want to introduce any new dependencies to it. Instead the implementation is using raw SQL. The local H2 database is stored in the review site in: $site_path/db/account_patch_reviews.h2.db For the acceptence tests an in memory H2 database is used. [1] https://groups.google.com/d/msg/repo-discuss/KhXKMKTJNMs/Tq3XaB8wCgAJ [2] https://groups.google.com/d/msg/repo-discuss/KhXKMKTJNMs/hHoCa1_5CwAJ Change-Id: I7cb77ff124e36709cc69ef547f2b4e5e1a1d7f62 Signed-off-by: Edwin Kempin <ekempin@google.com>
Gerrit is a code review and project management tool for Git based projects.
Gerrit makes reviews easier by showing changes in a side-by-side display, and allowing inline comments to be added by any reviewer.
Gerrit simplifies Git based project maintainership by permitting any authorized user to submit changes to the master Git repository, rather than requiring all approved changes to be merged in by hand by the project maintainer.
For information about how to install and use Gerrit, refer to the documentation.
Our canonical Git repository is located on googlesource.com. There is a mirror of the repository on Github.
Please report bugs on the issue tracker.
Gerrit is the work of hundreds of contributors. We appreciate your help!
Please read the contribution guidelines.
Note that we do not accept Pull Requests via the Github mirror.
The IRC channel on freenode is #gerrit. An archive is available at: echelog.com.
The Developer Mailing list is repo-discuss on Google Groups.
Gerrit is provided under the Apache License 2.0.
Install Buck and run the following:
git clone --recursive https://gerrit.googlesource.com/gerrit cd gerrit && buck build release
The instruction how to configure GerritForge/BinTray repositories is here
On Debian/Ubuntu run:
apt-get update & apt-get install gerrit=<version>-<release>
NOTE: release is a counter that starts with 1 and indicates the number of packages that have been released with the same version of the software.
On CentOS/RedHat run:
yum clean all && yum install gerrit-<version>[-<release>]
NOTE: release is optional. Last released package of the version is installed if the release number is omitted.