diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 69e719e4b..2357e6e3e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,7 +16,7 @@ hypertrace-grpc-client-utils ={ module = "org.hypertrace.core.grpcutils:grpc-cli hypertrace-grpc-client-rxUtils = { module = "org.hypertrace.core.grpcutils:grpc-client-rx-utils", version.ref = "hypertrace-grpc-utils"} hypertrace-serviceFramework-metrics = { module = "org.hypertrace.core.serviceframework:platform-metrics", version.ref = "hypertrace-serviceFramework" } hypertrace-serviceFramework-framework = { module = "org.hypertrace.core.serviceframework:platform-service-framework", version.ref = "hypertrace-serviceFramework" } -hypertrace-data-model = { module ="org.hypertrace.core.datamodel:data-model", version = "0.1.30" } +hypertrace-data-model = { module ="org.hypertrace.core.datamodel:data-model", version = "0.1.31" } hypertrace-kafkaStreams-framework = { module = "org.hypertrace.core.kafkastreams.framework:kafka-streams-framework", version.ref = "hypertrace-kafkaStreams" } hypertrace-kafkaStreams-avroPartitioners = { module = "org.hypertrace.core.kafkastreams.framework:avro-partitioners", version.ref = "hypertrace-kafkaStreams" } hypertrace-kafkaStreams-weightedGroupPartitioners = { module = "org.hypertrace.core.kafkastreams.framework:weighted-group-partitioner", version.ref = "hypertrace-kafkaStreams" } @@ -52,7 +52,7 @@ uadetector-resources = { module = "net.sf.uadetector:uadetector-resources",versi reactivex-rxjava3 = { module = "io.reactivex.rxjava3:rxjava", version = "3.0.11" } -json-json = { module = "org.json:json", version = "20230618" } +json-json = { module = "org.json:json", version = "20231013" } #grpc dependency grpc-netty = { module = "io.grpc:grpc-netty", version.ref = "grpc" } diff --git a/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/main/java/org/hypertrace/traceenricher/trace/util/GraphBuilderUtil.java b/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/main/java/org/hypertrace/traceenricher/trace/util/GraphBuilderUtil.java index 188977f10..dd1653078 100644 --- a/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/main/java/org/hypertrace/traceenricher/trace/util/GraphBuilderUtil.java +++ b/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/main/java/org/hypertrace/traceenricher/trace/util/GraphBuilderUtil.java @@ -23,9 +23,7 @@ static boolean isDifferentTrace(StructuredTrace cachedTrace, StructuredTrace tra } static boolean isStructuredTraceChanged(StructuredTrace cachedTrace, StructuredTrace trace) { - return isDifferentTrace(cachedTrace, trace) - || isTraceEventsChanged(cachedTrace, trace) - || isTraceEntitiesChanged(cachedTrace, trace); + return isDifferentTrace(cachedTrace, trace) || isTraceEventsChanged(cachedTrace, trace); } /** Check if the events or theirs edges has changed */ @@ -41,19 +39,4 @@ static boolean isTraceEventsChanged(StructuredTrace cachedTrace, StructuredTrace } return false; } - - /** Check if the entities or theirs edges has changed */ - static boolean isTraceEntitiesChanged(StructuredTrace cachedTrace, StructuredTrace trace) { - - // trace entities internally changed (full trace comparison is costly, so we are doing only with - // required fields) - if (isDifferentTrace(cachedTrace, trace) - || cachedTrace.getEntityList().size() != trace.getEntityList().size() - || cachedTrace.getEntityEdgeList().size() != trace.getEntityEdgeList().size()) { - LOG.debug( - "Cached and Input trace are not same. Reason: they are having different size either for entities"); - return true; - } - return false; - } } diff --git a/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/main/java/org/hypertrace/traceenricher/trace/util/StructuredTraceGraphBuilder.java b/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/main/java/org/hypertrace/traceenricher/trace/util/StructuredTraceGraphBuilder.java index 8a054c27d..0a959e769 100644 --- a/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/main/java/org/hypertrace/traceenricher/trace/util/StructuredTraceGraphBuilder.java +++ b/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/main/java/org/hypertrace/traceenricher/trace/util/StructuredTraceGraphBuilder.java @@ -8,6 +8,7 @@ import org.slf4j.LoggerFactory; public class StructuredTraceGraphBuilder { + private static final Logger LOG = LoggerFactory.getLogger(StructuredTraceGraphBuilder.class); private static final ThreadLocal cachedGraphThreadLocal = @@ -17,14 +18,9 @@ public class StructuredTraceGraphBuilder { public static StructuredTraceGraph buildGraph(StructuredTrace trace) { StructuredTrace cachedTrace = cachedTraceThreadLocal.get(); StructuredTraceGraph cachedGraph = cachedGraphThreadLocal.get(); - boolean shouldRebuildTraceEventsGraph = - GraphBuilderUtil.isTraceEventsChanged(cachedTrace, trace); - boolean shouldRebuildTraceEntitiesGraph = - GraphBuilderUtil.isTraceEntitiesChanged(cachedTrace, trace); - if (null == cachedGraph || GraphBuilderUtil.isDifferentTrace(cachedTrace, trace) - || (shouldRebuildTraceEventsGraph && shouldRebuildTraceEntitiesGraph)) { + || GraphBuilderUtil.isTraceEventsChanged(cachedTrace, trace)) { Instant start = Instant.now(); StructuredTraceGraph graph = new StructuredTraceGraph(trace); if (LOG.isDebugEnabled()) { @@ -39,65 +35,25 @@ public static StructuredTraceGraph buildGraph(StructuredTrace trace) { return graph; } - if (shouldRebuildTraceEventsGraph || shouldRebuildTraceEntitiesGraph) { - Instant start = Instant.now(); - if (shouldRebuildTraceEventsGraph) { - cachedGraph.reCreateTraceEventsGraph(trace); - } else { - cachedGraph.reCreateTraceEntitiesGraph(trace); - } - if (LOG.isDebugEnabled()) { - LOG.debug( - "Time taken in building TraceEventsGraph, duration_millis:{} for tenantId:{}", - Duration.between(start, Instant.now()).toMillis(), - trace.getCustomerId()); - } - cachedTraceThreadLocal.set(StructuredTrace.newBuilder(trace).build()); - cachedGraphThreadLocal.set(cachedGraph); - debugGraph("Case: Partially building the graph.", cachedGraph, trace); - return cachedGraph; - } - debugGraph("Case: Not building the graph.", cachedGraphThreadLocal.get(), trace); return cachedGraph; } private static void debugGraph( String logPrefix, StructuredTraceGraph graph, StructuredTrace trace) { - if (null != graph - && (null == graph.getTraceEntitiesGraph() || null == graph.getTraceEventsGraph())) { + if (null != graph && null == graph.getTraceEventsGraph()) { LOG.info( logPrefix - + "StructuredTraceGraph is not built correctly, trace {}, Is events graph non-null: {}." - + " Is entities graph non-null: {}", + + "StructuredTraceGraph is not built correctly, trace {}, Is events graph non-null:" + + " {}.", trace, - (null != graph.getTraceEventsGraph()), - (null != graph.getTraceEntitiesGraph())); + (null != graph.getTraceEventsGraph())); // build the graph again and check StructuredTraceGraph tempGraph = new StructuredTraceGraph(trace); LOG.info( - logPrefix - + "Recreating StructuredTraceGraph. Is events graph non-null: {}." - + " Is entities graph non-null: {}", - (null != tempGraph.getTraceEventsGraph()), - (null != tempGraph.getTraceEntitiesGraph())); - - tempGraph.reCreateTraceEventsGraph(trace); - LOG.info( - logPrefix - + "Recreating events graph. Is events graph non-null: {}." - + " Is entities graph non-null: {}", - (null != tempGraph.getTraceEventsGraph()), - (null != tempGraph.getTraceEntitiesGraph())); - - tempGraph.reCreateTraceEntitiesGraph(trace); - LOG.info( - logPrefix - + "Recreating entities graph. Is events graph non-null: {}." - + " Is entities graph non-null: {}", - (null != tempGraph.getTraceEventsGraph()), - (null != tempGraph.getTraceEntitiesGraph())); + logPrefix + "Recreating StructuredTraceGraph. Is events graph non-null: {}.", + (null != tempGraph.getTraceEventsGraph())); } } } diff --git a/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/test/java/org/hypertrace/traceenricher/trace/util/GraphBuilderUtilTest.java b/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/test/java/org/hypertrace/traceenricher/trace/util/GraphBuilderUtilTest.java index bfe92f369..939d8cfe8 100644 --- a/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/test/java/org/hypertrace/traceenricher/trace/util/GraphBuilderUtilTest.java +++ b/hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/test/java/org/hypertrace/traceenricher/trace/util/GraphBuilderUtilTest.java @@ -115,7 +115,6 @@ public void testIsTraceEventsChanged() { when(underTestTrace.getEventEdgeList()).thenReturn(List.of(eventEdge1, eventEdge2)); Assertions.assertTrue(GraphBuilderUtil.isTraceEventsChanged(cachedTrace, underTestTrace)); - Assertions.assertFalse(GraphBuilderUtil.isTraceEntitiesChanged(cachedTrace, underTestTrace)); } @Test @@ -148,6 +147,5 @@ public void testIsTraceEntitiesChanged() { when(underTestTrace.getEventEdgeList()).thenReturn(List.of(eventEdge1, eventEdge2)); Assertions.assertFalse(GraphBuilderUtil.isTraceEventsChanged(cachedTrace, underTestTrace)); - Assertions.assertTrue(GraphBuilderUtil.isTraceEntitiesChanged(cachedTrace, underTestTrace)); } }