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) {