CPS-986 : Asynchronous Communication Logging
@Async
Annotated methods
In Spring Cloud Sleuth,
This feature is available for all tracer implementations.
In Spring Cloud Sleuth, It instrument async-related components so that the tracing information is passed between threads.
Case1 : If we annotate method with @Async
, Current implementation works as below where traceid and spanid is same for async call.
Current Logging Sample
{"logTimeStamp":"2022-05-09T19:49:34.126Z",
"logLevel":"DEBUG",
"traceId":"fa1fe5775ee5c1ef",
"principalId":"cps",
"serviceName":"cps-application",
"message":"data updated event to be published org.onap.cps.event.model.CpsDataUpdatedEvent]",
"spanId":"fa1fe5775ee5c1ef",
"processId":"24032",
"threadName":"qtp1680634575-28",
"class":"o.o.cps.notification.NotificationService"}
Case 2 : We should wrap our@Async
annotated method with a @NewSpan
annotation or create a new span manually to create child spanid.
Logging with child spanid
{"logTimeStamp":"2022-05-09T19:39:34.386Z",
"logLevel":"DEBUG",
"traceId":"523fcb8a6d412b8f",
"principalId":"cps",
"serviceName":"cps-application",
"message":"Execution time of : DataspaceRepository.getByName() with argument[s] = [NFP-Operational] having result = org.onap.cps.spi.entities.DataspaceEntity@5cc01260 :: 3 ms",
"spanId":"523fcb8a6d412b8f",
"processId":"23536",
"threadName":"qtp1120682507-29",
"class":"org.onap.cps.aop.CpsLoggingAspectService"}
{"logTimeStamp":"2022-05-09T19:39:35.641Z",
"logLevel":"DEBUG",
"traceId":"523fcb8a6d412b8f",
"principalId":"cps",
"serviceName":"cps-application",
"message":"data updated event to be published org.onap.cps.event.model.CpsDataUpdatedEvent]",
"spanId":"32c61a4852fb932f",
"processId":"23536",
"threadName":"qtp1120682507-29",
"class":"o.o.cps.notification.NotificationService"}