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);
}