Please answer these questions before submitting pull request

- Why submit this pull request?
- [x] Bug fix
- [ ] New feature provided
- [ ] Improve performance

- Related issues

___
### Bug fix
- Bug description.
when spring controller inherit exist will produce this blocking error in 
business code,param cannot be set.
```
java.lang.IllegalArgumentException: Name for argument type [java.lang.Integer] 
not available, and parameter name information not found in class file either.
        at 
org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.updateNamedValueInfo(AbstractNamedValueMethodArgumentResolver.java:168)
        at 
org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.getNamedValueInfo(AbstractNamedValueMethodArgumentResolver.java:145)
        at 
org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:94)
        at 
org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
        at 
org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:158)
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest$original$7lyOlrxo(InvocableHandlerMethod.java:128)
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest$original$7lyOlrxo$accessor$wlLDCHc4(InvocableHandlerMethod.java)
        at 
org.springframework.web.method.support.InvocableHandlerMethod$auxiliary$vLrzxjQq.call(Unknown
 Source)
        at 
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:93)
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java)
        at 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
        at 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
        at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
        at 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at com.example.test.CustomFilter.doFilter(CustomFilter.java:37)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at 
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at 
org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at 
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
        at 
org.apache.catalina.core.StandardHostValve.invoke$original$UzEo7A0e(StandardHostValve.java:140)
        at 
org.apache.catalina.core.StandardHostValve.invoke$original$UzEo7A0e$accessor$aTwcUwgc(StandardHostValve.java)
        at 
org.apache.catalina.core.StandardHostValve$auxiliary$PnfLXAZY.call(Unknown 
Source)
        at 
org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInter.intercept(InstMethodsInter.java:93)
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java)
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
        at 
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
        at 
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        at 
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
        at 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
        at 
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)
```

example code
ParentController.java
```java
@RestController
@RequestMapping("parent")
public class ParentController {

    @GetMapping("a")
    public String a(Integer b) {
        return "parent-a" + b;
    }
}
```
ChildController.java
```java
@RestController
@RequestMapping("child")
public class ChildController extends ParentController {

}
```

 ## Without Agent
![image](https://user-images.githubusercontent.com/11530760/45133442-c49c8380-b1c7-11e8-9ecd-fb8217212fc7.png)

## With Agent

![image](https://user-images.githubusercontent.com/11530760/45133448-d54cf980-b1c7-11e8-9c7b-8259bc81e684.png)

will reproduce this error
- How to fix?

For the root reason is  bytebuddy enhace bytecode by enhancing some methods 
which is not declared by the own Class( some from parent Class),so spring will 
get wrong method name in RequestMapping.so the solution is making method 
enhancement is declared by current Class(TypeDescription in bytebuddy)
___
### New feature or improvement
- Describe the details and related test reports.


[ Full content available at: 
https://github.com/apache/incubator-skywalking/pull/1632 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to