Add @Observed annotations 08/143108/1 master
authorFiete Ostkamp <fiete.ostkamp@telekom.de>
Tue, 3 Feb 2026 11:01:55 +0000 (12:01 +0100)
committerFiete Ostkamp <fiete.ostkamp@telekom.de>
Tue, 3 Feb 2026 11:02:59 +0000 (12:02 +0100)
- @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 <fiete.ostkamp@telekom.de>
aai-core/pom.xml
aai-core/src/main/java/org/onap/aai/introspection/MoxyStrategy.java
aai-core/src/main/java/org/onap/aai/query/builder/GraphTraversalBuilder.java
aai-core/src/main/java/org/onap/aai/query/builder/GremlinQueryBuilder.java
aai-core/src/main/java/org/onap/aai/query/builder/GremlinTraversal.java
aai-core/src/main/java/org/onap/aai/query/builder/GremlinUnique.java
aai-core/src/main/java/org/onap/aai/query/builder/TraversalQuery.java
aai-core/src/main/java/org/onap/aai/rest/db/HttpEntry.java
aai-core/src/main/java/org/onap/aai/serialization/db/DBSerializer.java
aai-core/src/main/java/org/onap/aai/serialization/queryformats/Formatter.java

index 4587279..3058693 100644 (file)
@@ -257,6 +257,10 @@ limitations under the License.
                        <groupId>org.apache.tinkerpop</groupId>
                        <artifactId>tinkergraph-gremlin</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>io.micrometer</groupId>
+                       <artifactId>micrometer-observation</artifactId>
+    </dependency>
                <dependency>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
index 9b1cec7..8f4b0b2 100644 (file)
@@ -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 {
index bb69ba5..5475e38 100644 (file)
@@ -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<E> extends QueryBuilder<E> {
     }
 
     @Override
+    @Observed(name = "GraphTraversalBuilder.toList")
     public List<E> toList() {
         if (this.completeTraversal == null) {
             executeQuery();
index f380564..aa6a19d 100644 (file)
@@ -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<E> extends QueryBuilder<E> {
     }
 
     @Override
+    @Observed(name = "GremlinQueryBuilder.toList")
     public List<E> toList() {
         if (this.completeTraversal == null) {
             executeQuery();
index 75d6736..bf3aa94 100644 (file)
@@ -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<E> extends GremlinQueryBuilder<E> {
      * @{inheritDoc}
      */
     @Override
+    @Observed(name = "GremlinTraversal.createQueryFromURI")
     public QueryParser createQueryFromURI(URI uri) throws UnsupportedEncodingException, AAIException {
         return factory.buildURIParser(uri);
     }
index 70c754f..a6e17a1 100644 (file)
@@ -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<E> extends GremlinQueryBuilder<E> {
      * @{inheritDoc}
      */
     @Override
+    @Observed(name = "GremlinUnique.createQueryFromURI")
     public QueryParser createQueryFromURI(URI uri) throws UnsupportedEncodingException, AAIException {
         return factory.buildURIParser(uri);
     }
index 4866b99..1924756 100644 (file)
@@ -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<E> extends GraphTraversalBuilder<E> {
      * @{inheritDoc}
      */
     @Override
+    @Observed(name = "TraversalQuery.createQueryFromURI")
     public QueryParser createQueryFromURI(URI uri) throws UnsupportedEncodingException, AAIException {
         return factory.buildURIParser(uri);
     }
index ba1766b..6ffd4b9 100644 (file)
@@ -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<Boolean, List<Pair<URI, Response>>> process(List<DBRequest> requests, String sourceOfTruth,
             Set<String> groups, boolean enableResourceVersion, QueryOptions queryOptions) throws AAIException {
 
@@ -655,6 +657,7 @@ public class HttpEntry {
 
     }
 
+    @Observed(name = "HttpEntry.getObjectFromDb")
     private Introspector getObjectFromDb(List<Vertex> results, DBSerializer serializer, QueryParser query,
             Introspector obj, URI uri, int depth, boolean nodeOnly, String cleanUp, boolean isSkipRelatedTo)
             throws AAIException, IllegalAccessException, IllegalArgumentException, InvocationTargetException,
index 67b2925..33c7122 100644 (file)
@@ -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<Vertex> seen, int depth, boolean nodeOnly,
             String cleanUp, boolean isSkipRelatedTo) throws AAIException, UnsupportedEncodingException {
 
index e31753c..cde316b 100644 (file)
@@ -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<Object> queryResults) {
         return output(queryResults, null);
     }