-
Notifications
You must be signed in to change notification settings - Fork 312
Description
Hi,
When diagnosing some performance issues, I noticed that the execution times for child spans in traces are incorrect for APIs that are implemented using Spring Async controller feature with Completable futures.
Take S3.HeadBucket
child span for example - the waterfall view clearly shows that the exec time is 223ms. However, in the span summary we see that exec time is reported as 111ms (exactly half).
Below is a sample code to show how we use the Completable futures:
@GetMapping("/my-service-path")
public CompletableFuture<ResponseEntity<MyResponseObject>> getSomeInfo() {
return CompletableFuture.supplyAsync(
TracedSupplier.from(() -> {
//internalServicelogic
}),
executorService
);
}
Annoyances:
We extensively use Completable futures in spring controller for all our java services. Given this issue, the time spent charts incorrectly represent the time spent in the service v/s the downstream components. This defeats the purpose of using APM tracing to a large extent for us.