You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2019/06/06 23:33:07 UTC
[skywalking] branch master updated: Refactor ConfigWatcherRegister
to only read interested configs. fixes #2834 (#2835)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new 57aedb8 Refactor ConfigWatcherRegister to only read interested configs. fixes #2834 (#2835)
57aedb8 is described below
commit 57aedb8017eb0bff7468ac935ae5b58282eaedbe
Author: kezhenxu94 <ke...@163.com>
AuthorDate: Fri Jun 7 07:32:57 2019 +0800
Refactor ConfigWatcherRegister to only read interested configs. fixes #2834 (#2835)
---
.../oap/server/configuration/api/ConfigWatcherRegister.java | 10 +++++++---
.../server/configuration/api/ConfigWatcherRegisterTest.java | 4 +++-
.../server/configuration/grpc/GRPCConfigWatcherRegister.java | 9 +++++++--
3 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/oap-server/server-configuration/configuration-api/src/main/java/org/apache/skywalking/oap/server/configuration/api/ConfigWatcherRegister.java b/oap-server/server-configuration/configuration-api/src/main/java/org/apache/skywalking/oap/server/configuration/api/ConfigWatcherRegister.java
index 7bc1e09..8028f1a 100644
--- a/oap-server/server-configuration/configuration-api/src/main/java/org/apache/skywalking/oap/server/configuration/api/ConfigWatcherRegister.java
+++ b/oap-server/server-configuration/configuration-api/src/main/java/org/apache/skywalking/oap/server/configuration/api/ConfigWatcherRegister.java
@@ -64,12 +64,12 @@ public abstract class ConfigWatcherRegister implements DynamicConfigurationServi
logger.info("Current configurations after the bootstrap sync." + LINE_SEPARATOR + register.toString());
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(
- new RunnableWithExceptionProtection(() -> configSync(),
+ new RunnableWithExceptionProtection(this::configSync,
t -> logger.error("Sync config center error.", t)), syncPeriod, syncPeriod, TimeUnit.SECONDS);
}
void configSync() {
- ConfigTable configTable = readConfig();
+ ConfigTable configTable = readConfig(register.keys());
configTable.getItems().forEach(item -> {
String itemName = item.getName();
@@ -99,7 +99,7 @@ public abstract class ConfigWatcherRegister implements DynamicConfigurationServi
logger.trace("Current configurations after the sync." + LINE_SEPARATOR + register.toString());
}
- public abstract ConfigTable readConfig();
+ public abstract ConfigTable readConfig(Set<String> keys);
public class Register {
private Map<String, WatcherHolder> register = new HashMap<>();
@@ -116,6 +116,10 @@ public abstract class ConfigWatcherRegister implements DynamicConfigurationServi
return register.get(name);
}
+ public Set<String> keys() {
+ return register.keySet();
+ }
+
@Override public String toString() {
StringBuilder registerTableDescription = new StringBuilder();
registerTableDescription.append("Following dynamic config items are available.").append(LINE_SEPARATOR);
diff --git a/oap-server/server-configuration/configuration-api/src/test/java/org/apache/skywalking/oap/server/configuration/api/ConfigWatcherRegisterTest.java b/oap-server/server-configuration/configuration-api/src/test/java/org/apache/skywalking/oap/server/configuration/api/ConfigWatcherRegisterTest.java
index 159837e..037d23d 100644
--- a/oap-server/server-configuration/configuration-api/src/test/java/org/apache/skywalking/oap/server/configuration/api/ConfigWatcherRegisterTest.java
+++ b/oap-server/server-configuration/configuration-api/src/test/java/org/apache/skywalking/oap/server/configuration/api/ConfigWatcherRegisterTest.java
@@ -22,6 +22,8 @@ import org.apache.skywalking.oap.server.library.module.*;
import org.junit.*;
import org.powermock.reflect.Whitebox;
+import java.util.Set;
+
/**
* @author wusheng
*/
@@ -80,7 +82,7 @@ public class ConfigWatcherRegisterTest {
public static class MockConfigWatcherRegister extends ConfigWatcherRegister {
- @Override public ConfigTable readConfig() {
+ @Override public ConfigTable readConfig(Set<String> keys) {
ConfigTable.ConfigItem item1 = new ConfigTable.ConfigItem("module.provider.prop1", "abc");
ConfigTable.ConfigItem item2 = new ConfigTable.ConfigItem("MockModule.provider.prop2", "abc2");
diff --git a/oap-server/server-configuration/grpc-configuration-sync/src/main/java/org/apache/skywalking/oap/server/configuration/grpc/GRPCConfigWatcherRegister.java b/oap-server/server-configuration/grpc-configuration-sync/src/main/java/org/apache/skywalking/oap/server/configuration/grpc/GRPCConfigWatcherRegister.java
index e883ec3..e3b9f0a 100644
--- a/oap-server/server-configuration/grpc-configuration-sync/src/main/java/org/apache/skywalking/oap/server/configuration/grpc/GRPCConfigWatcherRegister.java
+++ b/oap-server/server-configuration/grpc-configuration-sync/src/main/java/org/apache/skywalking/oap/server/configuration/grpc/GRPCConfigWatcherRegister.java
@@ -23,6 +23,8 @@ import org.apache.skywalking.oap.server.configuration.api.*;
import org.apache.skywalking.oap.server.configuration.service.*;
import org.slf4j.*;
+import java.util.Set;
+
/**
* @author wusheng
*/
@@ -38,12 +40,15 @@ public class GRPCConfigWatcherRegister extends ConfigWatcherRegister {
stub = ConfigurationServiceGrpc.newBlockingStub(NettyChannelBuilder.forAddress(settings.getHost(), settings.getPort()).usePlaintext().build());
}
- @Override public ConfigTable readConfig() {
+ @Override public ConfigTable readConfig(Set<String> keys) {
ConfigTable table = new ConfigTable();
try {
ConfigurationResponse response = stub.call(ConfigurationRequest.newBuilder().setClusterName(settings.getClusterName()).build());
response.getConfigTableList().forEach(config -> {
- table.add(new ConfigTable.ConfigItem(config.getName(), config.getValue()));
+ final String name = config.getName();
+ if (keys.contains(name)) {
+ table.add(new ConfigTable.ConfigItem(name, config.getValue()));
+ }
});
} catch (Exception e) {
logger.error("Remote config center [" + settings + "] is not available.", e);