commit | 5eb0219eb349b746c7115f9edb377a6db47019dd | [log] [tgz] |
---|---|---|
author | Edwin Kempin <ekempin@google.com> | Fri Aug 24 15:49:36 2018 +0200 |
committer | Edwin Kempin <ekempin@google.com> | Thu Sep 27 17:05:53 2018 +0200 |
tree | 4d6e5aa57d4e40b6dce9e3fbe8f9660f1423e284 | |
parent | 92225eb6227719715b40c8fea479910bbabf0dad [diff] |
Set logging tag with plugin name on invocation of extension point With this logging tag one can easily see in the log file which logs have been triggered by the plugin. For traces this is interesting because then for actions such as loading files, doing index queries etc. one can see if they have been triggered by a plugin. E.g. if there is an extensive number of index queries that are triggered by a plugin we want to see this in the trace. Such logging tags are mostly useful for extension points that are likely to have complex or expensive implementations. We may not want to set such a logging tag for extension points which only have trivial implementations. Setting the logging tag with the plugin name when an extension point is invoked is done by opening a trace context. To invoke extension points with such a trace context they should be invoked through a plugin context. The plugin context can be directly injected. Instead of injecting DynamicItem/DynamicSet/DynamicMap you can now inject PluginItemContext/PluginSetContext/PluginMapContext. The plugin context classes offer methods to invoke the extension points that automatically set the trace context. In addition they provide functionality for catching and logging exceptions from plugins. This makes the logging and exception handling for plugin invocations more consistent across the code base and removes the need to have code for this in multiple places. Since exception handling with plugin contexts is easy now more plugin invocations handle exceptions now which makes Gerrit more resilient against plugin failures. This change adapts calls to most important extensions points, such as validators and listeners. Change-Id: Iab41d0059049f06ca41b697e93aa6a1f9668de5b 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 Bazel and run the following:
git clone --recursive 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.