You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/12/14 12:21:24 UTC

[shardingsphere] branch master updated: Refactor AgentAdvisors (#22870)

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

zhonghongsheng 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 9b44f872f07 Refactor AgentAdvisors (#22870)
9b44f872f07 is described below

commit 9b44f872f072febfb4ea891131a39dab74950aa9
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed Dec 14 20:21:17 2022 +0800

    Refactor AgentAdvisors (#22870)
    
    * Refactor AgentAdvisors
    
    * Remove debug log
    
    * Move YamlEngine
    
    * Adjust opentelemetry.waitMs
    
    * Adjust opentelemetry.waitMs
    
    * Adjust opentelemetry.waitMs
    
    * Fix E2E error
    
    * Refactor ShardingSphereAgent
---
 .../agent/bootstrap/ShardingSphereAgent.java         | 11 +++++++++--
 .../core/config/loader/AgentConfigurationLoader.java |  2 +-
 .../agent/core/plugin/AgentAdvisors.java             | 20 ++++++++++----------
 .../agent/core/spi/PluginServiceLoader.java          |  3 +--
 .../{config/yaml/engine => yaml}/YamlEngine.java     |  2 +-
 .../agent/core/plugin/AgentAdvisorsTest.java         |  2 +-
 .../agent/core/transformer/AgentTransformerTest.java |  2 +-
 .../opentelemetry/OpenTelemetryPluginE2EIT.java      | 12 +++---------
 8 files changed, 27 insertions(+), 27 deletions(-)

diff --git a/agent/bootstrap/src/main/java/org/apache/shardingsphere/agent/bootstrap/ShardingSphereAgent.java b/agent/bootstrap/src/main/java/org/apache/shardingsphere/agent/bootstrap/ShardingSphereAgent.java
index 8d32943e36e..28b2069fb16 100644
--- a/agent/bootstrap/src/main/java/org/apache/shardingsphere/agent/bootstrap/ShardingSphereAgent.java
+++ b/agent/bootstrap/src/main/java/org/apache/shardingsphere/agent/bootstrap/ShardingSphereAgent.java
@@ -54,13 +54,20 @@ public final class ShardingSphereAgent {
     public static void premain(final String args, final Instrumentation instrumentation) throws IOException {
         AgentConfiguration agentConfig = AgentConfigurationLoader.load();
         AgentConfigurationRegistry.INSTANCE.put(agentConfig);
-        AgentAdvisors agentAdvisors = new AgentAdvisors(new AgentPluginLoader().load(), isEnhancedForProxy());
+        boolean isEnhancedForProxy = isEnhancedForProxy();
+        AgentAdvisors agentAdvisors = loadAgentAdvisors(isEnhancedForProxy);
         setUpAgentBuilder(instrumentation, agentAdvisors);
-        if (agentAdvisors.isEnhancedForProxy()) {
+        if (isEnhancedForProxy) {
             setupPluginBootService(agentConfig.getPlugins());
         }
     }
     
+    private static AgentAdvisors loadAgentAdvisors(final boolean isEnhancedForProxy) throws IOException {
+        AgentAdvisors result = new AgentAdvisors(new AgentPluginLoader().load());
+        result.setEnhancedForProxy(isEnhancedForProxy);
+        return result;
+    }
+    
     private static boolean isEnhancedForProxy() {
         try {
             Class.forName("org.apache.shardingsphere.proxy.Bootstrap");
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/config/loader/AgentConfigurationLoader.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/config/loader/AgentConfigurationLoader.java
index 50ad55a0605..ffd9055b147 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/config/loader/AgentConfigurationLoader.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/config/loader/AgentConfigurationLoader.java
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.agent.config.AgentConfiguration;
 import org.apache.shardingsphere.agent.core.config.yaml.YamlAgentConfiguration;
 import org.apache.shardingsphere.agent.core.config.yaml.swapper.YamlAgentConfigurationSwapper;
 import org.apache.shardingsphere.agent.core.config.path.AgentPathBuilder;
-import org.apache.shardingsphere.agent.core.config.yaml.engine.YamlEngine;
+import org.apache.shardingsphere.agent.core.yaml.YamlEngine;
 
 import java.io.File;
 import java.io.IOException;
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentAdvisors.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentAdvisors.java
index 439520d1f6e..85eff203123 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentAdvisors.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/AgentAdvisors.java
@@ -19,6 +19,7 @@ package org.apache.shardingsphere.agent.core.plugin;
 
 import com.google.common.collect.ImmutableMap;
 import lombok.Getter;
+import lombok.Setter;
 import net.bytebuddy.description.type.TypeDescription;
 import net.bytebuddy.matcher.ElementMatcher;
 import net.bytebuddy.matcher.ElementMatcher.Junction;
@@ -34,7 +35,6 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
-import java.util.Set;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -46,19 +46,19 @@ public final class AgentAdvisors {
     private final Map<String, ClassAdvisor> advisors;
     
     @Getter
-    private final boolean isEnhancedForProxy;
+    @Setter
+    private boolean isEnhancedForProxy = true;
     
-    public AgentAdvisors(final Collection<PluginJar> pluginJars, final boolean isEnhancedForProxy) {
+    public AgentAdvisors(final Collection<PluginJar> pluginJars) {
         AgentClassLoader.init(pluginJars);
-        advisors = loadAdvisors(AgentClassLoader.getClassLoader());
-        this.isEnhancedForProxy = isEnhancedForProxy;
+        advisors = getAllAdvisors(AgentClassLoader.getClassLoader());
     }
     
-    private Map<String, ClassAdvisor> loadAdvisors(final ClassLoader classLoader) {
+    private Map<String, ClassAdvisor> getAllAdvisors(final ClassLoader classLoader) {
         Map<String, ClassAdvisor> result = new HashMap<>();
-        Collection<String> pluginNames = getPluginNames();
+        Collection<String> pluginTypes = getPluginTypes();
         for (AdvisorDefinitionService each : PluginServiceLoader.newServiceInstances(AdvisorDefinitionService.class, classLoader)) {
-            if (pluginNames.contains(each.getType())) {
+            if (pluginTypes.contains(each.getType())) {
                 Collection<ClassAdvisor> advisors = isEnhancedForProxy ? each.getProxyAdvisors() : each.getJDBCAdvisors();
                 result.putAll(advisors.stream().collect(Collectors.toMap(ClassAdvisor::getTargetClassName, Function.identity())));
             }
@@ -66,9 +66,9 @@ public final class AgentAdvisors {
         return ImmutableMap.<String, ClassAdvisor>builder().putAll(result).build();
     }
     
-    private Collection<String> getPluginNames() {
+    private Collection<String> getPluginTypes() {
         AgentConfiguration agentConfig = AgentConfigurationRegistry.INSTANCE.get(AgentConfiguration.class);
-        Set<String> result = new HashSet<>();
+        Collection<String> result = new HashSet<>();
         if (null != agentConfig && null != agentConfig.getPlugins()) {
             result.addAll(agentConfig.getPlugins().keySet());
         }
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/spi/PluginServiceLoader.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/spi/PluginServiceLoader.java
index 1316cfa49e6..19914321920 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/spi/PluginServiceLoader.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/spi/PluginServiceLoader.java
@@ -22,7 +22,6 @@ import lombok.NoArgsConstructor;
 
 import java.util.Collection;
 import java.util.LinkedList;
-import java.util.List;
 import java.util.ServiceLoader;
 
 /**
@@ -40,7 +39,7 @@ public final class PluginServiceLoader {
      * @return service instances
      */
     public static <T> Collection<T> newServiceInstances(final Class<T> service, final ClassLoader classLoader) {
-        List<T> result = new LinkedList<>();
+        Collection<T> result = new LinkedList<>();
         ServiceLoader.load(service, classLoader).forEach(result::add);
         return result;
     }
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/engine/YamlEngine.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/yaml/YamlEngine.java
similarity index 96%
rename from agent/core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/engine/YamlEngine.java
rename to agent/core/src/main/java/org/apache/shardingsphere/agent/core/yaml/YamlEngine.java
index abfc8197470..605a89cb932 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/config/yaml/engine/YamlEngine.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/yaml/YamlEngine.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.shardingsphere.agent.core.config.yaml.engine;
+package org.apache.shardingsphere.agent.core.yaml;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
diff --git a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/AgentAdvisorsTest.java b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/AgentAdvisorsTest.java
index 45e67e95fa9..1bddd1b4f79 100644
--- a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/AgentAdvisorsTest.java
+++ b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/AgentAdvisorsTest.java
@@ -43,7 +43,7 @@ import static org.junit.Assert.assertTrue;
 
 public final class AgentAdvisorsTest {
     
-    private static final AgentAdvisors AGENT_ADVISORS = new AgentAdvisors(Collections.emptyList(), true);
+    private static final AgentAdvisors AGENT_ADVISORS = new AgentAdvisors(Collections.emptyList());
     
     private static final TypePool POOL = TypePool.Default.ofSystemLoader();
     
diff --git a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformerTest.java b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformerTest.java
index 25b209c86dc..2ef28a3c52b 100644
--- a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformerTest.java
+++ b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/transformer/AgentTransformerTest.java
@@ -57,7 +57,7 @@ import static org.junit.Assert.assertArrayEquals;
 
 public final class AgentTransformerTest {
     
-    private static final AgentAdvisors AGENT_ADVISORS = new AgentAdvisors(Collections.emptyList(), true);
+    private static final AgentAdvisors AGENT_ADVISORS = new AgentAdvisors(Collections.emptyList());
     
     private static ResettableClassFileTransformer byteBuddyAgent;
     
diff --git a/test/e2e/agent/plugins/opentelemetry/src/test/java/org/apache/shardingsphere/test/e2e/agent/opentelemetry/OpenTelemetryPluginE2EIT.java b/test/e2e/agent/plugins/opentelemetry/src/test/java/org/apache/shardingsphere/test/e2e/agent/opentelemetry/OpenTelemetryPluginE2EIT.java
index 01a3b424555..8f158d63717 100644
--- a/test/e2e/agent/plugins/opentelemetry/src/test/java/org/apache/shardingsphere/test/e2e/agent/opentelemetry/OpenTelemetryPluginE2EIT.java
+++ b/test/e2e/agent/plugins/opentelemetry/src/test/java/org/apache/shardingsphere/test/e2e/agent/opentelemetry/OpenTelemetryPluginE2EIT.java
@@ -18,9 +18,7 @@
 package org.apache.shardingsphere.test.e2e.agent.opentelemetry;
 
 import com.google.gson.Gson;
-import com.google.gson.JsonArray;
 import com.google.gson.JsonParser;
-import lombok.extern.slf4j.Slf4j;
 import org.apache.shardingsphere.test.e2e.agent.common.BasePluginE2EIT;
 import org.apache.shardingsphere.test.e2e.agent.common.env.E2ETestEnvironment;
 import org.apache.shardingsphere.test.e2e.agent.common.util.OkHttpUtils;
@@ -34,11 +32,10 @@ import java.util.Map;
 import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertNotNull;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.fail;
 
-@Slf4j
 public final class OpenTelemetryPluginE2EIT extends BasePluginE2EIT {
     
     private static final String ROOT_INVOKE = "/shardingsphere/rootinvoke/";
@@ -56,12 +53,9 @@ public final class OpenTelemetryPluginE2EIT extends BasePluginE2EIT {
         } catch (final InterruptedException ignore) {
         }
         String url = props.getProperty("opentelemetry.zipkin.url") + props.getProperty("opentelemetry.servername");
-        log.error("=======url=======" + url);
-        log.error("=======OkHttpUtils.getInstance().get(url))=======" + OkHttpUtils.getInstance().get(url));
-        JsonArray array = JsonParser.parseString(OkHttpUtils.getInstance().get(url)).getAsJsonArray().get(0).getAsJsonArray();
-        Gson gson = new Gson();
         Collection<TracingResult> traces = new LinkedList<>();
-        array.forEach(each -> traces.add(gson.fromJson(each, TracingResult.class)));
+        Gson gson = new Gson();
+        JsonParser.parseString(OkHttpUtils.getInstance().get(url)).getAsJsonArray().get(0).getAsJsonArray().forEach(each -> traces.add(gson.fromJson(each, TracingResult.class)));
         traces.forEach(this::assertTrace);
     }