apache / skywalking

APM, Application Performance Monitoring System
https://skywalking.apache.org/
Apache License 2.0
23.82k stars 6.52k forks source link

Skywalking 8.1 + SpringCloud Gateway 2.0.4.RELEASE , CglibAopProxy Error? #5727

Closed HeXsheng closed 4 years ago

HeXsheng commented 4 years ago

Question

I found an error using Springcloud gateway: o.s.aop.framework.CglibAopProxy: Final method [public final reactor.core.publisher.Mono reactor.ipc.netty.http.client.HttpClient

Bug report

2020-10-26 11:52:28.734 INFO [-,,,] 8675 --- [ main] c.n.c.sources.URLConfigurationSource : To enable URLs as dynamic configuration sources, define System property archaius.configurationSource.additionalUrls or make config.properties available on classpath.
2020-10-26 11:52:29.103 INFO [-,,,] 8675 --- [ main] o.s.w.r.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/] onto handler of type [class org.springframework.web.reactive.resource.ResourceWebHandler]
2020-10-26 11:52:29.103 INFO [-,,,] 8675 --- [ main] o.s.w.r.handler.SimpleUrlHandlerMapping : Mapped URL path [/] onto handler of type [class org.springframework.web.reactive.resource.ResourceWebHandler]
2020-10-26 11:52:29.257 INFO [-,,,] 8675 --- [ main] o.s.aop.framework.CglibAopProxy : Final method [public final reactor.core.publisher.Mono reactor.ipc.netty.http.client.HttpClient.post(java.lang.String,java.util.function.Function)] cannot get proxied via CGLIB: Calls to this method will NOT be routed to the target instance and might lead to NPEs against uninitialized fields in the proxy instance.
2020-10-26 11:52:29.257 INFO [-,,,] 8675 --- [ main] o.s.aop.framework.CglibAopProxy : Final method [public final reactor.core.publisher.Mono reactor.ipc.netty.http.client.HttpClient.patch(java.lang.String)] cannot get proxied via CGLIB: Calls to this method will NOT be routed to the target instance and might lead to NPEs against uninitialized fields in the proxy instance.
2020-10-26 11:52:29.257 INFO [-,,,] 8675 --- [ main] o.s.aop.framework.CglibAopProxy : Final method [public final reactor.core.publisher.Mono reactor.ipc.netty.http.client.HttpClient.patch(java.lang.String,java.util.function.Function)] cannot get proxied via CGLIB: Calls to this method will NOT be routed to the target instance and might lead to NPEs against uninitialized fields in the proxy instance.
2020-10-26 11:52:29.257 INFO [-,,,] 8675 --- [ main] o.s.aop.framework.CglibAopProxy : Final method [public final reactor.core.publisher.Mono reactor.ipc.netty.http.client.HttpClient.get(java.lang.String)] cannot get proxied via CGLIB: Calls to this method will NOT be routed to the target instance and might lead to NPEs against uninitialized fields in the proxy instance.

....
2020-10-26 12:19:21.439 ERROR [xxx-gateway,,,] 9392 --- [ctor-http-nio-7] reactor.core.publisher.Operators         : Operator called default onErrorDropped

java.lang.NullPointerException: null
    at org.apache.skywalking.apm.plugin.spring.cloud.gateway.v20x.HttpClientRequestInterceptor$2.accept(HttpClientRequestInterceptor.java:87)
    at org.apache.skywalking.apm.plugin.spring.cloud.gateway.v20x.HttpClientRequestInterceptor$2.accept(HttpClientRequestInterceptor.java:83)
    at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:189)
    at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:82)
    at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:108)
    at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:82)
    at reactor.core.publisher.FluxRetryPredicate$RetryPredicateSubscriber.onNext(FluxRetryPredicate.java:81)
    at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:82)
    at org.springframework.cloud.sleuth.instrument.reactor.ScopePassingSpanSubscriber.onNext(ScopePassingSpanSubscriber.java:82)
    at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:146)

* ./logs/skywalking-api.log
WARN 2020-10-26 12:17:56:085 main AbstractClassEnhancePluginDefine : enhance class org.springframework.web.method.support.InvocableHandlerMethod by plugin org.apache.skywalking.apm.plugin.spring.mvc.v3.define.InvocableHandlerInstrumentation is not working. Because witness class org.springframework.web.servlet.view.xslt.AbstractXsltView is not existed. 
ERROR 2020-10-26 12:19:10:806 reactor-http-nio-3 InstMethodsInterWithOverrideArgs : class[class reactor.ipc.netty.http.client.HttpClient] before method[request] intercept failure 
java.lang.NullPointerException
    at org.apache.skywalking.apm.agent.core.context.ContextManager.activeSpan(ContextManager.java:162)
    at org.apache.skywalking.apm.plugin.spring.cloud.gateway.v20x.HttpClientRequestInterceptor.beforeMethod(HttpClientRequestInterceptor.java:47)
    at org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.InstMethodsInterWithOverrideArgs.intercept(InstMethodsInterWithOverrideArgs.java:75)
    at reactor.ipc.netty.http.client.HttpClient.request(HttpClient.java)
    at reactor.ipc.netty.http.client.HttpClient$$FastClassBySpringCGLIB$$df42a89a.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:746)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
    at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:100)
    at org.springframework.cloud.sleuth.instrument.web.client.TracingHttpClientInstrumentation.wrapHttpClientRequestSending(TraceWebClientAutoConfiguration.java:402)
    at org.springframework.cloud.sleuth.instrument.web.client.NettyAspect.lambda$wrapHttpClientRequestSending$0(TraceWebClientAutoConfiguration.java:323)
    at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:45)
    at reactor.core.publisher.MonoLift.subscribe(MonoLift.java:46)
    at reactor.core.publisher.MonoPeek.subscribe(MonoPeek.java:71)
    at reactor.core.publisher.MonoLift.subscribe(MonoLift.java:46)
    at reactor.core.publisher.MonoOnErrorResume.subscribe(MonoOnErrorResume.java:44)
    at reactor.core.publisher.MonoLift.subscribe(MonoLift.java:46)
    at reactor.core.publisher.Mono.subscribe(Mono.java:3088)
    at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:172)
    at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:56)
    at reactor.core.publisher.MonoLiftFuseable.subscribe(MonoLiftFuseable.java:56)
kezhenxu94 commented 4 years ago

@ascrutae can you please take a look?

@HeXsheng can you please provide a minimal reproducible demo project to help us fix this issue?

HeXsheng commented 4 years ago

Thank you for your reply. I found out the problem just now. I also introduced spring-cloud-starter-sleuth into my project. After I eliminated the dependency of spring-cloud-starter-sleuth, skywalking worked normally.