diff --git a/hypertrace-trace-enricher/hypertrace-trace-enricher-impl/src/main/java/org/hypertrace/traceenricher/enrichment/enrichers/backend/AbstractBackendEntityEnricher.java b/hypertrace-trace-enricher/hypertrace-trace-enricher-impl/src/main/java/org/hypertrace/traceenricher/enrichment/enrichers/backend/AbstractBackendEntityEnricher.java index 45cd07566..878a022f7 100644 --- a/hypertrace-trace-enricher/hypertrace-trace-enricher-impl/src/main/java/org/hypertrace/traceenricher/enrichment/enrichers/backend/AbstractBackendEntityEnricher.java +++ b/hypertrace-trace-enricher/hypertrace-trace-enricher-impl/src/main/java/org/hypertrace/traceenricher/enrichment/enrichers/backend/AbstractBackendEntityEnricher.java @@ -94,7 +94,8 @@ public void enrichTrace(StructuredTrace trace) { .filter( event -> EnrichedSpanUtils.isExitSpan(event) - && SpanAttributeUtils.isLeafSpan(structuredTraceGraph, event)) + && SpanAttributeUtils.isLeafSpan(structuredTraceGraph, event) + && canResolveBackend(structuredTraceGraph, event)) // resolve backend entity .map(event -> Pair.of(event, resolve(event, trace, structuredTraceGraph))) .filter(pair -> pair.getRight().isPresent()) @@ -107,6 +108,19 @@ public void enrichTrace(StructuredTrace trace) { } } + /** + * Method to check if backend resolution should proceed. This will enable any custom logic to be + * inserted in the implementing classes. + * + * @param structuredTraceGraph structured trace graph + * @param event leaf exit span + * @return true if backend resolution is allowed + */ + protected boolean canResolveBackend(StructuredTraceGraph structuredTraceGraph, Event event) { + // by default allow the backend resolution to proceed + return true; + } + /** Checks if the candidateEntity is indeed a backend Entity */ private boolean isValidBackendEntity( StructuredTrace trace, Event backendSpan, BackendInfo candidateInfo) {