Browse Source

Polish placeholders in logging content to slf4j convention (#1342)

* Polish placeholders in logging content to "{}"

Signed-off-by: Eric Zhao <sczyh16@gmail.com>
master
Eric Zhao GitHub 4 years ago
parent
commit
eed77cafc2
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 89 additions and 81 deletions
  1. +2
    -2
      sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/api/GatewayApiDefinitionManager.java
  2. +1
    -1
      sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/command/UpdateGatewayApiDefinitionGroupCommandHandler.java
  3. +1
    -1
      sentinel-adapter/sentinel-spring-webmvc-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/AbstractSentinelInterceptor.java
  4. +1
    -1
      sentinel-cluster/sentinel-cluster-client-default/src/main/java/com/alibaba/csp/sentinel/cluster/client/codec/DefaultRequestEntityWriter.java
  5. +1
    -1
      sentinel-cluster/sentinel-cluster-client-default/src/main/java/com/alibaba/csp/sentinel/cluster/client/codec/DefaultResponseEntityDecoder.java
  6. +2
    -2
      sentinel-cluster/sentinel-cluster-client-default/src/main/java/com/alibaba/csp/sentinel/cluster/client/handler/TokenClientHandler.java
  7. +4
    -4
      sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/rule/ClusterFlowRuleManager.java
  8. +4
    -4
      sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/rule/ClusterParamFlowRuleManager.java
  9. +1
    -1
      sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/codec/DefaultRequestEntityDecoder.java
  10. +1
    -1
      sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/codec/DefaultResponseEntityWriter.java
  11. +1
    -1
      sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/command/handler/ModifyClusterFlowRulesCommandHandler.java
  12. +1
    -1
      sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/command/handler/ModifyClusterParamFlowRulesCommandHandler.java
  13. +1
    -1
      sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/command/handler/ModifyClusterServerFlowConfigHandler.java
  14. +3
    -3
      sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/connection/ConnectionManager.java
  15. +1
    -1
      sentinel-core/src/main/java/com/alibaba/csp/sentinel/config/SentinelConfig.java
  16. +1
    -1
      sentinel-core/src/main/java/com/alibaba/csp/sentinel/config/SentinelConfigLoader.java
  17. +2
    -2
      sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/DefaultNode.java
  18. +2
    -2
      sentinel-extension/sentinel-annotation-aspectj/src/main/java/com/alibaba/csp/sentinel/annotation/aspectj/AbstractSentinelAspectSupport.java
  19. +2
    -2
      sentinel-extension/sentinel-datasource-consul/src/main/java/com/alibaba/csp/sentinel/datasource/consul/ConsulDataSource.java
  20. +1
    -1
      sentinel-extension/sentinel-datasource-etcd/src/main/java/com/alibaba/csp/sentinel/datasource/etcd/EtcdDataSource.java
  21. +56
    -48
      sentinel-extension/sentinel-datasource-spring-cloud-config/src/main/java/com/alibaba/csp/sentinel/datasource/spring/cloud/config/SentinelRuleLocator.java

+ 2
- 2
sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/api/GatewayApiDefinitionManager.java View File

@@ -62,8 +62,8 @@ public final class GatewayApiDefinitionManager {
List<ApiDefinitionChangeObserver> listeners = SpiLoader.loadInstanceList(ApiDefinitionChangeObserver.class); List<ApiDefinitionChangeObserver> listeners = SpiLoader.loadInstanceList(ApiDefinitionChangeObserver.class);
for (ApiDefinitionChangeObserver e : listeners) { for (ApiDefinitionChangeObserver e : listeners) {
API_CHANGE_OBSERVERS.put(e.getClass().getCanonicalName(), e); API_CHANGE_OBSERVERS.put(e.getClass().getCanonicalName(), e);
RecordLog.info("[GatewayApiDefinitionManager] ApiDefinitionChangeObserver added: {0}",
e.getClass().getCanonicalName());
RecordLog.info("[GatewayApiDefinitionManager] ApiDefinitionChangeObserver added: "
+ e.getClass().getCanonicalName());
} }
} }




+ 1
- 1
sentinel-adapter/sentinel-api-gateway-adapter-common/src/main/java/com/alibaba/csp/sentinel/adapter/gateway/common/command/UpdateGatewayApiDefinitionGroupCommandHandler.java View File

@@ -56,7 +56,7 @@ public class UpdateGatewayApiDefinitionGroupCommandHandler implements CommandHan
return CommandResponse.ofFailure(e, "decode gateway API definition data error"); return CommandResponse.ofFailure(e, "decode gateway API definition data error");
} }


RecordLog.info("[API Server] Receiving data change (type: gateway API definition): {0}", data);
RecordLog.info("[API Server] Receiving data change (type: gateway API definition): {}", data);


String result = SUCCESS_MSG; String result = SUCCESS_MSG;




+ 1
- 1
sentinel-adapter/sentinel-spring-webmvc-adapter/src/main/java/com/alibaba/csp/sentinel/adapter/spring/webmvc/AbstractSentinelInterceptor.java View File

@@ -109,7 +109,7 @@ public abstract class AbstractSentinelInterceptor implements HandlerInterceptor
protected void setEntryInRequest(HttpServletRequest request, String name, Entry entry) { protected void setEntryInRequest(HttpServletRequest request, String name, Entry entry) {
Object attrVal = request.getAttribute(name); Object attrVal = request.getAttribute(name);
if (attrVal != null) { if (attrVal != null) {
RecordLog.warn("[{}] The attribute key '{0}' already exists in request, please set `requestAttributeName`",
RecordLog.warn("[{}] The attribute key '{}' already exists in request, please set `requestAttributeName`",
getClass().getSimpleName(), name); getClass().getSimpleName(), name);
} else { } else {
request.setAttribute(name, entry); request.setAttribute(name, entry);


+ 1
- 1
sentinel-cluster/sentinel-cluster-client-default/src/main/java/com/alibaba/csp/sentinel/cluster/client/codec/DefaultRequestEntityWriter.java View File

@@ -36,7 +36,7 @@ public class DefaultRequestEntityWriter implements RequestEntityWriter<ClusterRe
EntityWriter<Object, ByteBuf> requestDataWriter = RequestDataWriterRegistry.getWriter(type); EntityWriter<Object, ByteBuf> requestDataWriter = RequestDataWriterRegistry.getWriter(type);


if (requestDataWriter == null) { if (requestDataWriter == null) {
RecordLog.warn("[DefaultRequestEntityWriter] Cannot find matching request writer for type <{0}>,"
RecordLog.warn("[DefaultRequestEntityWriter] Cannot find matching request writer for type <{}>,"
+ " dropping the request", type); + " dropping the request", type);
return; return;
} }


+ 1
- 1
sentinel-cluster/sentinel-cluster-client-default/src/main/java/com/alibaba/csp/sentinel/cluster/client/codec/DefaultResponseEntityDecoder.java View File

@@ -47,7 +47,7 @@ public class DefaultResponseEntityDecoder implements ResponseEntityDecoder<ByteB


EntityDecoder<ByteBuf, ?> decoder = ResponseDataDecodeRegistry.getDecoder(type); EntityDecoder<ByteBuf, ?> decoder = ResponseDataDecodeRegistry.getDecoder(type);
if (decoder == null) { if (decoder == null) {
RecordLog.warn("Unknown type of response data decoder: {0}", type);
RecordLog.warn("Unknown type of response data decoder: {}", type);
return null; return null;
} }




+ 2
- 2
sentinel-cluster/sentinel-cluster-client-default/src/main/java/com/alibaba/csp/sentinel/cluster/client/handler/TokenClientHandler.java View File

@@ -76,10 +76,10 @@ public class TokenClientHandler extends ChannelInboundHandlerAdapter {
private void handlePingResponse(ChannelHandlerContext ctx, ClusterResponse response) { private void handlePingResponse(ChannelHandlerContext ctx, ClusterResponse response) {
if (response.getStatus() == ClusterConstants.RESPONSE_STATUS_OK) { if (response.getStatus() == ClusterConstants.RESPONSE_STATUS_OK) {
int count = (int) response.getData(); int count = (int) response.getData();
RecordLog.info("[TokenClientHandler] Client ping OK (target server: {0}, connected count: {1})",
RecordLog.info("[TokenClientHandler] Client ping OK (target server: {}, connected count: {})",
getRemoteAddress(ctx), count); getRemoteAddress(ctx), count);
} else { } else {
RecordLog.warn("[TokenClientHandler] Client ping failed (target server: {0})", getRemoteAddress(ctx));
RecordLog.warn("[TokenClientHandler] Client ping failed (target server: {})", getRemoteAddress(ctx));
} }
} }




+ 4
- 4
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/rule/ClusterFlowRuleManager.java View File

@@ -129,7 +129,7 @@ public final class ClusterFlowRuleManager {
} }
synchronized (UPDATE_LOCK) { synchronized (UPDATE_LOCK) {
RecordLog.info("[ClusterFlowRuleManager] Registering new property to cluster flow rule manager" RecordLog.info("[ClusterFlowRuleManager] Registering new property to cluster flow rule manager"
+ " for namespace <{0}>", namespace);
+ " for namespace <{}>", namespace);
registerPropertyInternal(namespace, property); registerPropertyInternal(namespace, property);
} }
} }
@@ -180,7 +180,7 @@ public final class ClusterFlowRuleManager {
PROPERTY_MAP.remove(namespace); PROPERTY_MAP.remove(namespace);
} }
RecordLog.info("[ClusterFlowRuleManager] Removing property from cluster flow rule manager" RecordLog.info("[ClusterFlowRuleManager] Removing property from cluster flow rule manager"
+ " for namespace <{0}>", namespace);
+ " for namespace <{}>", namespace);
} }
} }


@@ -380,14 +380,14 @@ public final class ClusterFlowRuleManager {
@Override @Override
public synchronized void configUpdate(List<FlowRule> conf) { public synchronized void configUpdate(List<FlowRule> conf) {
applyClusterFlowRule(conf, namespace); applyClusterFlowRule(conf, namespace);
RecordLog.info("[ClusterFlowRuleManager] Cluster flow rules received for namespace <{0}>: {1}",
RecordLog.info("[ClusterFlowRuleManager] Cluster flow rules received for namespace <{}>: {}",
namespace, FLOW_RULES); namespace, FLOW_RULES);
} }


@Override @Override
public synchronized void configLoad(List<FlowRule> conf) { public synchronized void configLoad(List<FlowRule> conf) {
applyClusterFlowRule(conf, namespace); applyClusterFlowRule(conf, namespace);
RecordLog.info("[ClusterFlowRuleManager] Cluster flow rules loaded for namespace <{0}>: {1}",
RecordLog.info("[ClusterFlowRuleManager] Cluster flow rules loaded for namespace <{}>: {}",
namespace, FLOW_RULES); namespace, FLOW_RULES);
} }
} }


+ 4
- 4
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/flow/rule/ClusterParamFlowRuleManager.java View File

@@ -127,7 +127,7 @@ public final class ClusterParamFlowRuleManager {
} }
synchronized (UPDATE_LOCK) { synchronized (UPDATE_LOCK) {
RecordLog.info("[ClusterParamFlowRuleManager] Registering new property to cluster param rule manager" RecordLog.info("[ClusterParamFlowRuleManager] Registering new property to cluster param rule manager"
+ " for namespace <{0}>", namespace);
+ " for namespace <{}>", namespace);
registerPropertyInternal(namespace, property); registerPropertyInternal(namespace, property);
} }
} }
@@ -167,7 +167,7 @@ public final class ClusterParamFlowRuleManager {
PROPERTY_MAP.remove(namespace); PROPERTY_MAP.remove(namespace);
} }
RecordLog.info("[ClusterParamFlowRuleManager] Removing property from cluster flow rule manager" RecordLog.info("[ClusterParamFlowRuleManager] Removing property from cluster flow rule manager"
+ " for namespace <{0}>", namespace);
+ " for namespace <{}>", namespace);
} }
} }


@@ -303,14 +303,14 @@ public final class ClusterParamFlowRuleManager {
@Override @Override
public void configLoad(List<ParamFlowRule> conf) { public void configLoad(List<ParamFlowRule> conf) {
applyClusterParamRules(conf, namespace); applyClusterParamRules(conf, namespace);
RecordLog.info("[ClusterParamFlowRuleManager] Cluster parameter rules loaded for namespace <{0}>: {1}",
RecordLog.info("[ClusterParamFlowRuleManager] Cluster parameter rules loaded for namespace <{}>: {}",
namespace, PARAM_RULES); namespace, PARAM_RULES);
} }


@Override @Override
public void configUpdate(List<ParamFlowRule> conf) { public void configUpdate(List<ParamFlowRule> conf) {
applyClusterParamRules(conf, namespace); applyClusterParamRules(conf, namespace);
RecordLog.info("[ClusterParamFlowRuleManager] Cluster parameter rules received for namespace <{0}>: {1}",
RecordLog.info("[ClusterParamFlowRuleManager] Cluster parameter rules received for namespace <{}>: {}",
namespace, PARAM_RULES); namespace, PARAM_RULES);
} }
} }


+ 1
- 1
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/codec/DefaultRequestEntityDecoder.java View File

@@ -46,7 +46,7 @@ public class DefaultRequestEntityDecoder implements RequestEntityDecoder<ByteBuf


EntityDecoder<ByteBuf, ?> dataDecoder = RequestDataDecodeRegistry.getDecoder(type); EntityDecoder<ByteBuf, ?> dataDecoder = RequestDataDecodeRegistry.getDecoder(type);
if (dataDecoder == null) { if (dataDecoder == null) {
RecordLog.warn("Unknown type of request data decoder: {0}", type);
RecordLog.warn("Unknown type of request data decoder: {}", type);
return null; return null;
} }




+ 1
- 1
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/codec/DefaultResponseEntityWriter.java View File

@@ -38,7 +38,7 @@ public class DefaultResponseEntityWriter implements ResponseEntityWriter<Cluster


if (responseDataWriter == null) { if (responseDataWriter == null) {
writeHead(response.setStatus(ClusterConstants.RESPONSE_STATUS_BAD), out); writeHead(response.setStatus(ClusterConstants.RESPONSE_STATUS_BAD), out);
RecordLog.warn("[NettyResponseEncoder] Cannot find matching writer for type <{0}>", response.getType());
RecordLog.warn("[NettyResponseEncoder] Cannot find matching writer for type <{}>", response.getType());
return; return;
} }
writeHead(response, out); writeHead(response, out);


+ 1
- 1
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/command/handler/ModifyClusterFlowRulesCommandHandler.java View File

@@ -47,7 +47,7 @@ public class ModifyClusterFlowRulesCommandHandler implements CommandHandler<Stri
} }
try { try {
data = URLDecoder.decode(data, "UTF-8"); data = URLDecoder.decode(data, "UTF-8");
RecordLog.info("[ModifyClusterFlowRulesCommandHandler] Receiving cluster flow rules for namespace <{0}>: {1}", namespace, data);
RecordLog.info("[ModifyClusterFlowRulesCommandHandler] Receiving cluster flow rules for namespace <{}>: {}", namespace, data);


List<FlowRule> flowRules = JSONArray.parseArray(data, FlowRule.class); List<FlowRule> flowRules = JSONArray.parseArray(data, FlowRule.class);
ClusterFlowRuleManager.loadRules(namespace, flowRules); ClusterFlowRuleManager.loadRules(namespace, flowRules);


+ 1
- 1
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/command/handler/ModifyClusterParamFlowRulesCommandHandler.java View File

@@ -47,7 +47,7 @@ public class ModifyClusterParamFlowRulesCommandHandler implements CommandHandler
} }
try { try {
data = URLDecoder.decode(data, "UTF-8"); data = URLDecoder.decode(data, "UTF-8");
RecordLog.info("[ModifyClusterParamFlowRulesCommandHandler] Receiving cluster param rules for namespace <{0}>: {1}", namespace, data);
RecordLog.info("Receiving cluster param rules for namespace <{}> from command handler: {}", namespace, data);


List<ParamFlowRule> flowRules = JSONArray.parseArray(data, ParamFlowRule.class); List<ParamFlowRule> flowRules = JSONArray.parseArray(data, ParamFlowRule.class);
ClusterParamFlowRuleManager.loadRules(namespace, flowRules); ClusterParamFlowRuleManager.loadRules(namespace, flowRules);


+ 1
- 1
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/command/handler/ModifyClusterServerFlowConfigHandler.java View File

@@ -53,7 +53,7 @@ public class ModifyClusterServerFlowConfigHandler implements CommandHandler<Stri
} }
ClusterServerConfigManager.loadGlobalFlowConfig(config); ClusterServerConfigManager.loadGlobalFlowConfig(config);
} else { } else {
RecordLog.info("[ModifyClusterServerFlowConfigHandler] Receiving cluster server flow config for namespace <{0}>: {1}", namespace, data);
RecordLog.info("[ModifyClusterServerFlowConfigHandler] Receiving cluster server flow config for namespace <{}>: {}", namespace, data);
ServerFlowConfig config = JSON.parseObject(data, ServerFlowConfig.class); ServerFlowConfig config = JSON.parseObject(data, ServerFlowConfig.class);
if (!ClusterServerConfigManager.isValidFlowConfig(config)) { if (!ClusterServerConfigManager.isValidFlowConfig(config)) {
CommandResponse.ofFailure(new IllegalArgumentException("Bad flow config")); CommandResponse.ofFailure(new IllegalArgumentException("Bad flow config"));


+ 3
- 3
sentinel-cluster/sentinel-cluster-server-default/src/main/java/com/alibaba/csp/sentinel/cluster/server/connection/ConnectionManager.java View File

@@ -73,7 +73,7 @@ public final class ConnectionManager {
return; return;
} }
group.removeConnection(address); group.removeConnection(address);
RecordLog.info("[ConnectionManager] Client <{0}> disconnected and removed from namespace <{1}>", address, namespace);
RecordLog.info("[ConnectionManager] Client <{}> disconnected and removed from namespace <{}>", address, namespace);
} }
NAMESPACE_MAP.remove(address); NAMESPACE_MAP.remove(address);
} }
@@ -87,7 +87,7 @@ public final class ConnectionManager {
} }
group.removeConnection(address); group.removeConnection(address);
NAMESPACE_MAP.remove(address); NAMESPACE_MAP.remove(address);
RecordLog.info("[ConnectionManager] Client <{0}> disconnected and removed from namespace <{1}>", address, namespace);
RecordLog.info("[ConnectionManager] Client <{}> disconnected and removed from namespace <{}>", address, namespace);
} }


public static ConnectionGroup addConnection(String namespace, String address) { public static ConnectionGroup addConnection(String namespace, String address) {
@@ -96,7 +96,7 @@ public final class ConnectionManager {
ConnectionGroup group = getOrCreateGroup(namespace); ConnectionGroup group = getOrCreateGroup(namespace);
group.addConnection(address); group.addConnection(address);
NAMESPACE_MAP.put(address, namespace); NAMESPACE_MAP.put(address, namespace);
RecordLog.info("[ConnectionManager] Client <{0}> registered with namespace <{1}>", address, namespace);
RecordLog.info("[ConnectionManager] Client <{}> registered with namespace <{}>", address, namespace);
return group; return group;
} }




+ 1
- 1
sentinel-core/src/main/java/com/alibaba/csp/sentinel/config/SentinelConfig.java View File

@@ -204,7 +204,7 @@ public final class SentinelConfig {
} }
return Integer.parseInt(v); return Integer.parseInt(v);
} catch (Throwable throwable) { } catch (Throwable throwable) {
RecordLog.warn("[SentinelConfig] Invalid statisticMaxRt value: {0}, using the default value instead: "
RecordLog.warn("[SentinelConfig] Invalid statisticMaxRt value: {}, using the default value instead: "
+ DEFAULT_STATISTIC_MAX_RT, v, throwable); + DEFAULT_STATISTIC_MAX_RT, v, throwable);
SentinelConfig.setConfig(STATISTIC_MAX_RT, String.valueOf(DEFAULT_STATISTIC_MAX_RT)); SentinelConfig.setConfig(STATISTIC_MAX_RT, String.valueOf(DEFAULT_STATISTIC_MAX_RT));
return DEFAULT_STATISTIC_MAX_RT; return DEFAULT_STATISTIC_MAX_RT;


+ 1
- 1
sentinel-core/src/main/java/com/alibaba/csp/sentinel/config/SentinelConfigLoader.java View File

@@ -86,7 +86,7 @@ public final class SentinelConfigLoader {
String oldConfigValue = properties.getProperty(configKey); String oldConfigValue = properties.getProperty(configKey);
properties.put(configKey, newConfigValue); properties.put(configKey, newConfigValue);
if (oldConfigValue != null) { if (oldConfigValue != null) {
RecordLog.info("[SentinelConfigLoader] JVM parameter overrides {0}: {1} -> {2}",
RecordLog.info("[SentinelConfigLoader] JVM parameter overrides {}: {} -> {}",
configKey, oldConfigValue, newConfigValue); configKey, oldConfigValue, newConfigValue);
} }
} }


+ 2
- 2
sentinel-core/src/main/java/com/alibaba/csp/sentinel/node/DefaultNode.java View File

@@ -79,7 +79,7 @@ public class DefaultNode extends StatisticNode {
*/ */
public void addChild(Node node) { public void addChild(Node node) {
if (node == null) { if (node == null) {
RecordLog.warn("Trying to add null child to node <{0}>, ignored", id.getName());
RecordLog.warn("Trying to add null child to node <{}>, ignored", id.getName());
return; return;
} }
if (!childList.contains(node)) { if (!childList.contains(node)) {
@@ -91,7 +91,7 @@ public class DefaultNode extends StatisticNode {
childList = newSet; childList = newSet;
} }
} }
RecordLog.info("Add child <{0}> to node <{1}>", ((DefaultNode)node).id.getName(), id.getName());
RecordLog.info("Add child <{}> to node <{}>", ((DefaultNode)node).id.getName(), id.getName());
} }
} }




+ 2
- 2
sentinel-extension/sentinel-annotation-aspectj/src/main/java/com/alibaba/csp/sentinel/annotation/aspectj/AbstractSentinelAspectSupport.java View File

@@ -280,7 +280,7 @@ public abstract class AbstractSentinelAspectSupport {
&& returnType.isAssignableFrom(method.getReturnType()) && returnType.isAssignableFrom(method.getReturnType())
&& Arrays.equals(parameterTypes, method.getParameterTypes())) { && Arrays.equals(parameterTypes, method.getParameterTypes())) {


RecordLog.info("Resolved method [{0}] in class [{1}]", name, clazz.getCanonicalName());
RecordLog.info("Resolved method [{}] in class [{}]", name, clazz.getCanonicalName());
return method; return method;
} }
} }
@@ -290,7 +290,7 @@ public abstract class AbstractSentinelAspectSupport {
return findMethod(mustStatic, superClass, name, returnType, parameterTypes); return findMethod(mustStatic, superClass, name, returnType, parameterTypes);
} else { } else {
String methodType = mustStatic ? " static" : ""; String methodType = mustStatic ? " static" : "";
RecordLog.warn("Cannot find{0} method [{1}] in class [{2}] with parameters {3}",
RecordLog.warn("Cannot find{} method [{}] in class [{}] with parameters {}",
methodType, name, clazz.getCanonicalName(), Arrays.toString(parameterTypes)); methodType, name, clazz.getCanonicalName(), Arrays.toString(parameterTypes));
return null; return null;
} }


+ 2
- 2
sentinel-extension/sentinel-datasource-consul/src/main/java/com/alibaba/csp/sentinel/datasource/consul/ConsulDataSource.java View File

@@ -157,11 +157,11 @@ public class ConsulDataSource<T> extends AbstractDataSource<String, T> {
String newValue = getValue.getDecodedValue(); String newValue = getValue.getDecodedValue();
try { try {
getProperty().updateValue(parser.convert(newValue)); getProperty().updateValue(parser.convert(newValue));
RecordLog.info("[ConsulDataSource] New property value received for ({0}, {1}): {2}",
RecordLog.info("[ConsulDataSource] New property value received for ({}, {}): {}",
address, ruleKey, newValue); address, ruleKey, newValue);
} catch (Exception ex) { } catch (Exception ex) {
// In case of parsing error. // In case of parsing error.
RecordLog.warn("[ConsulDataSource] Failed to update value for ({0}, {1}), raw value: {2}",
RecordLog.warn("[ConsulDataSource] Failed to update value for ({}, {}), raw value: {}",
address, ruleKey, newValue); address, ruleKey, newValue);
} }
} }


+ 1
- 1
sentinel-extension/sentinel-datasource-etcd/src/main/java/com/alibaba/csp/sentinel/datasource/etcd/EtcdDataSource.java View File

@@ -94,7 +94,7 @@ public class EtcdDataSource<T> extends AbstractDataSource<String, T> {
RecordLog.warn("[EtcdDataSource] Failed to update config", e); RecordLog.warn("[EtcdDataSource] Failed to update config", e);
} }
} else if (eventType == WatchEvent.EventType.DELETE) { } else if (eventType == WatchEvent.EventType.DELETE) {
RecordLog.info("[EtcdDataSource] Cleaning config for key <{0}>", key);
RecordLog.info("[EtcdDataSource] Cleaning config for key <{}>", key);
getProperty().updateValue(null); getProperty().updateValue(null);
} }
} }


+ 56
- 48
sentinel-extension/sentinel-datasource-spring-cloud-config/src/main/java/com/alibaba/csp/sentinel/datasource/spring/cloud/config/SentinelRuleLocator.java View File

@@ -1,6 +1,22 @@
/*
* Copyright 1999-2019 Alibaba Group Holding Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.alibaba.csp.sentinel.datasource.spring.cloud.config; package com.alibaba.csp.sentinel.datasource.spring.cloud.config;


import com.alibaba.csp.sentinel.log.RecordLog; import com.alibaba.csp.sentinel.log.RecordLog;

import org.springframework.cloud.bootstrap.config.PropertySourceLocator; import org.springframework.cloud.bootstrap.config.PropertySourceLocator;
import org.springframework.cloud.config.client.ConfigClientProperties; import org.springframework.cloud.config.client.ConfigClientProperties;
import org.springframework.cloud.config.client.ConfigClientStateHolder; import org.springframework.cloud.config.client.ConfigClientStateHolder;
@@ -38,10 +54,11 @@ import static org.springframework.cloud.config.client.ConfigClientProperties.*;


/** /**
* <p> * <p>
* {@link SentinelRuleLocator} which pull sentinel rules from remote server.
* It retrieve configurations of spring-cloud-config client configurations from {@link org.springframework.core.env.Environment}
* Such as spring.cloud.config.uri=uri, spring.cloud.config.profile=profile .... and so on.
* When pull rules successfully, save to {@link SentinelRuleStorage} for ${@link SpringCloudConfigDataSource} retrieve.
* {@link SentinelRuleLocator} which pulls Sentinel rules from remote server.
* It retrieves configurations of spring-cloud-config client configurations from
* {@link org.springframework.core.env.Environment}, such as {@code spring.cloud.config.uri=uri},
* {@code spring.cloud.config.profile=profile}, and so on.
* When rules are pulled successfully, it will be stored to {@link SentinelRuleStorage}.
* </p> * </p>
* *
* @author lianglin * @author lianglin
@@ -50,17 +67,16 @@ import static org.springframework.cloud.config.client.ConfigClientProperties.*;
@Order(0) @Order(0)
public class SentinelRuleLocator implements PropertySourceLocator { public class SentinelRuleLocator implements PropertySourceLocator {



private RestTemplate restTemplate; private RestTemplate restTemplate;
private ConfigClientProperties defaultProperties; private ConfigClientProperties defaultProperties;
private org.springframework.core.env.Environment environment; private org.springframework.core.env.Environment environment;


public SentinelRuleLocator(ConfigClientProperties defaultProperties, org.springframework.core.env.Environment environment) {
public SentinelRuleLocator(ConfigClientProperties defaultProperties,
org.springframework.core.env.Environment environment) {
this.defaultProperties = defaultProperties; this.defaultProperties = defaultProperties;
this.environment = environment; this.environment = environment;
} }



/** /**
* Responsible for pull data from remote server * Responsible for pull data from remote server
* *
@@ -70,35 +86,35 @@ public class SentinelRuleLocator implements PropertySourceLocator {
@Override @Override
@Retryable(interceptor = "configServerRetryInterceptor") @Retryable(interceptor = "configServerRetryInterceptor")
public org.springframework.core.env.PropertySource<?> locate( public org.springframework.core.env.PropertySource<?> locate(
org.springframework.core.env.Environment environment) {
org.springframework.core.env.Environment environment) {
ConfigClientProperties properties = this.defaultProperties.override(environment); ConfigClientProperties properties = this.defaultProperties.override(environment);
CompositePropertySource composite = new CompositePropertySource("configService"); CompositePropertySource composite = new CompositePropertySource("configService");
RestTemplate restTemplate = this.restTemplate == null RestTemplate restTemplate = this.restTemplate == null
? getSecureRestTemplate(properties)
: this.restTemplate;
? getSecureRestTemplate(properties)
: this.restTemplate;
Exception error = null; Exception error = null;
String errorBody = null; String errorBody = null;
try { try {
String[] labels = new String[]{""};
String[] labels = new String[] {""};
if (StringUtils.hasText(properties.getLabel())) { if (StringUtils.hasText(properties.getLabel())) {
labels = StringUtils labels = StringUtils
.commaDelimitedListToStringArray(properties.getLabel());
.commaDelimitedListToStringArray(properties.getLabel());
} }
String state = ConfigClientStateHolder.getState(); String state = ConfigClientStateHolder.getState();
// Try all the labels until one works // Try all the labels until one works
for (String label : labels) { for (String label : labels) {
Environment result = getRemoteEnvironment(restTemplate, properties, Environment result = getRemoteEnvironment(restTemplate, properties,
label.trim(), state);
label.trim(), state);
if (result != null) { if (result != null) {
log(result); log(result);
// result.getPropertySources() can be null if using xml // result.getPropertySources() can be null if using xml
if (result.getPropertySources() != null) { if (result.getPropertySources() != null) {
for (PropertySource source : result.getPropertySources()) { for (PropertySource source : result.getPropertySources()) {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> map = (Map<String, Object>) source
.getSource();
Map<String, Object> map = (Map<String, Object>)source
.getSource();
composite.addPropertySource( composite.addPropertySource(
new MapPropertySource(source.getName(), map));
new MapPropertySource(source.getName(), map));
} }
} }
SentinelRuleStorage.setRulesSource(composite); SentinelRuleStorage.setRulesSource(composite);
@@ -107,8 +123,7 @@ public class SentinelRuleLocator implements PropertySourceLocator {
} }
} catch (HttpServerErrorException e) { } catch (HttpServerErrorException e) {
error = e; error = e;
if (MediaType.APPLICATION_JSON
.includes(e.getResponseHeaders().getContentType())) {
if (MediaType.APPLICATION_JSON.includes(e.getResponseHeaders().getContentType())) {
errorBody = e.getResponseBodyAsString(); errorBody = e.getResponseBodyAsString();
} }
} catch (Exception e) { } catch (Exception e) {
@@ -116,12 +131,12 @@ public class SentinelRuleLocator implements PropertySourceLocator {
} }
if (properties.isFailFast()) { if (properties.isFailFast()) {
throw new IllegalStateException( throw new IllegalStateException(
"Could not locate PropertySource and the fail fast property is set, failing",
error);
"Could not locate PropertySource and the fail fast property is set, failing",
error);
} }
RecordLog.warn("Could not locate PropertySource: " + (errorBody == null RecordLog.warn("Could not locate PropertySource: " + (errorBody == null
? error == null ? "label not found" : error.getMessage()
: errorBody));
? error == null ? "label not found" : error.getMessage()
: errorBody));
return null; return null;


} }
@@ -133,11 +148,10 @@ public class SentinelRuleLocator implements PropertySourceLocator {
private void log(Environment result) { private void log(Environment result) {


RecordLog.info(String.format( RecordLog.info(String.format(
"Located environment: name=%s, profiles=%s, label=%s, version=%s, state=%s",
result.getName(),
result.getProfiles() == null ? ""
: Arrays.asList(result.getProfiles()),
result.getLabel(), result.getVersion(), result.getState()));
"Located environment: name=%s, profiles=%s, label=%s, version=%s, state=%s",
result.getName(),
result.getProfiles() == null ? "" : Arrays.asList(result.getProfiles()),
result.getLabel(), result.getVersion(), result.getState()));


List<PropertySource> propertySourceList = result.getPropertySources(); List<PropertySource> propertySourceList = result.getPropertySources();
if (propertySourceList != null) { if (propertySourceList != null) {
@@ -145,16 +159,11 @@ public class SentinelRuleLocator implements PropertySourceLocator {
for (PropertySource propertySource : propertySourceList) { for (PropertySource propertySource : propertySourceList) {
propertyCount += propertySource.getSource().size(); propertyCount += propertySource.getSource().size();
} }
RecordLog.info(String.format(
"Environment %s has %d property sources with %d properties.",
result.getName(), result.getPropertySources().size(),
propertyCount));
RecordLog.info("[SentinelRuleLocator] Environment {} has {} property sources with {} properties",
result.getName(), result.getPropertySources().size(), propertyCount);
} }


} }



private Environment getRemoteEnvironment(RestTemplate restTemplate, private Environment getRemoteEnvironment(RestTemplate restTemplate,
ConfigClientProperties properties, String label, String state) { ConfigClientProperties properties, String label, String state) {
String path = "/{name}/{profile}"; String path = "/{name}/{profile}";
@@ -163,17 +172,18 @@ public class SentinelRuleLocator implements PropertySourceLocator {
String token = properties.getToken(); String token = properties.getToken();
int noOfUrls = properties.getUri().length; int noOfUrls = properties.getUri().length;
if (noOfUrls > 1) { if (noOfUrls > 1) {
RecordLog.info("Multiple Config Server Urls found listed.");
RecordLog.debug("[SentinelRuleLocator] Multiple Config Server Urls found listed.");
} }


RecordLog.info("properties = {0},label={1}, state={2}", properties, label, state);
RecordLog.info("[SentinelRuleLocator] getRemoteEnvironment, properties={}, label={}, state={}",
properties, label, state);


Object[] args = new String[]{name, profile};
Object[] args = new String[] {name, profile};
if (StringUtils.hasText(label)) { if (StringUtils.hasText(label)) {
if (label.contains("/")) { if (label.contains("/")) {
label = label.replace("/", "(_)"); label = label.replace("/", "(_)");
} }
args = new String[]{name, profile, label};
args = new String[] {name, profile, label};
path = path + "/{label}"; path = path + "/{label}";
} }
ResponseEntity<Environment> response = null; ResponseEntity<Environment> response = null;
@@ -184,7 +194,7 @@ public class SentinelRuleLocator implements PropertySourceLocator {
String username = credentials.getUsername(); String username = credentials.getUsername();
String password = credentials.getPassword(); String password = credentials.getPassword();


RecordLog.info("Fetching config from server at : " + uri);
RecordLog.info("[SentinelRuleLocator] Fetching config from server at: " + uri);


try { try {
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
@@ -196,16 +206,16 @@ public class SentinelRuleLocator implements PropertySourceLocator {
headers.add(STATE_HEADER, state); headers.add(STATE_HEADER, state);
} }


final HttpEntity<Void> entity = new HttpEntity<>((Void) null, headers);
final HttpEntity<Void> entity = new HttpEntity<>((Void)null, headers);
response = restTemplate.exchange(uri + path, HttpMethod.GET, entity, response = restTemplate.exchange(uri + path, HttpMethod.GET, entity,
Environment.class, args);
Environment.class, args);
} catch (HttpClientErrorException e) { } catch (HttpClientErrorException e) {
if (e.getStatusCode() != HttpStatus.NOT_FOUND) { if (e.getStatusCode() != HttpStatus.NOT_FOUND) {
throw e; throw e;
} }
} catch (ResourceAccessException e) { } catch (ResourceAccessException e) {
RecordLog.info("Connect Timeout Exception on Url - " + uri
+ ". Will be trying the next url if available");
RecordLog.warn("[SentinelRuleLocator] ConnectTimeoutException on url <{}>."
+ " Will be trying the next url if available", uri);
if (i == noOfUrls - 1) { if (i == noOfUrls - 1) {
throw e; throw e;
} else { } else {
@@ -224,7 +234,6 @@ public class SentinelRuleLocator implements PropertySourceLocator {
return null; return null;
} }



private RestTemplate getSecureRestTemplate(ConfigClientProperties client) { private RestTemplate getSecureRestTemplate(ConfigClientProperties client) {
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
if (client.getRequestReadTimeout() < 0) { if (client.getRequestReadTimeout() < 0) {
@@ -239,7 +248,7 @@ public class SentinelRuleLocator implements PropertySourceLocator {
} }
if (!headers.isEmpty()) { if (!headers.isEmpty()) {
template.setInterceptors(Arrays.<ClientHttpRequestInterceptor>asList( template.setInterceptors(Arrays.<ClientHttpRequestInterceptor>asList(
new GenericRequestHeaderInterceptor(headers)));
new GenericRequestHeaderInterceptor(headers)));
} }


return template; return template;
@@ -251,7 +260,7 @@ public class SentinelRuleLocator implements PropertySourceLocator {


if (password != null && authorization != null) { if (password != null && authorization != null) {
throw new IllegalStateException( throw new IllegalStateException(
"You must set either 'password' or 'authorization'");
"You must set either 'password' or 'authorization'");
} }


if (password != null) { if (password != null) {
@@ -267,9 +276,8 @@ public class SentinelRuleLocator implements PropertySourceLocator {
this.restTemplate = restTemplate; this.restTemplate = restTemplate;
} }



public static class GenericRequestHeaderInterceptor public static class GenericRequestHeaderInterceptor
implements ClientHttpRequestInterceptor {
implements ClientHttpRequestInterceptor {


private final Map<String, String> headers; private final Map<String, String> headers;




Loading…
Cancel
Save