diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-06-30 11:35:01 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-06-30 11:35:01 +0200 |
commit | 1171ecf2630f31e22f8f837095abc6f14ce669c8 (patch) | |
tree | e7d7b33866b1dd105da75e8ed77d7b813326130d /docproc | |
parent | dc1b5d78ca36f10d959cc19469e96c3f719030cf (diff) |
Reapply "Bjorncs/application status handler""
Diffstat (limited to 'docproc')
3 files changed, 65 insertions, 0 deletions
diff --git a/docproc/pom.xml b/docproc/pom.xml index e7d8d6e3a3e..d656559d5ec 100644 --- a/docproc/pom.xml +++ b/docproc/pom.xml @@ -48,6 +48,12 @@ </dependency> <dependency> <groupId>com.yahoo.vespa</groupId> + <artifactId>container-disc</artifactId> + <version>${project.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>com.yahoo.vespa</groupId> <artifactId>container-messagebus</artifactId> <version>${project.version}</version> <scope>provided</scope> diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/observability/DocprocsStatusExtension.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/observability/DocprocsStatusExtension.java new file mode 100644 index 00000000000..15f6c3a5cd9 --- /dev/null +++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/observability/DocprocsStatusExtension.java @@ -0,0 +1,51 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.docproc.jdisc.observability; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.yahoo.component.provider.ComponentRegistry; +import com.yahoo.container.handler.observability.ApplicationStatusHandler; +import com.yahoo.docproc.Call; +import com.yahoo.docproc.impl.DocprocService; +import com.yahoo.docproc.jdisc.DocumentProcessingHandler; +import com.yahoo.jdisc.handler.RequestHandler; + +import java.util.Iterator; +import java.util.Map; + + +/** + * @author bjorncs + */ +public class DocprocsStatusExtension implements ApplicationStatusHandler.Extension { + + @Override + public Map<String, ? extends JsonNode> produceExtraFields(ApplicationStatusHandler statusHandler) { + return Map.of("docprocChains", renderDocprocChains(statusHandler)); + } + + private static JsonNode renderDocprocChains(ApplicationStatusHandler statusHandler) { + ObjectNode ret = statusHandler.jsonMapper().createObjectNode(); + for (RequestHandler h : statusHandler.requestHandlers()) { + if (h instanceof DocumentProcessingHandler) { + ComponentRegistry<DocprocService> registry = ((DocumentProcessingHandler) h).getDocprocServiceRegistry(); + for (DocprocService service : registry.allComponents()) { + ret.set(service.getId().stringValue(), renderCalls(statusHandler, service.getCallStack().iterator())); + } + } + } + return ret; + } + + private static JsonNode renderCalls(ApplicationStatusHandler statusHandler, Iterator<Call> components) { + ArrayNode ret = statusHandler.jsonMapper().createArrayNode(); + while (components.hasNext()) { + Call c = components.next(); + JsonNode jc = ApplicationStatusHandler.renderComponent(c.getDocumentProcessor(), c.getDocumentProcessor().getId()); + ret.add(jc); + } + return ret; + } + +} diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/observability/package-info.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/observability/package-info.java new file mode 100644 index 00000000000..0040acf1fdc --- /dev/null +++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/observability/package-info.java @@ -0,0 +1,8 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +/** + * @author bjorncs + */ +@ExportPackage +package com.yahoo.docproc.jdisc.observability; + +import com.yahoo.osgi.annotation.ExportPackage;
\ No newline at end of file |