diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java index 6d4c224d8..9712981a4 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java @@ -4,16 +4,9 @@ import com.ai.cloud.skywalking.logging.LogManager; import com.ai.cloud.skywalking.logging.Logger; import com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext; import com.ai.cloud.skywalking.plugin.interceptor.loader.InterceptorInstanceLoader; -import net.bytebuddy.ByteBuddy; -import net.bytebuddy.dynamic.loading.ClassLoadingStrategy; import net.bytebuddy.implementation.bind.annotation.*; -import sun.tools.jar.resources.jar; -import java.io.BufferedInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; import java.lang.reflect.Method; -import java.security.ProtectionDomain; import java.util.concurrent.Callable; /** @@ -42,16 +35,17 @@ public class ClassInstanceMethodsInterceptor { } catch (Throwable t) { logger.error("class[{}] before method[{}] intercept failue:{}", new Object[] {obj.getClass(), method.getName(), t.getMessage()}, t); } - if (!result.isContinue()) { - return result._ret(); - } Object ret = null; try { - ret = zuper.call(); + if (!result.isContinue()) { + ret = result._ret(); + }else { + ret = zuper.call(); + } } catch (Throwable t) { try { - interceptor.handleMethodException(t, instanceContext, interceptorContext, ret); + interceptor.handleMethodException(t, instanceContext, interceptorContext); } catch (Throwable t2) { logger.error("class[{}] handle method[{}] exception failue:{}", new Object[] {obj.getClass(), method.getName(), t2.getMessage()}, t2); } diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassStaticMethodsInterceptor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassStaticMethodsInterceptor.java index 8ba42c473..b4b00ecf9 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassStaticMethodsInterceptor.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassStaticMethodsInterceptor.java @@ -36,16 +36,18 @@ public class ClassStaticMethodsInterceptor { } catch (Throwable t) { logger.error("class[{}] before static method[{}] intercept failue:{}", new Object[] {clazz, method.getName(), t.getMessage()}, t); } - if (!result.isContinue()) { - return result._ret(); - } + Object ret = null; try { - ret = zuper.call(); + if (!result.isContinue()) { + ret = result._ret(); + }else { + ret = zuper.call(); + } } catch (Throwable t) { try { - interceptor.handleMethodException(t, interceptorContext, ret); + interceptor.handleMethodException(t, interceptorContext); } catch (Throwable t2) { logger.error("class[{}] handle static method[{}] exception failue:{}", new Object[] {clazz, method.getName(), t2.getMessage()}, t2); } diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/InstanceMethodsAroundInterceptor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/InstanceMethodsAroundInterceptor.java index 1dc45fe7c..73183a678 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/InstanceMethodsAroundInterceptor.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/InstanceMethodsAroundInterceptor.java @@ -9,5 +9,5 @@ public interface InstanceMethodsAroundInterceptor { public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret); - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret); + public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext); } diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/MethodInterceptResult.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/MethodInterceptResult.java index e4ed4dea9..ff4cb8e06 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/MethodInterceptResult.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/MethodInterceptResult.java @@ -1,5 +1,8 @@ package com.ai.cloud.skywalking.plugin.interceptor.enhance; +/** + * 通过拦截器的before方法,指定被拦截方法的返回值,不再调用原始方法取得返回值 + */ public class MethodInterceptResult { private boolean isContinue = true; diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/StaticMethodsAroundInterceptor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/StaticMethodsAroundInterceptor.java index 6c683e7de..c429153e5 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/StaticMethodsAroundInterceptor.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/StaticMethodsAroundInterceptor.java @@ -6,5 +6,5 @@ public interface StaticMethodsAroundInterceptor { public Object afterMethod(MethodInvokeContext interceptorContext, Object ret); - public void handleMethodException(Throwable t, MethodInvokeContext interceptorContext, Object ret); + public void handleMethodException(Throwable t, MethodInvokeContext interceptorContext); } diff --git a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestAroundInterceptor.java b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestAroundInterceptor.java index 24523e994..3e62ac053 100644 --- a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestAroundInterceptor.java +++ b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestAroundInterceptor.java @@ -27,7 +27,7 @@ public class TestAroundInterceptor implements InstanceMethodsAroundInterceptor { } @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) { + public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { } } diff --git a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java index 7e146e9da..ed43948fb 100644 --- a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java +++ b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java @@ -26,8 +26,7 @@ public class TestAroundInterceptor implements InstanceMethodsAroundInterceptor { } @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext, Object ret) { + public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { // TODO Auto-generated method stub } diff --git a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestStaticAroundInterceptor.java b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestStaticAroundInterceptor.java index 7462389cb..de81e8bf1 100644 --- a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestStaticAroundInterceptor.java +++ b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestStaticAroundInterceptor.java @@ -18,8 +18,7 @@ public class TestStaticAroundInterceptor implements StaticMethodsAroundIntercept } @Override - public void handleMethodException(Throwable t, - MethodInvokeContext interceptorContext, Object ret) { + public void handleMethodException(Throwable t, MethodInvokeContext interceptorContext) { // TODO Auto-generated method stub } diff --git a/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/MonitorFilterInterceptor.java b/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/MonitorFilterInterceptor.java index 753c0e17c..c344a864d 100644 --- a/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/MonitorFilterInterceptor.java +++ b/skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/src/main/java/com/ai/cloud/skywalking/plugin/dubbo/MonitorFilterInterceptor.java @@ -94,8 +94,7 @@ public class MonitorFilterInterceptor implements InstanceMethodsAroundIntercepto } @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext, Object ret) { + public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { dealException(t, context); } diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java index c5ad51438..e4bea745f 100644 --- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java +++ b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java @@ -63,9 +63,7 @@ public class HttpClientExecuteInterceptor implements InstanceMethodsAroundInterc } @Override - public void handleMethodException(Throwable t, - EnhancedClassInstanceContext context, - InstanceMethodInvokeContext interceptorContext, Object ret) { + public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { Object[] allArguments = interceptorContext.allArguments(); if (allArguments[0] == null || allArguments[1] == null) { // illegal args, can't trace. ignore. diff --git a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisBaseInterceptor.java b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisBaseInterceptor.java index 2686f576d..211c1a5c8 100644 --- a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisBaseInterceptor.java +++ b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/JedisBaseInterceptor.java @@ -43,7 +43,7 @@ public abstract class JedisBaseInterceptor extends SimpleObjectFirstInvokeInterc } @Override - public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) { + public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext) { rpcClientInvokeMonitor.occurException(t); } } diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/TomcatPluginInterceptor.java b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/TomcatPluginInterceptor.java index 40d86607d..f6c0558cc 100644 --- a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/TomcatPluginInterceptor.java +++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/TomcatPluginInterceptor.java @@ -68,6 +68,6 @@ public class TomcatPluginInterceptor implements InstanceMethodsAroundInterceptor @Override public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) { - new RPCServerInvokeMonitor().occurException(t); + // DO Nothing } }