micrometer-metrics/tracing

SpanAspect does not take into account proxy objects

Opened this issue · 5 comments

Hello. I tried to use @NewSpan on spring data repositories, but it idin't work

NewSpan newSpan = method.getAnnotation(NewSpan.class);

method here is from proxy and annotation not found.

I fixed that by using org.apache.commons.lang3.reflect.MethodUtils.getAnnotation(method, NewSpan::class.java, true, true)

Please fix them in library

Can you create a simple reproducer for this issue or a test that shows that this doesn't work?

@marcingrzejszczak reproducer with instructions in readme is here https://github.com/lex-em/micrometer-tracing-on-proxy
CustomSpanAspect class contains additional comments

@shakuzen @jonatan-ivanov what is your opinion on adding a dependency to apache commons to have this functionality? I guess we would need to do the same in micrometer for those aspects

I'm thinking if:

  1. We can copy that single method: getAnnotation
  2. Document that methods like these should be either wrapped or .observed(methodReference) should be used
  3. Instrument Spring Data repositories

That's not copying of just a single method 😬