From dcc52ae5795563e14e7bed929ef03cba7a34ee45 Mon Sep 17 00:00:00 2001 From: Fiete Ostkamp Date: Tue, 3 Feb 2026 12:01:55 +0100 Subject: [PATCH] Add @Observed annotations - @Observed annotations create Opentelemetry spans for that method - this will help with identifying where time is spent in aai-core Issue-ID: AAI-4224 Change-Id: I4b2f60ff5a752c1a60ca7f02ee422968439760aa Signed-off-by: Fiete Ostkamp --- aai-core/pom.xml | 4 ++++ aai-core/src/main/java/org/onap/aai/introspection/MoxyStrategy.java | 3 +++ .../main/java/org/onap/aai/query/builder/GraphTraversalBuilder.java | 3 +++ .../main/java/org/onap/aai/query/builder/GremlinQueryBuilder.java | 3 +++ .../src/main/java/org/onap/aai/query/builder/GremlinTraversal.java | 3 +++ aai-core/src/main/java/org/onap/aai/query/builder/GremlinUnique.java | 3 +++ .../src/main/java/org/onap/aai/query/builder/TraversalQuery.java | 3 +++ aai-core/src/main/java/org/onap/aai/rest/db/HttpEntry.java | 5 ++++- .../src/main/java/org/onap/aai/serialization/db/DBSerializer.java | 3 +++ .../main/java/org/onap/aai/serialization/queryformats/Formatter.java | 3 +++ 10 files changed, 32 insertions(+), 1 deletion(-) diff --git a/aai-core/pom.xml b/aai-core/pom.xml index 4587279c..3058693f 100644 --- a/aai-core/pom.xml +++ b/aai-core/pom.xml @@ -257,6 +257,10 @@ limitations under the License. org.apache.tinkerpop tinkergraph-gremlin + + io.micrometer + micrometer-observation + org.slf4j slf4j-api diff --git a/aai-core/src/main/java/org/onap/aai/introspection/MoxyStrategy.java b/aai-core/src/main/java/org/onap/aai/introspection/MoxyStrategy.java index 9b1cec72..8f4b0b2c 100644 --- a/aai-core/src/main/java/org/onap/aai/introspection/MoxyStrategy.java +++ b/aai-core/src/main/java/org/onap/aai/introspection/MoxyStrategy.java @@ -23,6 +23,8 @@ package org.onap.aai.introspection; import com.google.common.base.CaseFormat; import com.google.common.base.Joiner; +import io.micrometer.observation.annotation.Observed; + import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.util.ArrayList; @@ -324,6 +326,7 @@ public class MoxyStrategy extends Introspector { } @Override + @Observed public String marshal(MarshallerProperties properties) { StringWriter result = new StringWriter(); try { diff --git a/aai-core/src/main/java/org/onap/aai/query/builder/GraphTraversalBuilder.java b/aai-core/src/main/java/org/onap/aai/query/builder/GraphTraversalBuilder.java index bb69ba55..5475e383 100644 --- a/aai-core/src/main/java/org/onap/aai/query/builder/GraphTraversalBuilder.java +++ b/aai-core/src/main/java/org/onap/aai/query/builder/GraphTraversalBuilder.java @@ -25,6 +25,8 @@ package org.onap.aai.query.builder; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; +import io.micrometer.observation.annotation.Observed; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -979,6 +981,7 @@ public abstract class GraphTraversalBuilder extends QueryBuilder { } @Override + @Observed(name = "GraphTraversalBuilder.toList") public List toList() { if (this.completeTraversal == null) { executeQuery(); diff --git a/aai-core/src/main/java/org/onap/aai/query/builder/GremlinQueryBuilder.java b/aai-core/src/main/java/org/onap/aai/query/builder/GremlinQueryBuilder.java index f3805647..aa6a19d7 100644 --- a/aai-core/src/main/java/org/onap/aai/query/builder/GremlinQueryBuilder.java +++ b/aai-core/src/main/java/org/onap/aai/query/builder/GremlinQueryBuilder.java @@ -26,6 +26,8 @@ import com.google.common.base.Joiner; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; +import io.micrometer.observation.annotation.Observed; + import java.util.*; import org.apache.tinkerpop.gremlin.process.traversal.Path; @@ -943,6 +945,7 @@ public abstract class GremlinQueryBuilder extends QueryBuilder { } @Override + @Observed(name = "GremlinQueryBuilder.toList") public List toList() { if (this.completeTraversal == null) { executeQuery(); diff --git a/aai-core/src/main/java/org/onap/aai/query/builder/GremlinTraversal.java b/aai-core/src/main/java/org/onap/aai/query/builder/GremlinTraversal.java index 75d67365..bf3aa942 100644 --- a/aai-core/src/main/java/org/onap/aai/query/builder/GremlinTraversal.java +++ b/aai-core/src/main/java/org/onap/aai/query/builder/GremlinTraversal.java @@ -35,6 +35,8 @@ import org.onap.aai.introspection.Loader; import org.onap.aai.parsers.query.QueryParser; import org.onap.aai.parsers.query.TraversalStrategy; +import io.micrometer.observation.annotation.Observed; + /** * The Class GremlinTraversal. */ @@ -76,6 +78,7 @@ public class GremlinTraversal extends GremlinQueryBuilder { * @{inheritDoc} */ @Override + @Observed(name = "GremlinTraversal.createQueryFromURI") public QueryParser createQueryFromURI(URI uri) throws UnsupportedEncodingException, AAIException { return factory.buildURIParser(uri); } diff --git a/aai-core/src/main/java/org/onap/aai/query/builder/GremlinUnique.java b/aai-core/src/main/java/org/onap/aai/query/builder/GremlinUnique.java index 70c754fc..a6e17a14 100644 --- a/aai-core/src/main/java/org/onap/aai/query/builder/GremlinUnique.java +++ b/aai-core/src/main/java/org/onap/aai/query/builder/GremlinUnique.java @@ -36,6 +36,8 @@ import org.onap.aai.parsers.query.QueryParser; import org.onap.aai.parsers.query.TraversalStrategy; import org.onap.aai.parsers.query.UniqueStrategy; +import io.micrometer.observation.annotation.Observed; + /** * The Class GremlinUnique. */ @@ -77,6 +79,7 @@ public class GremlinUnique extends GremlinQueryBuilder { * @{inheritDoc} */ @Override + @Observed(name = "GremlinUnique.createQueryFromURI") public QueryParser createQueryFromURI(URI uri) throws UnsupportedEncodingException, AAIException { return factory.buildURIParser(uri); } diff --git a/aai-core/src/main/java/org/onap/aai/query/builder/TraversalQuery.java b/aai-core/src/main/java/org/onap/aai/query/builder/TraversalQuery.java index 4866b99e..19247565 100644 --- a/aai-core/src/main/java/org/onap/aai/query/builder/TraversalQuery.java +++ b/aai-core/src/main/java/org/onap/aai/query/builder/TraversalQuery.java @@ -41,6 +41,8 @@ import org.onap.aai.introspection.Loader; import org.onap.aai.parsers.query.QueryParser; import org.onap.aai.parsers.query.TraversalStrategy; +import io.micrometer.observation.annotation.Observed; + /** * The Class TraversalQuery. */ @@ -88,6 +90,7 @@ public class TraversalQuery extends GraphTraversalBuilder { * @{inheritDoc} */ @Override + @Observed(name = "TraversalQuery.createQueryFromURI") public QueryParser createQueryFromURI(URI uri) throws UnsupportedEncodingException, AAIException { return factory.buildURIParser(uri); } diff --git a/aai-core/src/main/java/org/onap/aai/rest/db/HttpEntry.java b/aai-core/src/main/java/org/onap/aai/rest/db/HttpEntry.java index ba1766bf..6ffd4b9a 100644 --- a/aai-core/src/main/java/org/onap/aai/rest/db/HttpEntry.java +++ b/aai-core/src/main/java/org/onap/aai/rest/db/HttpEntry.java @@ -27,6 +27,8 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.github.fge.jsonpatch.JsonPatchException; import com.github.fge.jsonpatch.mergepatch.JsonMergePatch; +import io.micrometer.observation.annotation.Observed; + import java.io.IOException; import java.io.UnsupportedEncodingException; import java.lang.reflect.InvocationTargetException; @@ -191,7 +193,7 @@ public class HttpEntry { return this.process(requests, sourceOfTruth, groups, true, null); } - + @Observed(name = "HttpEntry.process") public Pair>> process(List requests, String sourceOfTruth, Set groups, boolean enableResourceVersion, QueryOptions queryOptions) throws AAIException { @@ -655,6 +657,7 @@ public class HttpEntry { } + @Observed(name = "HttpEntry.getObjectFromDb") private Introspector getObjectFromDb(List results, DBSerializer serializer, QueryParser query, Introspector obj, URI uri, int depth, boolean nodeOnly, String cleanUp, boolean isSkipRelatedTo) throws AAIException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, diff --git a/aai-core/src/main/java/org/onap/aai/serialization/db/DBSerializer.java b/aai-core/src/main/java/org/onap/aai/serialization/db/DBSerializer.java index 67b29250..33c71225 100644 --- a/aai-core/src/main/java/org/onap/aai/serialization/db/DBSerializer.java +++ b/aai-core/src/main/java/org/onap/aai/serialization/db/DBSerializer.java @@ -22,6 +22,8 @@ package org.onap.aai.serialization.db; import com.google.common.base.CaseFormat; +import io.micrometer.observation.annotation.Observed; + import java.io.UnsupportedEncodingException; import java.lang.reflect.Array; import java.lang.reflect.InvocationTargetException; @@ -1359,6 +1361,7 @@ public class DBSerializer { * @throws AAIUnknownObjectException * @throws URISyntaxException */ + @Observed(name = "DBSerializer.dbToObject") private Introspector dbToObject(Introspector obj, Vertex v, Set seen, int depth, boolean nodeOnly, String cleanUp, boolean isSkipRelatedTo) throws AAIException, UnsupportedEncodingException { diff --git a/aai-core/src/main/java/org/onap/aai/serialization/queryformats/Formatter.java b/aai-core/src/main/java/org/onap/aai/serialization/queryformats/Formatter.java index e31753c1..cde316be 100644 --- a/aai-core/src/main/java/org/onap/aai/serialization/queryformats/Formatter.java +++ b/aai-core/src/main/java/org/onap/aai/serialization/queryformats/Formatter.java @@ -23,6 +23,8 @@ package org.onap.aai.serialization.queryformats; import com.google.gson.JsonArray; import com.google.gson.JsonObject; +import io.micrometer.observation.annotation.Observed; + import java.util.List; import java.util.Map; import java.util.Optional; @@ -129,6 +131,7 @@ public class Formatter { } + @Observed public JsonObject output(List queryResults) { return output(queryResults, null); } -- 2.16.6