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/18 15:29:13 UTC

[shardingsphere] branch master updated: Refactor structure of advisors.yaml (#22958)

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

zhaojinchao 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 50f743f4c75 Refactor structure of advisors.yaml (#22958)
50f743f4c75 is described below

commit 50f743f4c75eade5abb30270840d00b8dbb32f7f
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sun Dec 18 23:29:06 2022 +0800

    Refactor structure of advisors.yaml (#22958)
---
 .../yaml/entity/YamlAdvisorConfiguration.java       |  6 +-----
 .../swapper/YamlAdvisorConfigurationSwapper.java    |  9 +++++----
 .../YamlAdvisorsConfigurationSwapperTest.java       | 21 ++++++++-------------
 agent/core/src/test/resources/advisors.yaml         | 10 +++++-----
 .../wrapper/PrometheusWrapperFactory.java           |  4 ++--
 .../src/main/resources/prometheus/advisors.yaml     | 10 +++++-----
 .../src/main/resources/prometheus/metrics.yaml      |  2 +-
 7 files changed, 27 insertions(+), 35 deletions(-)

diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/entity/YamlAdvisorConfiguration.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/entity/YamlAdvisorConfiguration.java
index 3ce8478200e..83b26d42557 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/entity/YamlAdvisorConfiguration.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/entity/YamlAdvisorConfiguration.java
@@ -32,11 +32,7 @@ public final class YamlAdvisorConfiguration {
     
     private String target;
     
-    private String instanceAdvice;
-    
-    private String staticAdvice;
-    
-    private String constructAdvice;
+    private String advice;
     
     private Collection<YamlPointcutConfiguration> pointcuts = new LinkedList<>();
 }
diff --git a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorConfigurationSwapper.java b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorConfigurationSwapper.java
index 02982fb75fa..bb605d83df8 100644
--- a/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorConfigurationSwapper.java
+++ b/agent/core/src/main/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorConfigurationSwapper.java
@@ -38,16 +38,17 @@ public final class YamlAdvisorConfigurationSwapper {
      */
     public AdvisorConfiguration swapToObject(final YamlAdvisorConfiguration yamlAdvisorConfig, final String type) {
         AdvisorConfiguration result = AdvisorConfigurationRegistryFactory.getRegistry(type).getAdvisorConfiguration(yamlAdvisorConfig.getTarget());
-        if (null != yamlAdvisorConfig.getConstructAdvice() && !("".equals(yamlAdvisorConfig.getConstructAdvice()))) {
-            result.getConstructorAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.isConstructor(), yamlAdvisorConfig.getConstructAdvice()));
+        String[] constructPointcuts = yamlAdvisorConfig.getPointcuts().stream().filter(each -> "construct".equals(each.getType())).map(YamlPointcutConfiguration::getName).toArray(String[]::new);
+        if (constructPointcuts.length > 0) {
+            result.getConstructorAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.isConstructor(), yamlAdvisorConfig.getAdvice()));
         }
         String[] instanceMethodPointcuts = yamlAdvisorConfig.getPointcuts().stream().filter(each -> "instance".equals(each.getType())).map(YamlPointcutConfiguration::getName).toArray(String[]::new);
         if (instanceMethodPointcuts.length > 0) {
-            result.getInstanceMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.namedOneOf(instanceMethodPointcuts), yamlAdvisorConfig.getInstanceAdvice()));
+            result.getInstanceMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.namedOneOf(instanceMethodPointcuts), yamlAdvisorConfig.getAdvice()));
         }
         String[] staticMethodPointcuts = yamlAdvisorConfig.getPointcuts().stream().filter(each -> "static".equals(each.getType())).map(YamlPointcutConfiguration::getName).toArray(String[]::new);
         if (staticMethodPointcuts.length > 0) {
-            result.getStaticMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.namedOneOf(staticMethodPointcuts), yamlAdvisorConfig.getStaticAdvice()));
+            result.getStaticMethodAdvisors().add(new MethodAdvisorConfiguration(ElementMatchers.namedOneOf(staticMethodPointcuts), yamlAdvisorConfig.getAdvice()));
         }
         return result;
     }
diff --git a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorsConfigurationSwapperTest.java b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorsConfigurationSwapperTest.java
index cb7c545dd43..58241b33dbf 100644
--- a/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorsConfigurationSwapperTest.java
+++ b/agent/core/src/test/java/org/apache/shardingsphere/agent/core/plugin/yaml/swapper/YamlAdvisorsConfigurationSwapperTest.java
@@ -41,26 +41,24 @@ public final class YamlAdvisorsConfigurationSwapperTest {
         List<YamlAdvisorConfiguration> actualYamlAdvisorConfigs = new ArrayList<>(actual.getAdvisors());
         assertYamlAdvisorConfiguration(actualYamlAdvisorConfigs.get(0), createExpectedYamlAdvisorConfiguration("org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask",
                 "org.apache.shardingsphere.agent.metrics.api.advice.CommandExecutorTaskAdvice",
-                null, null, Arrays.asList(createExpectedYamlPointcutConfiguration("run", "instance"), createExpectedYamlPointcutConfiguration("processException", "instance"))));
+                Arrays.asList(createExpectedYamlPointcutConfiguration("run", "instance"), createExpectedYamlPointcutConfiguration("processException", "instance"))));
         assertYamlAdvisorConfiguration(actualYamlAdvisorConfigs.get(1), createExpectedYamlAdvisorConfiguration("org.apache.shardingsphere.proxy.frontend.netty.FrontendChannelInboundHandler",
                 "org.apache.shardingsphere.agent.metrics.api.advice.ChannelHandlerAdvice",
-                null, null, Arrays.asList(createExpectedYamlPointcutConfiguration("channelActive", "instance"),
+                Arrays.asList(createExpectedYamlPointcutConfiguration("channelActive", "instance"),
                         createExpectedYamlPointcutConfiguration("channelRead", "instance"), createExpectedYamlPointcutConfiguration("channelInactive", "instance"))));
         assertYamlAdvisorConfiguration(actualYamlAdvisorConfigs.get(2), createExpectedYamlAdvisorConfiguration("org.apache.shardingsphere.infra.route.engine.SQLRouteEngine",
-                "org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice", null, null, Collections.singleton(createExpectedYamlPointcutConfiguration("route", "instance"))));
+                "org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice", Collections.singleton(createExpectedYamlPointcutConfiguration("route", "instance"))));
         assertYamlAdvisorConfiguration(actualYamlAdvisorConfigs.get(3), createExpectedYamlAdvisorConfiguration(
                 "org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.BackendTransactionManager",
                 "org.apache.shardingsphere.agent.metrics.api.advice.TransactionAdvice",
-                null, null, Arrays.asList(createExpectedYamlPointcutConfiguration("commit", "instance"), createExpectedYamlPointcutConfiguration("rollback", "instance"))));
+                Arrays.asList(createExpectedYamlPointcutConfiguration("commit", "instance"), createExpectedYamlPointcutConfiguration("rollback", "instance"))));
         assertYamlAdvisorConfiguration(actualYamlAdvisorConfigs.get(4), createExpectedYamlAdvisorConfiguration("org.apache.shardingsphere.infra.config.datasource.JDBCParameterDecoratorHelper",
-                null, "org.apache.shardingsphere.agent.metrics.api.advice.DataSourceAdvice", null, Collections.singleton(createExpectedYamlPointcutConfiguration("decorate", "static"))));
+                "org.apache.shardingsphere.agent.metrics.api.advice.DataSourceAdvice", Collections.singleton(createExpectedYamlPointcutConfiguration("decorate", "static"))));
     }
     
     private void assertYamlAdvisorConfiguration(final YamlAdvisorConfiguration actual, final YamlAdvisorConfiguration expected) {
         assertThat(actual.getTarget(), is(expected.getTarget()));
-        assertThat(actual.getInstanceAdvice(), is(expected.getInstanceAdvice()));
-        assertThat(actual.getStaticAdvice(), is(expected.getStaticAdvice()));
-        assertThat(actual.getConstructAdvice(), is(expected.getConstructAdvice()));
+        assertThat(actual.getAdvice(), is(expected.getAdvice()));
         assertThat(actual.getPointcuts().isEmpty(), is(expected.getPointcuts().isEmpty()));
         Iterator<YamlPointcutConfiguration> expectedYamlPointcutConfigs = expected.getPointcuts().iterator();
         for (YamlPointcutConfiguration each : actual.getPointcuts()) {
@@ -70,13 +68,10 @@ public final class YamlAdvisorsConfigurationSwapperTest {
         }
     }
     
-    private YamlAdvisorConfiguration createExpectedYamlAdvisorConfiguration(final String target, final String instanceAdvice,
-                                                                            final String staticAdvice, final String constructAdvice, final Collection<YamlPointcutConfiguration> yamlPointcutConfigs) {
+    private YamlAdvisorConfiguration createExpectedYamlAdvisorConfiguration(final String target, final String advice, final Collection<YamlPointcutConfiguration> yamlPointcutConfigs) {
         YamlAdvisorConfiguration result = new YamlAdvisorConfiguration();
         result.setTarget(target);
-        result.setInstanceAdvice(instanceAdvice);
-        result.setStaticAdvice(staticAdvice);
-        result.setConstructAdvice(constructAdvice);
+        result.setAdvice(advice);
         result.setPointcuts(yamlPointcutConfigs);
         return result;
     }
diff --git a/agent/core/src/test/resources/advisors.yaml b/agent/core/src/test/resources/advisors.yaml
index 514545019cf..e1ff1df3f8b 100644
--- a/agent/core/src/test/resources/advisors.yaml
+++ b/agent/core/src/test/resources/advisors.yaml
@@ -17,14 +17,14 @@
 
 advisors:
   - target: org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask
-    instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.CommandExecutorTaskAdvice
+    advice: org.apache.shardingsphere.agent.metrics.api.advice.CommandExecutorTaskAdvice
     pointcuts:
       - name: run
         type: instance
       - name: processException
         type: instance
   - target: org.apache.shardingsphere.proxy.frontend.netty.FrontendChannelInboundHandler
-    instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.ChannelHandlerAdvice
+    advice: org.apache.shardingsphere.agent.metrics.api.advice.ChannelHandlerAdvice
     pointcuts:
       - name: channelActive
         type: instance
@@ -33,19 +33,19 @@ advisors:
       - name: channelInactive
         type: instance
   - target: org.apache.shardingsphere.infra.route.engine.SQLRouteEngine
-    instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice
+    advice: org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice
     pointcuts:
       - name: route
         type: instance
   - target: org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.BackendTransactionManager
-    instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.TransactionAdvice
+    advice: org.apache.shardingsphere.agent.metrics.api.advice.TransactionAdvice
     pointcuts:
       - name: commit
         type: instance
       - name: rollback
         type: instance
   - target: org.apache.shardingsphere.infra.config.datasource.JDBCParameterDecoratorHelper
-    staticAdvice: org.apache.shardingsphere.agent.metrics.api.advice.DataSourceAdvice
+    advice: org.apache.shardingsphere.agent.metrics.api.advice.DataSourceAdvice
     pointcuts:
       - name: decorate
         type: static
diff --git a/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java b/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
index fc5fed23f7c..558dbbcf02e 100644
--- a/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
+++ b/agent/plugins/metrics/type/prometheus/src/main/java/org/apache/shardingsphere/agent/metrics/prometheus/wrapper/PrometheusWrapperFactory.java
@@ -44,11 +44,11 @@ public final class PrometheusWrapperFactory implements MetricsWrapperFactory {
     private static List<Map<String, Object>> metrics;
     
     static {
-        parseMetricsYaml();
+        parseMetricsYAML();
     }
     
     @SuppressWarnings("unchecked")
-    private static void parseMetricsYaml() {
+    private static void parseMetricsYAML() {
         InputStream inputStream = PrometheusWrapperFactory.class.getResourceAsStream("/prometheus/metrics.yaml");
         Map<String, List<Map<String, Object>>> metricsMap = new Yaml().loadAs(inputStream, LinkedHashMap.class);
         metrics = metricsMap.get("metrics");
diff --git a/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/advisors.yaml b/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/advisors.yaml
index 63dddf9dc82..95ec3c23f80 100644
--- a/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/advisors.yaml
+++ b/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/advisors.yaml
@@ -17,14 +17,14 @@
 
 advisors:
   - target: org.apache.shardingsphere.proxy.frontend.command.CommandExecutorTask
-    instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.CommandExecutorTaskAdvice
+    advice: org.apache.shardingsphere.agent.metrics.api.advice.CommandExecutorTaskAdvice
     pointcuts:
       - name: run
         type: instance
       - name: processException
         type: instance
   - target: org.apache.shardingsphere.proxy.frontend.netty.FrontendChannelInboundHandler
-    instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.ChannelHandlerAdvice
+    advice: org.apache.shardingsphere.agent.metrics.api.advice.ChannelHandlerAdvice
     pointcuts:
       - name: channelActive
         type: instance
@@ -33,19 +33,19 @@ advisors:
       - name: channelInactive
         type: instance
   - target: org.apache.shardingsphere.infra.route.engine.SQLRouteEngine
-    instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice
+    advice: org.apache.shardingsphere.agent.metrics.api.advice.SQLRouteEngineAdvice
     pointcuts:
       - name: route
         type: instance
   - target: org.apache.shardingsphere.proxy.backend.communication.jdbc.transaction.JDBCBackendTransactionManager
-    instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.TransactionAdvice
+    advice: org.apache.shardingsphere.agent.metrics.api.advice.TransactionAdvice
     pointcuts:
       - name: commit
         type: instance
       - name: rollback
         type: instance
   - target: org.apache.shardingsphere.infra.parser.ShardingSphereSQLParserEngine
-    instanceAdvice: org.apache.shardingsphere.agent.metrics.api.advice.SQLParserEngineAdvice
+    advice: org.apache.shardingsphere.agent.metrics.api.advice.SQLParserEngineAdvice
     pointcuts:
       - name: parse
         type: instance
diff --git a/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/metrics.yaml b/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/metrics.yaml
index 530932db7c3..ff6da9b9e38 100644
--- a/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/metrics.yaml
+++ b/agent/plugins/metrics/type/prometheus/src/main/resources/prometheus/metrics.yaml
@@ -16,7 +16,7 @@
 #
 
 metrics:
-  - id: proxy_request_total    
+  - id: proxy_request_total
     type: COUNTER
     name: proxy_request_total
     help: the shardingsphere proxy request total