[ 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)