You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/02/03 05:56:52 UTC

[incubator-servicecomb-java-chassis] 03/03: SCB-315 Config Center module can't get config by DynamicPropertyFactory.getInstance().getStringProperty, so has to use ConcurrentCompositeConfiguration

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

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

commit 153cdeb71ebe706f69927a5ad35b58461da37f6b
Author: jeho0815 <je...@email.com>
AuthorDate: Sat Feb 3 11:47:24 2018 +0800

    SCB-315 Config Center module can't get config by DynamicPropertyFactory.getInstance().getStringProperty, so has to use ConcurrentCompositeConfiguration
---
 .../foundation/vertx/AddressResolverConfig.java    | 24 ++++++++++++++--------
 .../vertx/TestAddressResolverConfig.java           |  4 ++++
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
index b503643..1b1a804 100644
--- a/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
+++ b/foundations/foundation-vertx/src/main/java/org/apache/servicecomb/foundation/vertx/AddressResolverConfig.java
@@ -21,6 +21,8 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.commons.configuration.Configuration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.netflix.config.DynamicPropertyFactory;
 
@@ -28,6 +30,8 @@ import io.vertx.core.dns.AddressResolverOptions;
 
 public class AddressResolverConfig {
 
+  private static final Logger LOGGER = LoggerFactory.getLogger(AddressResolverConfig.class);
+
   /**
    * get the target endpoints with custom address resolve config
    * @param tag config tag, such as sc.consumer or cc.consumer
@@ -56,27 +60,27 @@ public class AddressResolverConfig {
             "addressResolver." + tag + ".optResourceEnabled",
             "addressResolver.optResourceEnabled"));
     addressResolverOptions
-        .setCacheMinTimeToLive(getIntProperty(configSource,
+        .setCacheMinTimeToLive(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_CACHE_MIN_TIME_TO_LIVE,
             "addressResolver." + tag + ".cacheMinTimeToLive",
             "addressResolver.cacheMinTimeToLive"));
     addressResolverOptions
-        .setCacheMaxTimeToLive(getIntProperty(configSource,
+        .setCacheMaxTimeToLive(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_CACHE_MAX_TIME_TO_LIVE,
             "addressResolver." + tag + ".cacheMaxTimeToLive",
             "addressResolver.cacheMaxTimeToLive"));
     addressResolverOptions
-        .setCacheNegativeTimeToLive(getIntProperty(configSource,
+        .setCacheNegativeTimeToLive(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_CACHE_NEGATIVE_TIME_TO_LIVE,
             "addressResolver." + tag + ".cacheNegativeTimeToLive",
             "addressResolver.cacheNegativeTimeToLive"));
     addressResolverOptions
-        .setQueryTimeout(getIntProperty(configSource,
+        .setQueryTimeout(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_QUERY_TIMEOUT,
             "addressResolver." + tag + ".queryTimeout",
             "addressResolver.queryTimeout"));
     addressResolverOptions
-        .setMaxQueries(getIntProperty(configSource,
+        .setMaxQueries(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_MAX_QUERIES,
             "addressResolver." + tag + ".maxQueries",
             "addressResolver.maxQueries"));
@@ -91,7 +95,7 @@ public class AddressResolverConfig {
             "addressResolver." + tag + ".searchDomains",
             "addressResolver.searchDomains"));
     addressResolverOptions
-        .setNdots(getIntProperty(configSource,
+        .setNdots(getPositiveIntProperty(configSource,
             AddressResolverOptions.DEFAULT_CACHE_MIN_TIME_TO_LIVE,
             "addressResolver." + tag + ".ndots",
             "addressResolver.ndots"));
@@ -117,13 +121,17 @@ public class AddressResolverConfig {
     return defaultValue;
   }
 
-  private static int getIntProperty(Configuration configSource, int defaultValue, String... keys) {
+  private static int getPositiveIntProperty(Configuration configSource, int defaultValue, String... keys) {
     if (configSource == null) {
       configSource = (Configuration) DynamicPropertyFactory.getBackingConfigurationSource();
     }
     for (String key : keys) {
       Integer val = configSource.getInteger(key, null);
-      if (val != null && val > 0) {
+      if (val != null && val <= 0) {
+        LOGGER.warn("Address resover key:{}'s value:{} is not positive, please check!", key, val);
+        continue;
+      }
+      if (val != null) {
         return val;
       }
     }
diff --git a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
index dd6c511..da4bc2c 100644
--- a/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
+++ b/foundations/foundation-vertx/src/test/java/org/apache/servicecomb/foundation/vertx/TestAddressResolverConfig.java
@@ -56,6 +56,8 @@ public class TestAddressResolverConfig {
         result = new String[] {"default.svc.local.cluster"};
         finalConfig.getInteger("addressResolver.queryTimeout", null);
         result = 2000;
+        finalConfig.getInteger("addressResolver.maxQueries", null);
+        result = -2;
       }
     };
     AddressResolverOptions aroc = AddressResolverConfig.getAddressResover("test", finalConfig);
@@ -64,6 +66,8 @@ public class TestAddressResolverConfig {
         is(Arrays.asList("default.svc.local.cluster")));
     Assert.assertEquals(aroc.getQueryTimeout(),
         2000);
+    Assert.assertNotEquals(aroc.getMaxQueries(),
+        -2);
   }
 
   @Test

-- 
To stop receiving notification emails like this one, please contact
ningjiang@apache.org.