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 <[email protected]>
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);

Reply via email to