This is an automated email from the ASF dual-hosted git repository.

zhangyonglun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 3e37440  repair agent bug (#8888)
3e37440 is described below

commit 3e374401d344037d620c30647a911f4a3dfbed3f
Author: xiaoyu <[email protected]>
AuthorDate: Tue Jan 5 12:18:35 2021 +0800

    repair agent bug (#8888)
---
 .../transformer/ShardingSphereTransformer.java     | 27 ++++++++++++----------
 .../agent/core/plugin/loader/PluginLoader.java     |  2 +-
 .../zipkin/advice/CommandExecutorTaskAdvice.java   |  5 +++-
 3 files changed, 20 insertions(+), 14 deletions(-)

diff --git 
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java
 
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java
index f4c0811..94c7266 100644
--- 
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java
+++ 
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/bytebuddy/transformer/ShardingSphereTransformer.java
@@ -51,58 +51,61 @@ public final class ShardingSphereTransformer implements 
Transformer {
     @Override
     public Builder<?> transform(final Builder<?> builder, final 
TypeDescription typeDescription, final ClassLoader classLoader, final 
JavaModule module) {
         if (pluginLoader.containsType(typeDescription)) {
-            Builder<?> newBuilder = builder;
-            newBuilder = newBuilder.defineField(EXTRA_DATA, Object.class, 
Opcodes.ACC_PRIVATE | Opcodes.ACC_VOLATILE)
+            Builder<?> result = builder;
+            result = result.defineField(EXTRA_DATA, Object.class, 
Opcodes.ACC_PRIVATE | Opcodes.ACC_VOLATILE)
                     .implement(TargetObject.class)
                     .intercept(FieldAccessor.ofField(EXTRA_DATA));
             PluginInterceptorPoint pluginInterceptorPoint = 
pluginLoader.loadPluginInterceptorPoint(typeDescription);
-            newBuilder = interceptorConstructorPoint(pluginInterceptorPoint, 
newBuilder);
-            newBuilder = 
interceptorClassStaticMethodPoint(pluginInterceptorPoint, newBuilder);
-            newBuilder = 
interceptorInstanceMethodPoint(pluginInterceptorPoint, newBuilder);
-            return newBuilder;
+            result = interceptorConstructorPoint(pluginInterceptorPoint, 
result);
+            result = interceptorClassStaticMethodPoint(pluginInterceptorPoint, 
result);
+            result = interceptorInstanceMethodPoint(pluginInterceptorPoint, 
result);
+            return result;
         }
         return builder;
     }
     
     private Builder<?> interceptorConstructorPoint(final 
PluginInterceptorPoint pluginInterceptorPoint, final Builder<?> builder) {
+        Builder<?> result = builder;
         for (ConstructorPoint each : 
pluginInterceptorPoint.getConstructorPoints()) {
             try {
                 ConstructorMethodInterceptor interceptor = new 
ConstructorMethodInterceptor(pluginLoader.getOrCreateInstance(each.getAdvice()));
-                return 
builder.constructor(each.getMatcher()).intercept(SuperMethodCall.INSTANCE.andThen(MethodDelegation.withDefaultConfiguration().to(interceptor)));
+                result = 
result.constructor(each.getMatcher()).intercept(SuperMethodCall.INSTANCE.andThen(MethodDelegation.withDefaultConfiguration().to(interceptor)));
                 // CHECKSTYLE:OFF
             } catch (final Throwable ex) {
                 // CHECKSTYLE:ON
                 log.error("Failed to load advice class: {}", each.getAdvice(), 
ex);
             }
         }
-        return builder;
+        return result;
     }
     
     private Builder<?> interceptorClassStaticMethodPoint(final 
PluginInterceptorPoint pluginInterceptorPoint, final Builder<?> builder) {
+        Builder<?> result = builder;
         for (ClassStaticMethodPoint each : 
pluginInterceptorPoint.getClassStaticMethodPoints()) {
             try {
                 StaticMethodAroundInterceptor interceptor = new 
StaticMethodAroundInterceptor(pluginLoader.getOrCreateInstance(each.getAdvice()));
-                return 
builder.method(each.getMatcher()).intercept(MethodDelegation.withDefaultConfiguration().to(interceptor));
+                result = 
result.method(each.getMatcher()).intercept(MethodDelegation.withDefaultConfiguration().to(interceptor));
                 // CHECKSTYLE:OFF
             } catch (final Throwable ex) {
                 // CHECKSTYLE:ON
                 log.error("Failed to load advice class: {}", each.getAdvice(), 
ex);
             }
         }
-        return builder;
+        return result;
     }
     
     private Builder<?> interceptorInstanceMethodPoint(final 
PluginInterceptorPoint pluginInterceptorPoint, final Builder<?> builder) {
+        Builder<?> result = builder;
         for (InstanceMethodPoint each : 
pluginInterceptorPoint.getInstanceMethodPoints()) {
             try {
                 MethodAroundInterceptor interceptor = new 
MethodAroundInterceptor(pluginLoader.getOrCreateInstance(each.getAdvice()));
-                return 
builder.method(each.getMatcher()).intercept(MethodDelegation.withDefaultConfiguration().to(interceptor));
+                result = 
result.method(each.getMatcher()).intercept(MethodDelegation.withDefaultConfiguration().to(interceptor));
                 // CHECKSTYLE:OFF
             } catch (final Throwable ex) {
                 // CHECKSTYLE:ON
                 log.error("Failed to load advice class: {}", each.getAdvice(), 
ex);
             }
         }
-        return builder;
+        return result;
     }
 }
diff --git 
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/loader/PluginLoader.java
 
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/loader/PluginLoader.java
index 5df306c..8f39fe7 100644
--- 
a/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/loader/PluginLoader.java
+++ 
b/shardingsphere-agent/shardingsphere-agent-core/src/main/java/org/apache/shardingsphere/agent/core/plugin/loader/PluginLoader.java
@@ -112,9 +112,9 @@ public final class PluginLoader extends ClassLoader 
implements Closeable {
                 JarFile jar = new JarFile(each, true);
                 jars.add(new PluginJar(jar, each));
                 log.info("Loaded jar {}.", each.getName());
-                loadPluginDefinitionServices(ignoredPluginNames, pointMap);
             }
         }
+        loadPluginDefinitionServices(ignoredPluginNames, pointMap);
         interceptorPointMap = ImmutableMap.<String, 
PluginInterceptorPoint>builder().putAll(pointMap).build();
     }
     
diff --git 
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java
 
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java
index 4b417f2..3a9ae4d 100644
--- 
a/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java
+++ 
b/shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/shardingsphere-agent-tracing-zipkin/src/main/java/org/apache/shardingsphere/agent/plugin/tracing/zipkin/advice/CommandExecutorTaskAdvice.java
@@ -19,6 +19,7 @@ package 
org.apache.shardingsphere.agent.plugin.tracing.zipkin.advice;
 
 import brave.Span;
 import brave.Tracing;
+import java.lang.reflect.Field;
 import lombok.SneakyThrows;
 import org.apache.shardingsphere.agent.api.advice.MethodAroundAdvice;
 import org.apache.shardingsphere.agent.api.result.MethodInvocationResult;
@@ -48,7 +49,9 @@ public final class CommandExecutorTaskAdvice implements 
MethodAroundAdvice {
     @SneakyThrows
     @Override
     public void afterMethod(final TargetObject target, final Method method, 
final Object[] args, final MethodInvocationResult result) {
-        BackendConnection connection = (BackendConnection) 
CommandExecutorTask.class.getDeclaredField("backendConnection").get(target);
+        Field field = 
CommandExecutorTask.class.getDeclaredField("backendConnection");
+        field.setAccessible(true);
+        BackendConnection connection = (BackendConnection) field.get(target);
         Span span = (Span) 
ExecutorDataMap.getValue().remove(ZipkinConstants.ROOT_SPAN);
         span.tag(ZipkinConstants.Tags.CONNECTION_COUNT, 
String.valueOf(connection.getConnectionSize()));
         span.flush();

Reply via email to