summaryrefslogtreecommitdiffstats
path: root/docproc
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2022-06-30 11:35:01 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2022-06-30 11:35:01 +0200
commit1171ecf2630f31e22f8f837095abc6f14ce669c8 (patch)
treee7d7b33866b1dd105da75e8ed77d7b813326130d /docproc
parentdc1b5d78ca36f10d959cc19469e96c3f719030cf (diff)
Reapply "Bjorncs/application status handler""
Diffstat (limited to 'docproc')
-rw-r--r--docproc/pom.xml6
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/observability/DocprocsStatusExtension.java51
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/jdisc/observability/package-info.java8
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