Skip to content

Commit 86e1010

Browse files
authored
chore | removing entities edge list formation in api trace graph (#418)
* chore | remove entities in structured trace graph (#422)
1 parent 27e3b8a commit 86e1010

File tree

4 files changed

+11
-74
lines changed

4 files changed

+11
-74
lines changed

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ hypertrace-grpc-client-utils ={ module = "org.hypertrace.core.grpcutils:grpc-cli
1616
hypertrace-grpc-client-rxUtils = { module = "org.hypertrace.core.grpcutils:grpc-client-rx-utils", version.ref = "hypertrace-grpc-utils"}
1717
hypertrace-serviceFramework-metrics = { module = "org.hypertrace.core.serviceframework:platform-metrics", version.ref = "hypertrace-serviceFramework" }
1818
hypertrace-serviceFramework-framework = { module = "org.hypertrace.core.serviceframework:platform-service-framework", version.ref = "hypertrace-serviceFramework" }
19-
hypertrace-data-model = { module ="org.hypertrace.core.datamodel:data-model", version = "0.1.30" }
19+
hypertrace-data-model = { module ="org.hypertrace.core.datamodel:data-model", version = "0.1.31" }
2020
hypertrace-kafkaStreams-framework = { module = "org.hypertrace.core.kafkastreams.framework:kafka-streams-framework", version.ref = "hypertrace-kafkaStreams" }
2121
hypertrace-kafkaStreams-avroPartitioners = { module = "org.hypertrace.core.kafkastreams.framework:avro-partitioners", version.ref = "hypertrace-kafkaStreams" }
2222
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
5252

5353
reactivex-rxjava3 = { module = "io.reactivex.rxjava3:rxjava", version = "3.0.11" }
5454

55-
json-json = { module = "org.json:json", version = "20230618" }
55+
json-json = { module = "org.json:json", version = "20231013" }
5656

5757
#grpc dependency
5858
grpc-netty = { module = "io.grpc:grpc-netty", version.ref = "grpc" }

hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/main/java/org/hypertrace/traceenricher/trace/util/GraphBuilderUtil.java

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ static boolean isDifferentTrace(StructuredTrace cachedTrace, StructuredTrace tra
2323
}
2424

2525
static boolean isStructuredTraceChanged(StructuredTrace cachedTrace, StructuredTrace trace) {
26-
return isDifferentTrace(cachedTrace, trace)
27-
|| isTraceEventsChanged(cachedTrace, trace)
28-
|| isTraceEntitiesChanged(cachedTrace, trace);
26+
return isDifferentTrace(cachedTrace, trace) || isTraceEventsChanged(cachedTrace, trace);
2927
}
3028

3129
/** Check if the events or theirs edges has changed */
@@ -41,19 +39,4 @@ static boolean isTraceEventsChanged(StructuredTrace cachedTrace, StructuredTrace
4139
}
4240
return false;
4341
}
44-
45-
/** Check if the entities or theirs edges has changed */
46-
static boolean isTraceEntitiesChanged(StructuredTrace cachedTrace, StructuredTrace trace) {
47-
48-
// trace entities internally changed (full trace comparison is costly, so we are doing only with
49-
// required fields)
50-
if (isDifferentTrace(cachedTrace, trace)
51-
|| cachedTrace.getEntityList().size() != trace.getEntityList().size()
52-
|| cachedTrace.getEntityEdgeList().size() != trace.getEntityEdgeList().size()) {
53-
LOG.debug(
54-
"Cached and Input trace are not same. Reason: they are having different size either for entities");
55-
return true;
56-
}
57-
return false;
58-
}
5942
}

hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/main/java/org/hypertrace/traceenricher/trace/util/StructuredTraceGraphBuilder.java

Lines changed: 8 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.slf4j.LoggerFactory;
99

1010
public class StructuredTraceGraphBuilder {
11+
1112
private static final Logger LOG = LoggerFactory.getLogger(StructuredTraceGraphBuilder.class);
1213

1314
private static final ThreadLocal<StructuredTraceGraph> cachedGraphThreadLocal =
@@ -17,14 +18,9 @@ public class StructuredTraceGraphBuilder {
1718
public static StructuredTraceGraph buildGraph(StructuredTrace trace) {
1819
StructuredTrace cachedTrace = cachedTraceThreadLocal.get();
1920
StructuredTraceGraph cachedGraph = cachedGraphThreadLocal.get();
20-
boolean shouldRebuildTraceEventsGraph =
21-
GraphBuilderUtil.isTraceEventsChanged(cachedTrace, trace);
22-
boolean shouldRebuildTraceEntitiesGraph =
23-
GraphBuilderUtil.isTraceEntitiesChanged(cachedTrace, trace);
24-
2521
if (null == cachedGraph
2622
|| GraphBuilderUtil.isDifferentTrace(cachedTrace, trace)
27-
|| (shouldRebuildTraceEventsGraph && shouldRebuildTraceEntitiesGraph)) {
23+
|| GraphBuilderUtil.isTraceEventsChanged(cachedTrace, trace)) {
2824
Instant start = Instant.now();
2925
StructuredTraceGraph graph = new StructuredTraceGraph(trace);
3026
if (LOG.isDebugEnabled()) {
@@ -39,65 +35,25 @@ public static StructuredTraceGraph buildGraph(StructuredTrace trace) {
3935
return graph;
4036
}
4137

42-
if (shouldRebuildTraceEventsGraph || shouldRebuildTraceEntitiesGraph) {
43-
Instant start = Instant.now();
44-
if (shouldRebuildTraceEventsGraph) {
45-
cachedGraph.reCreateTraceEventsGraph(trace);
46-
} else {
47-
cachedGraph.reCreateTraceEntitiesGraph(trace);
48-
}
49-
if (LOG.isDebugEnabled()) {
50-
LOG.debug(
51-
"Time taken in building TraceEventsGraph, duration_millis:{} for tenantId:{}",
52-
Duration.between(start, Instant.now()).toMillis(),
53-
trace.getCustomerId());
54-
}
55-
cachedTraceThreadLocal.set(StructuredTrace.newBuilder(trace).build());
56-
cachedGraphThreadLocal.set(cachedGraph);
57-
debugGraph("Case: Partially building the graph.", cachedGraph, trace);
58-
return cachedGraph;
59-
}
60-
6138
debugGraph("Case: Not building the graph.", cachedGraphThreadLocal.get(), trace);
6239
return cachedGraph;
6340
}
6441

6542
private static void debugGraph(
6643
String logPrefix, StructuredTraceGraph graph, StructuredTrace trace) {
67-
if (null != graph
68-
&& (null == graph.getTraceEntitiesGraph() || null == graph.getTraceEventsGraph())) {
44+
if (null != graph && null == graph.getTraceEventsGraph()) {
6945
LOG.info(
7046
logPrefix
71-
+ "StructuredTraceGraph is not built correctly, trace {}, Is events graph non-null: {}."
72-
+ " Is entities graph non-null: {}",
47+
+ "StructuredTraceGraph is not built correctly, trace {}, Is events graph non-null:"
48+
+ " {}.",
7349
trace,
74-
(null != graph.getTraceEventsGraph()),
75-
(null != graph.getTraceEntitiesGraph()));
50+
(null != graph.getTraceEventsGraph()));
7651

7752
// build the graph again and check
7853
StructuredTraceGraph tempGraph = new StructuredTraceGraph(trace);
7954
LOG.info(
80-
logPrefix
81-
+ "Recreating StructuredTraceGraph. Is events graph non-null: {}."
82-
+ " Is entities graph non-null: {}",
83-
(null != tempGraph.getTraceEventsGraph()),
84-
(null != tempGraph.getTraceEntitiesGraph()));
85-
86-
tempGraph.reCreateTraceEventsGraph(trace);
87-
LOG.info(
88-
logPrefix
89-
+ "Recreating events graph. Is events graph non-null: {}."
90-
+ " Is entities graph non-null: {}",
91-
(null != tempGraph.getTraceEventsGraph()),
92-
(null != tempGraph.getTraceEntitiesGraph()));
93-
94-
tempGraph.reCreateTraceEntitiesGraph(trace);
95-
LOG.info(
96-
logPrefix
97-
+ "Recreating entities graph. Is events graph non-null: {}."
98-
+ " Is entities graph non-null: {}",
99-
(null != tempGraph.getTraceEventsGraph()),
100-
(null != tempGraph.getTraceEntitiesGraph()));
55+
logPrefix + "Recreating StructuredTraceGraph. Is events graph non-null: {}.",
56+
(null != tempGraph.getTraceEventsGraph()));
10157
}
10258
}
10359
}

hypertrace-trace-enricher/hypertrace-trace-enricher-api/src/test/java/org/hypertrace/traceenricher/trace/util/GraphBuilderUtilTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ public void testIsTraceEventsChanged() {
115115
when(underTestTrace.getEventEdgeList()).thenReturn(List.of(eventEdge1, eventEdge2));
116116

117117
Assertions.assertTrue(GraphBuilderUtil.isTraceEventsChanged(cachedTrace, underTestTrace));
118-
Assertions.assertFalse(GraphBuilderUtil.isTraceEntitiesChanged(cachedTrace, underTestTrace));
119118
}
120119

121120
@Test
@@ -148,6 +147,5 @@ public void testIsTraceEntitiesChanged() {
148147
when(underTestTrace.getEventEdgeList()).thenReturn(List.of(eventEdge1, eventEdge2));
149148

150149
Assertions.assertFalse(GraphBuilderUtil.isTraceEventsChanged(cachedTrace, underTestTrace));
151-
Assertions.assertTrue(GraphBuilderUtil.isTraceEntitiesChanged(cachedTrace, underTestTrace));
152150
}
153151
}

0 commit comments

Comments
 (0)