[ 
https://issues.apache.org/jira/browse/SCB-2656?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

liubao updated SCB-2656:
------------------------
    Fix Version/s: java-chassis-2.8.0

> The traffic limiting modole of java-chassis has problems in the dynamic 
> configration scenario
> ---------------------------------------------------------------------------------------------
>
>                 Key: SCB-2656
>                 URL: https://issues.apache.org/jira/browse/SCB-2656
>             Project: Apache ServiceComb
>          Issue Type: Bug
>            Reporter: hujinming178
>            Priority: Major
>             Fix For: java-chassis-2.8.0
>
>
> Problem triggered scenario 
> Suppose there are two microservices A and B developed by the Java-chassis 
> framework, and the B microservice has A contract interface with 
> qualifiedName= b.Scchema.oper. If A traffic limiting rule for any.schema. 
> oper is added to microservice B in the configuration center after the service 
> is started, A invokes the OPER interface of B. B of the org. Apache. 
> Servicecomb. QPS. QpsControllerManager# configQpsControllerMap attribute 
> cache A.s chema. Oper QpsStrategy object actually is Any.schema. oper 
> Specifies the configuration item. 
> When you delete the traffic limiting rule of the any.schema. oper interface 
> from the configuration center, Dynamic configuration to refresh the callback 
> will trigger org. Apache. Servicecomb. QPS. QpsControllerManager# 
> updateObjMap method to refresh the cache each interface QpsStrategy object, 
> Oper key (configKey= any.schema. oper) does not match the a.sama. oper key 
> cached in configQpsControllerMap. Therefore, the QpsStrategy object pointed 
> to by a.sama. oper cannot be refreshed. It is still the any.schema. oper 
> configuration item, and the configuration value is null. Lead to org. Apache. 
> Servicecomb. QPS. Strategy. FixedWindowStrategy# isLimitNewRequest of 
> enclosing getQpsLimit () = = null check is true, Throws an 
> IllegalStateException("should not Happen "). The schema.oper interface that 
> calls Microservice A to B cannot be adjusted. 
>  
> The problem is the direct cause of org. Apache. Servicecomb. QPS. 
> QpsControllerManager# updateObjMap method without considering the micro 
> service level for ANY scene, A cache flush in 
> QpsControllerManager#updateObjMap may be missed.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to