commit | 103c5d14fe8c14b1d38bea0994e6b0b2a6540160 | [log] [tgz] |
---|---|---|
author | Edwin Kempin <ekempin@google.com> | Wed Jun 26 13:57:38 2019 +0200 |
committer | Edwin Kempin <ekempin@google.com> | Fri Jul 12 13:40:06 2019 +0200 |
tree | 91736741f8d53be85fcfd4cb537aaed4e70f8ea3 | |
parent | c90dc3af6da17e0cbd3ec544ccfbe8fae688c7aa [diff] |
Have a dedicated class for metadata that is provided to TraceTimer and PerformanceLogger Currently all metadata are key-value pairs, where both keys and values are strings. This leads to an API that is difficult to use: * change I776138eaa had to fix callers which forgot to specify metadata keys * change I758660f8b had to make metadata keys consistent * there are many similar methods with different numbers of key-value pairs for metadata This change introduces a dedicated Metadata class that is used in the API instead of key-value pairs that are strings. The Metadata class contains dedicated fields for all known metadata types. Using the Metadata.Builder it's now easy to provide metadata consistenly in all places (there are dedicated methods to set pieces of metadata, so that there is no longer a need to provide string keys for them). For plugins that want to provide metadata for which Gerrit core doesn't provide a suitable metadata field, Metadata contains a pluginMetadata field in which arbitrary key-value pairs can be stored. That should only be used for plugins. If Gerrit core needs additional metadata fields the Metadata class should be extended. The fields in Metadata only use basic Java types because the logging package, that contains the Metadata class, should not have any dependency on the large Gerrit packages that define the Gerrit types (e.g. Project.NameKey). For PerformanceLoggers it is important to know about the semantics of the provided metadata, as some of the metadata may be considered sensitive and must not end up in a performance log. Having the Metadata class allows PerformanceLogger implementations to decide which metadata they want to log and which metadata they want to omit. A speciality is the recording of performance log entries from metric timers. Whenever a metric timer is used we automatically report the measured time as a performance log record. As metadata we provide the value of the metric fields which are used for bucketing. As metadata keys we used the field names. To properly populate the metadata in the new Metadata type now, the definition of the metric fields must do the mapping of the field value to a field in the Metadata class. For this a MetadataMapper must be provided when the field is created. Change-Id: Idedf6368365cd7b54a78c86457d26933746477e8 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 Developer Mailing list is repo-discuss on Google Groups.
Gerrit is provided under the Apache License 2.0.
Install Bazel and run the following:
git clone --recurse-submodules https://gerrit.googlesource.com/gerrit cd gerrit && bazel 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>]
On Fedora run:
dnf clean all && dnf install gerrit-<version>[-<release>]
Docker images of Gerrit are available on DockerHub
To run a CentOS 7 based Gerrit image:
docker run -p 8080:8080 gerritforge/gerrit-centos7[:version]
To run a Ubuntu 15.04 based Gerrit image:
docker run -p 8080:8080 gerritforge/gerrit-ubuntu15.04[:version]
NOTE: release is optional. Last released package of the version is installed if the release number is omitted.