|
@@ -25,6 +25,7 @@ import com.alibaba.csp.sentinel.command.annotation.CommandMapping; |
|
|
import com.alibaba.csp.sentinel.datasource.WritableDataSource; |
|
|
import com.alibaba.csp.sentinel.datasource.WritableDataSource; |
|
|
import com.alibaba.csp.sentinel.log.RecordLog; |
|
|
import com.alibaba.csp.sentinel.log.RecordLog; |
|
|
import com.alibaba.csp.sentinel.util.StringUtil; |
|
|
import com.alibaba.csp.sentinel.util.StringUtil; |
|
|
|
|
|
import com.alibaba.csp.sentinel.util.VersionUtil; |
|
|
import com.alibaba.csp.sentinel.slots.block.authority.AuthorityRule; |
|
|
import com.alibaba.csp.sentinel.slots.block.authority.AuthorityRule; |
|
|
import com.alibaba.csp.sentinel.slots.block.authority.AuthorityRuleManager; |
|
|
import com.alibaba.csp.sentinel.slots.block.authority.AuthorityRuleManager; |
|
|
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule; |
|
|
import com.alibaba.csp.sentinel.slots.block.degrade.DegradeRule; |
|
@@ -33,6 +34,7 @@ import com.alibaba.csp.sentinel.slots.block.flow.FlowRule; |
|
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager; |
|
|
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager; |
|
|
import com.alibaba.csp.sentinel.slots.system.SystemRuleManager; |
|
|
import com.alibaba.csp.sentinel.slots.system.SystemRuleManager; |
|
|
import com.alibaba.csp.sentinel.slots.system.SystemRule; |
|
|
import com.alibaba.csp.sentinel.slots.system.SystemRule; |
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
|
|
|
|
|
|
import static com.alibaba.csp.sentinel.transport.util.WritableDataSourceRegistry.*; |
|
|
import static com.alibaba.csp.sentinel.transport.util.WritableDataSourceRegistry.*; |
|
@@ -43,9 +45,17 @@ import static com.alibaba.csp.sentinel.transport.util.WritableDataSourceRegistry |
|
|
*/ |
|
|
*/ |
|
|
@CommandMapping(name = "setRules", desc = "modify the rules, accept param: type={ruleType}&data={ruleJson}") |
|
|
@CommandMapping(name = "setRules", desc = "modify the rules, accept param: type={ruleType}&data={ruleJson}") |
|
|
public class ModifyRulesCommandHandler implements CommandHandler<String> { |
|
|
public class ModifyRulesCommandHandler implements CommandHandler<String> { |
|
|
|
|
|
private static final int FASTJSON_MINIMAL_VER = 0x01020C00; |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public CommandResponse<String> handle(CommandRequest request) { |
|
|
public CommandResponse<String> handle(CommandRequest request) { |
|
|
|
|
|
// XXX from 1.7.2, force to fail when fastjson is older than 1.2.12 |
|
|
|
|
|
// We may need a better solution on this. |
|
|
|
|
|
if (VersionUtil.fromVersionString(JSON.VERSION) < FASTJSON_MINIMAL_VER) { |
|
|
|
|
|
// fastjson too old |
|
|
|
|
|
return CommandResponse.ofFailure(new RuntimeException("The \"fastjson-" + JSON.VERSION |
|
|
|
|
|
+ "\" introduced in application is too old, you need fastjson-1.2.12 at least.")); |
|
|
|
|
|
} |
|
|
String type = request.getParam("type"); |
|
|
String type = request.getParam("type"); |
|
|
// rule data in get parameter |
|
|
// rule data in get parameter |
|
|
String data = request.getParam("data"); |
|
|
String data = request.getParam("data"); |
|
@@ -58,7 +68,7 @@ public class ModifyRulesCommandHandler implements CommandHandler<String> { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
RecordLog.info(String.format("Receiving rule change (type: %s): %s", type, data)); |
|
|
|
|
|
|
|
|
RecordLog.info("Receiving rule change (type: {}): {}", type, data); |
|
|
|
|
|
|
|
|
String result = "success"; |
|
|
String result = "success"; |
|
|
|
|
|
|
|
|