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));
}