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 2018/08/27 06:33:32 UTC

[incubator-servicecomb-java-chassis] 06/08: [SBC-870] give users a error message when use old configurations

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/incubator-servicecomb-java-chassis.git

commit 7e274a7773bacf432ca0e66000adb8ddf0256385
Author: liubao <ba...@huawei.com>
AuthorDate: Sat Aug 25 15:21:35 2018 +0800

    [SBC-870] give users a error message when use old configurations
---
 .../servicecomb/loadbalance/Configuration.java     | 17 --------
 .../loadbalance/LoadbalanceHandler.java            | 46 +++++++++++-----------
 2 files changed, 22 insertions(+), 41 deletions(-)

diff --git a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/Configuration.java b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/Configuration.java
index 2268855..2ce09e3 100644
--- a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/Configuration.java
+++ b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/Configuration.java
@@ -54,17 +54,6 @@ public final class Configuration {
 
   public static final String SUCCESSIVE_FAILED_TIMES = "SessionStickinessRule.successiveFailedTimes";
 
-  // Begin: ServerListFilters configurations
-  //Enabled filter lists, e.g servicecomb.loadbalance.serverListFilters=a,b,c
-  public static final String SERVER_LIST_FILTERS = "servicecomb.loadbalance.serverListFilters";
-
-  //Class name of each filter: e.g servicecomb.loadbalance.serverListFilter.a.className=org.apache.servicecomb.MyServerListFilterExt
-  public static final String SERVER_LIST_FILTER_CLASS_HOLDER = "servicecomb.loadbalance.serverListFilter.%s.className";
-
-  //Property of the class: e.g servicecomb.loadbalance.serverListFilter.a.myproperty=sample
-  public static final String SERVER_LIST_FILTER_PROPERTY_HOLDER = "servicecomb.loadbalance.serverListFilter.%s.%s";
-  //End: ServerListFilters configurations
-
   private static final double PERCENT = 100;
 
   public static final String FILTER_ISOLATION = "isolation.";
@@ -82,8 +71,6 @@ public final class Configuration {
   public static final String TRANSACTIONCONTROL_OPTIONS_PREFIX_PATTERN =
       "servicecomb.loadbalance.%s.transactionControl.options";
 
-  public static final String TRANSACTIONCONTROL_POLICY_KEY_PATTERN = "servicecomb.loadbalance.%s.transactionControl.policy";
-
   public static final Configuration INSTANCE = new Configuration();
 
   private Configuration() {
@@ -224,10 +211,6 @@ public final class Configuration {
     }
   }
 
-  public String getFlowsplitFilterPolicy(String microservice) {
-    return getStringProperty("", String.format(TRANSACTIONCONTROL_POLICY_KEY_PATTERN, microservice));
-  }
-
   public Map<String, String> getFlowsplitFilterOptions(String microservice) {
     String keyPrefix = String.format(TRANSACTIONCONTROL_OPTIONS_PREFIX_PATTERN, microservice);
     return ConfigurePropertyUtils.getPropertiesWithPrefix(keyPrefix);
diff --git a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadbalanceHandler.java b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadbalanceHandler.java
index 9055672..30ee21b 100644
--- a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadbalanceHandler.java
+++ b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadbalanceHandler.java
@@ -44,6 +44,7 @@ import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.netflix.config.DynamicPropertyFactory;
 import com.netflix.loadbalancer.ILoadBalancer;
 import com.netflix.loadbalancer.Server;
 import com.netflix.loadbalancer.reactive.ExecutionContext;
@@ -139,11 +140,31 @@ public class LoadbalanceHandler implements Handler {
 
 
   public LoadbalanceHandler() {
+    preCheck();
     discoveryTree.loadFromSPI(DiscoveryFilter.class);
     discoveryTree.addFilter(new ServerDiscoveryFilter());
     discoveryTree.sort();
   }
 
+  private void preCheck() {
+    // Old configurations check.Just print an error, because configurations may given in dynamic and fail on runtime.
+
+    String policyName = DynamicPropertyFactory.getInstance()
+        .getStringProperty("servicecomb.loadbalance.NFLoadBalancerRuleClassName", null).get();
+    if (!StringUtils.isEmpty(policyName)) {
+      LOGGER.error("[servicecomb.loadbalance.NFLoadBalancerRuleClassName] is not supported anymore." +
+          "use [servicecomb.loadbalance.strategy.name] instead.");
+    }
+
+    String filterNames = Configuration.getStringProperty(null, "servicecomb.loadbalance.serverListFilters");
+    if (!StringUtils.isEmpty(filterNames)) {
+      LOGGER.error(
+          "Server list implementation changed to SPI. Configuration [servicecomb.loadbalance.serverListFilters]" +
+              " is not used any more. For ServiceComb defined filters, you do not need config and can "
+              + "remove this configuration safely. If you define your own filter, need to change it to SPI to make it work.");
+    }
+  }
+
   @Override
   public void handle(Invocation invocation, AsyncResponse asyncResp) throws Exception {
     String strategy = Configuration.INSTANCE.getRuleStrategyName(invocation.getMicroserviceName());
@@ -168,14 +189,6 @@ public class LoadbalanceHandler implements Handler {
     loadBalancerMap.clear();
   }
 
-  protected void setTransactionControlFilter(String microserviceName) {
-    String policyClsName = Configuration.INSTANCE.getFlowsplitFilterPolicy(microserviceName);
-    if (!policyClsName.isEmpty()) {
-      LOGGER.error(Configuration.TRANSACTIONCONTROL_POLICY_KEY_PATTERN + " is not supported anymore." +
-          "You can change this class to SPI, and filters will be loaded by SPI.");
-    }
-  }
-
   private void send(Invocation invocation, AsyncResponse asyncResp, final LoadBalancer chosenLB) throws Exception {
     long time = System.currentTimeMillis();
     ServiceCombServer server = (ServiceCombServer) chosenLB.chooseServer(invocation);
@@ -350,16 +363,10 @@ public class LoadbalanceHandler implements Handler {
         invocation.getMicroserviceVersionRule());
     invocation.addLocalContext(CONTEXT_KEY_SERVER_LIST, serversVersionedCache.data());
 
-    LoadBalancer loadBalancer = loadBalancerMap
+    return loadBalancerMap
         .computeIfAbsent(serversVersionedCache.name(), name -> {
           return createLoadBalancer(invocation.getMicroserviceName());
         });
-
-    // Nothing to do just help users to deal with incompatible changes.
-    setTransactionControlFilter(invocation.getMicroserviceName());
-    loadServerListFilters();
-
-    return loadBalancer;
   }
 
   private LoadBalancer createLoadBalancer(String microserviceName) {
@@ -367,15 +374,6 @@ public class LoadbalanceHandler implements Handler {
     return new LoadBalancer(rule, microserviceName);
   }
 
-  private void loadServerListFilters() {
-    String filterNames = Configuration.getStringProperty(null, Configuration.SERVER_LIST_FILTERS);
-    if (!StringUtils.isEmpty(filterNames)) {
-      LOGGER.error("Server list implementation changed to SPI. Configuration " + Configuration.SERVER_LIST_FILTERS +
-          " is not used any more. For ServiceComb defined filters, you do not need config and can "
-          + "remove this configuration safely. If you define your own filter, need to change it to SPI to make it work.");
-    }
-  }
-
   public boolean isEqual(String str1, String str2) {
     return (str1 == null ? str2 == null : str1.equals(str2));
   }