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

Reply via email to