You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2021/08/02 07:10:15 UTC

[servicecomb-java-chassis] branch master updated: #SCB-2310 Controls the order of configuration change event listening (#2490)

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

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


The following commit(s) were added to refs/heads/master by this push:
     new ed787e3  #SCB-2310 Controls the order of configuration change event listening (#2490)
ed787e3 is described below

commit ed787e399816e82c76bcd9c328e2127a40fbf073
Author: zyl <72...@users.noreply.github.com>
AuthorDate: Mon Aug 2 15:10:10 2021 +0800

    #SCB-2310 Controls the order of configuration change event listening (#2490)
    
    * #SCB-2310 Controls the order of configuration change event listening
    
    * # modify UT
    
    * # modify event type
---
 .../core/ConfigurationSpringInitializer.java         |  6 ++++--
 .../org/apache/servicecomb/config/ConfigUtil.java    |  4 ++--
 ...nt.java => DynamicConfigurationChangedEvent.java} |  4 ++--
 ...java => RefreshGovernanceConfigurationEvent.java} |  4 ++--
 ...java => GovernanceConfigurationChangedEvent.java} |  4 ++--
 ...EventManager.java => GovernanceEventManager.java} |  2 +-
 .../handler/AbstractGovernanceHandler.java           |  8 ++++----
 .../governance/properties/GovernanceProperties.java  |  9 ++++-----
 .../governance/GovernancePropertiesTest.java         | 20 ++++++++++----------
 .../ServiceCombConfigurationEventAdapter.java        | 11 ++++++-----
 10 files changed, 37 insertions(+), 35 deletions(-)

diff --git a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
index 52e2b2b..4f495a2 100644
--- a/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
+++ b/core/src/main/java/org/apache/servicecomb/core/ConfigurationSpringInitializer.java
@@ -31,7 +31,8 @@ import org.apache.servicecomb.config.ConfigMapping;
 import org.apache.servicecomb.config.ConfigUtil;
 import org.apache.servicecomb.config.YAMLUtil;
 import org.apache.servicecomb.config.archaius.sources.MicroserviceConfigLoader;
-import org.apache.servicecomb.config.event.ConfigurationChangedEvent;
+import org.apache.servicecomb.config.event.DynamicConfigurationChangedEvent;
+import org.apache.servicecomb.config.event.RefreshGovernanceConfigurationEvent;
 import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource;
 import org.apache.servicecomb.foundation.bootstrap.BootStrapService;
 import org.apache.servicecomb.foundation.common.event.EventManager;
@@ -123,7 +124,7 @@ public class ConfigurationSpringInitializer extends PropertySourcesPlaceholderCo
   }
 
   @Subscribe
-  public void onConfigurationDataChanged(ConfigurationChangedEvent event) {
+  public void onConfigurationDataChanged(DynamicConfigurationChangedEvent event) {
     try {
       WatchedUpdateResult data = event.getEvent();
       if (data.getDeleted() != null) {
@@ -138,6 +139,7 @@ public class ConfigurationSpringInitializer extends PropertySourcesPlaceholderCo
     } catch (Exception e) {
       LOGGER.error("", e);
     }
+    EventManager.post(new RefreshGovernanceConfigurationEvent(event.getEvent()));
   }
 
   private void syncFromSpring(Environment environment) {
diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java
index 8d81c23..ecb5193 100644
--- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java
+++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java
@@ -44,7 +44,7 @@ import org.apache.servicecomb.config.archaius.scheduler.NeverStartPollingSchedul
 import org.apache.servicecomb.config.archaius.sources.ConfigModel;
 import org.apache.servicecomb.config.archaius.sources.MicroserviceConfigLoader;
 import org.apache.servicecomb.config.archaius.sources.MicroserviceConfigurationSource;
-import org.apache.servicecomb.config.event.ConfigurationChangedEvent;
+import org.apache.servicecomb.config.event.DynamicConfigurationChangedEvent;
 import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource;
 import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSourceLoader;
 import org.apache.servicecomb.foundation.common.event.EventManager;
@@ -316,7 +316,7 @@ public final class ConfigUtil {
         }
       }
 
-      EventManager.post(new ConfigurationChangedEvent(watchedUpdateResult));
+      EventManager.post(new DynamicConfigurationChangedEvent(watchedUpdateResult));
     }
   }
 
diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/ConfigurationChangedEvent.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/DynamicConfigurationChangedEvent.java
similarity index 89%
copy from foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/ConfigurationChangedEvent.java
copy to foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/DynamicConfigurationChangedEvent.java
index e7e8584..b466d21 100644
--- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/ConfigurationChangedEvent.java
+++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/DynamicConfigurationChangedEvent.java
@@ -19,10 +19,10 @@ package org.apache.servicecomb.config.event;
 
 import com.netflix.config.WatchedUpdateResult;
 
-public class ConfigurationChangedEvent {
+public class DynamicConfigurationChangedEvent {
   private final WatchedUpdateResult event;
 
-  public ConfigurationChangedEvent(WatchedUpdateResult event) {
+  public DynamicConfigurationChangedEvent(WatchedUpdateResult event) {
     this.event = event;
   }
 
diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/ConfigurationChangedEvent.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/RefreshGovernanceConfigurationEvent.java
similarity index 89%
rename from foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/ConfigurationChangedEvent.java
rename to foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/RefreshGovernanceConfigurationEvent.java
index e7e8584..a3e1d79 100644
--- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/ConfigurationChangedEvent.java
+++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/event/RefreshGovernanceConfigurationEvent.java
@@ -19,10 +19,10 @@ package org.apache.servicecomb.config.event;
 
 import com.netflix.config.WatchedUpdateResult;
 
-public class ConfigurationChangedEvent {
+public class RefreshGovernanceConfigurationEvent {
   private final WatchedUpdateResult event;
 
-  public ConfigurationChangedEvent(WatchedUpdateResult event) {
+  public RefreshGovernanceConfigurationEvent(WatchedUpdateResult event) {
     this.event = event;
   }
 
diff --git a/governance/src/main/java/org/apache/servicecomb/governance/event/ConfigurationChangedEvent.java b/governance/src/main/java/org/apache/servicecomb/governance/event/GovernanceConfigurationChangedEvent.java
similarity index 88%
rename from governance/src/main/java/org/apache/servicecomb/governance/event/ConfigurationChangedEvent.java
rename to governance/src/main/java/org/apache/servicecomb/governance/event/GovernanceConfigurationChangedEvent.java
index b7efbab..492a6ca 100644
--- a/governance/src/main/java/org/apache/servicecomb/governance/event/ConfigurationChangedEvent.java
+++ b/governance/src/main/java/org/apache/servicecomb/governance/event/GovernanceConfigurationChangedEvent.java
@@ -19,10 +19,10 @@ package org.apache.servicecomb.governance.event;
 
 import java.util.Set;
 
-public class ConfigurationChangedEvent {
+public class GovernanceConfigurationChangedEvent {
   private Set<String> changedConfigurations;
 
-  public ConfigurationChangedEvent(Set<String> changedConfigurations) {
+  public GovernanceConfigurationChangedEvent(Set<String> changedConfigurations) {
     this.changedConfigurations = changedConfigurations;
   }
 
diff --git a/governance/src/main/java/org/apache/servicecomb/governance/event/EventManager.java b/governance/src/main/java/org/apache/servicecomb/governance/event/GovernanceEventManager.java
similarity index 96%
rename from governance/src/main/java/org/apache/servicecomb/governance/event/EventManager.java
rename to governance/src/main/java/org/apache/servicecomb/governance/event/GovernanceEventManager.java
index 733d48b..01bdfaa 100644
--- a/governance/src/main/java/org/apache/servicecomb/governance/event/EventManager.java
+++ b/governance/src/main/java/org/apache/servicecomb/governance/event/GovernanceEventManager.java
@@ -19,7 +19,7 @@ package org.apache.servicecomb.governance.event;
 
 import com.google.common.eventbus.EventBus;
 
-public class EventManager {
+public class GovernanceEventManager {
   private static EventBus eventBus = new EventBus();
 
   public static EventBus getEventBus() {
diff --git a/governance/src/main/java/org/apache/servicecomb/governance/handler/AbstractGovernanceHandler.java b/governance/src/main/java/org/apache/servicecomb/governance/handler/AbstractGovernanceHandler.java
index c070b77..ce46f37 100644
--- a/governance/src/main/java/org/apache/servicecomb/governance/handler/AbstractGovernanceHandler.java
+++ b/governance/src/main/java/org/apache/servicecomb/governance/handler/AbstractGovernanceHandler.java
@@ -21,8 +21,8 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.servicecomb.governance.MatchersManager;
-import org.apache.servicecomb.governance.event.ConfigurationChangedEvent;
-import org.apache.servicecomb.governance.event.EventManager;
+import org.apache.servicecomb.governance.event.GovernanceConfigurationChangedEvent;
+import org.apache.servicecomb.governance.event.GovernanceEventManager;
 import org.apache.servicecomb.governance.marker.GovernanceRequest;
 import org.apache.servicecomb.governance.policy.AbstractPolicy;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,7 +38,7 @@ public abstract class AbstractGovernanceHandler<PROCESSOR, POLICY extends Abstra
   protected MatchersManager matchersManager;
 
   protected AbstractGovernanceHandler() {
-    EventManager.register(this);
+    GovernanceEventManager.register(this);
   }
 
   public <R> PROCESSOR getActuator(GovernanceRequest governanceRequest) {
@@ -68,7 +68,7 @@ public abstract class AbstractGovernanceHandler<PROCESSOR, POLICY extends Abstra
   abstract protected PROCESSOR createProcessor(POLICY policy);
 
   @Subscribe
-  public void onDynamicConfigurationListener(ConfigurationChangedEvent event) {
+  public void onDynamicConfigurationListener(GovernanceConfigurationChangedEvent event) {
     event.getChangedConfigurations().forEach(v -> map.remove(v));
   }
 }
diff --git a/governance/src/main/java/org/apache/servicecomb/governance/properties/GovernanceProperties.java b/governance/src/main/java/org/apache/servicecomb/governance/properties/GovernanceProperties.java
index 0ca4e45..530f032 100644
--- a/governance/src/main/java/org/apache/servicecomb/governance/properties/GovernanceProperties.java
+++ b/governance/src/main/java/org/apache/servicecomb/governance/properties/GovernanceProperties.java
@@ -26,8 +26,8 @@ import java.util.Set;
 
 import org.apache.servicecomb.governance.MicroserviceMeta;
 import org.apache.servicecomb.governance.entity.Configurable;
-import org.apache.servicecomb.governance.event.ConfigurationChangedEvent;
-import org.apache.servicecomb.governance.event.EventManager;
+import org.apache.servicecomb.governance.event.GovernanceConfigurationChangedEvent;
+import org.apache.servicecomb.governance.event.GovernanceEventManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.InitializingBean;
@@ -42,7 +42,6 @@ import org.springframework.util.StringUtils;
 import org.yaml.snakeyaml.TypeDescription;
 import org.yaml.snakeyaml.Yaml;
 import org.yaml.snakeyaml.constructor.Constructor;
-import org.yaml.snakeyaml.error.YAMLException;
 import org.yaml.snakeyaml.representer.Representer;
 
 import com.google.common.eventbus.Subscribe;
@@ -67,7 +66,7 @@ public abstract class GovernanceProperties<T extends Configurable> implements In
   protected GovernanceProperties(String key) {
     configKey = key;
     representer.getPropertyUtils().setSkipMissingProperties(true);
-    EventManager.register(this);
+    GovernanceEventManager.register(this);
     entityClass = getEntityClass();
   }
 
@@ -77,7 +76,7 @@ public abstract class GovernanceProperties<T extends Configurable> implements In
   }
 
   @Subscribe
-  public void onConfigurationChangedEvent(ConfigurationChangedEvent event) {
+  public void onConfigurationChangedEvent(GovernanceConfigurationChangedEvent event) {
     for (String key : event.getChangedConfigurations()) {
       if (key.startsWith(configKey + ".")) {
         String mapKey = key.substring((configKey + ".").length());
diff --git a/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java b/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java
index 97c1a43..3aa25b6 100644
--- a/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java
+++ b/governance/src/test/java/org/apache/servicecomb/governance/GovernancePropertiesTest.java
@@ -24,8 +24,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.servicecomb.governance.event.ConfigurationChangedEvent;
-import org.apache.servicecomb.governance.event.EventManager;
+import org.apache.servicecomb.governance.event.GovernanceConfigurationChangedEvent;
+import org.apache.servicecomb.governance.event.GovernanceEventManager;
 import org.apache.servicecomb.governance.marker.Matcher;
 import org.apache.servicecomb.governance.marker.TrafficMarker;
 import org.apache.servicecomb.governance.policy.AbstractPolicy;
@@ -107,7 +107,7 @@ public class GovernancePropertiesTest {
   public void tearDown() {
     Set<String> keys = dynamicValues.keySet();
     keys.forEach(k -> dynamicValues.put(k, null));
-    EventManager.post(new ConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
+    GovernanceEventManager.post(new GovernanceConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
   }
 
   @Test
@@ -141,7 +141,7 @@ public class GovernancePropertiesTest {
         + "  - apiPath:\n"
         + "      exact: \"/hello2\"\n"
         + "    name: match0");
-    EventManager.post(new ConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
+    GovernanceEventManager.post(new GovernanceConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
     markers = matchProperties.getParsedEntity();
     Assert.assertEquals(5, markers.size());
     tearDown();
@@ -160,7 +160,7 @@ public class GovernancePropertiesTest {
         + "      exact: \"/hello2\"\n"
         + "    name: match0");
 
-    EventManager.post(new ConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
+    GovernanceEventManager.post(new GovernanceConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
 
     Map<String, TrafficMarker> markers = matchProperties.getParsedEntity();
     Assert.assertEquals(5, markers.size());
@@ -186,7 +186,7 @@ public class GovernancePropertiesTest {
         + "maxConcurrentCalls: 3\n"
         + "maxWaitDuration: 3000");
 
-    EventManager.post(new ConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
+    GovernanceEventManager.post(new GovernanceConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
 
     Map<String, BulkheadPolicy> policies = bulkheadProperties.getParsedEntity();
     Assert.assertEquals(2, policies.size());
@@ -214,7 +214,7 @@ public class GovernancePropertiesTest {
         + "maxConcurrentCalls: 0\n"
         + "maxWaitDuration: 2S");
 
-    EventManager.post(new ConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
+    GovernanceEventManager.post(new GovernanceConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
 
     Map<String, BulkheadPolicy> policies = bulkheadProperties.getParsedEntity();
     Assert.assertEquals(4, policies.size());
@@ -263,7 +263,7 @@ public class GovernancePropertiesTest {
         + "slidingWindowType: test\n"
         + "slidingWindowSize: 1M");
 
-    EventManager.post(new ConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
+    GovernanceEventManager.post(new GovernanceConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
 
     Map<String, CircuitBreakerPolicy> policies = circuitBreakerProperties.getParsedEntity();
     Assert.assertEquals(4, policies.size());
@@ -288,7 +288,7 @@ public class GovernancePropertiesTest {
         + "failureRateThreshold: 20.33\n"
         + "slowCallRateThreshold: 0.01");
 
-    EventManager.post(new ConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
+    GovernanceEventManager.post(new GovernanceConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
 
     Map<String, CircuitBreakerPolicy> policies = circuitBreakerProperties.getParsedEntity();
     CircuitBreakerPolicy policy = policies.get("type1");
@@ -326,7 +326,7 @@ public class GovernancePropertiesTest {
         + "maxConcurrentCalls: 3\n"
         + "maxWaitDuration: 1M");
 
-    EventManager.post(new ConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
+    GovernanceEventManager.post(new GovernanceConfigurationChangedEvent(new HashSet<>(dynamicValues.keySet())));
 
     Map<String, BulkheadPolicy> policies = bulkheadProperties.getParsedEntity();
     Assert.assertEquals(3, policies.size());
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ServiceCombConfigurationEventAdapter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ServiceCombConfigurationEventAdapter.java
index 3a8b375..58e41b8 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ServiceCombConfigurationEventAdapter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ServiceCombConfigurationEventAdapter.java
@@ -22,8 +22,10 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.servicecomb.config.event.ConfigurationChangedEvent;
+import org.apache.servicecomb.config.event.RefreshGovernanceConfigurationEvent;
 import org.apache.servicecomb.foundation.common.event.EventManager;
+import org.apache.servicecomb.governance.event.GovernanceConfigurationChangedEvent;
+import org.apache.servicecomb.governance.event.GovernanceEventManager;
 import org.springframework.stereotype.Component;
 
 import com.google.common.eventbus.Subscribe;
@@ -35,15 +37,14 @@ public class ServiceCombConfigurationEventAdapter {
   }
 
   @Subscribe
-  public void onConfigurationChangedEvent(ConfigurationChangedEvent event) {
+  public void onConfigurationChangedEvent(RefreshGovernanceConfigurationEvent event) {
     Set<String> changedKeys = new HashSet<>();
     addMap(changedKeys, event.getEvent().getAdded());
     addMap(changedKeys, event.getEvent().getDeleted());
     addMap(changedKeys, event.getEvent().getChanged());
     addMap(changedKeys, event.getEvent().getComplete());
-    org.apache.servicecomb.governance.event.ConfigurationChangedEvent newEvent =
-        new org.apache.servicecomb.governance.event.ConfigurationChangedEvent(changedKeys);
-    org.apache.servicecomb.governance.event.EventManager.post(newEvent);
+    GovernanceConfigurationChangedEvent newEvent = new GovernanceConfigurationChangedEvent(changedKeys);
+    GovernanceEventManager.post(newEvent);
   }
 
   private void addMap(Set<String> keys, Map<String, Object> changed) {