Add metric to count errors that occurred during plugin invocations

For plugins that are invoked through a plugin context errors may be
caught and logged. Add a metric that counts how often this happens so
that plugins that have issues can be easily detected.

Change-Id: I03c75305c0b33f1c974b789d644b5daed12bc8b4
Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
Edwin Kempin
2018-09-14 15:21:10 +02:00
parent 5eb0219eb3
commit ec7e81f9e0
8 changed files with 98 additions and 21 deletions

View File

@@ -21,6 +21,7 @@ import com.google.gerrit.extensions.registration.Extension;
import com.google.gerrit.server.plugincontext.PluginContext.CheckedExtensionImplFunction;
import com.google.gerrit.server.plugincontext.PluginContext.ExtensionImplConsumer;
import com.google.gerrit.server.plugincontext.PluginContext.ExtensionImplFunction;
import com.google.gerrit.server.plugincontext.PluginContext.PluginMetrics;
/**
* Context to invoke an extension from {@link DynamicSet}.
@@ -81,9 +82,11 @@ import com.google.gerrit.server.plugincontext.PluginContext.ExtensionImplFunctio
*/
public class PluginSetEntryContext<T> {
private final Extension<T> extension;
private final PluginMetrics pluginMetrics;
PluginSetEntryContext(Extension<T> extension) {
PluginSetEntryContext(Extension<T> extension, PluginMetrics pluginMetrics) {
this.extension = checkNotNull(extension);
this.pluginMetrics = pluginMetrics;
}
/**
@@ -117,7 +120,7 @@ public class PluginSetEntryContext<T> {
* @param extensionImplConsumer consumer that invokes the extension
*/
public void run(ExtensionImplConsumer<T> extensionImplConsumer) {
PluginContext.runLogExceptions(extension, extensionImplConsumer);
PluginContext.runLogExceptions(pluginMetrics, extension, extensionImplConsumer);
}
/**
@@ -131,7 +134,7 @@ public class PluginSetEntryContext<T> {
*/
public <X extends Exception> void run(
ExtensionImplConsumer<T> extensionImplConsumer, Class<X> exceptionClass) throws X {
PluginContext.runLogExceptions(extension, extensionImplConsumer, exceptionClass);
PluginContext.runLogExceptions(pluginMetrics, extension, extensionImplConsumer, exceptionClass);
}
/**