[ https://issues.apache.org/jira/browse/SCB-651?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16512155#comment-16512155 ]
ASF GitHub Bot commented on SCB-651: ------------------------------------ limbojinne commented on a change in pull request #770: [SCB-651] Fixes bug of qps rate limit value URL: https://github.com/apache/incubator-servicecomb-java-chassis/pull/770#discussion_r195340419 ########## File path: handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/QpsController.java ########## @@ -57,6 +60,11 @@ public void setQpsLimit(Integer qpsLimit) { public boolean isLimitNewRequest() { long newCount = requestCount.incrementAndGet(); long msNow = System.currentTimeMillis(); + if (firstCycle) { Review comment: Yes, it's same as setting lastRequestCount = 1. I separate the assignment clause since this issue only occurs at the beginning (i.e. in the first cycle), but the following cycles operate just as expected. I committed this modification because I was expecting the number of requests allowed per second should be equal to the qps limit value. For example, 5 successful requests when setting limit value as 5, no matter that's in a first cycle or new cycles. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > QPS rate limit bug > ------------------ > > Key: SCB-651 > URL: https://issues.apache.org/jira/browse/SCB-651 > Project: Apache ServiceComb > Issue Type: Bug > Components: Java-Chassis > Affects Versions: java-chassis-1.0.0-m1 > Reporter: Sean Li > Assignee: Sean Li > Priority: Major > Attachments: limit value as 1.jpeg, limit value as 2.jpeg > > > When setting _servicecomb.flowcontrol.Provider.qps.limit.[ServiceName]_, the > actual number of requests allowed per second are 1 less than the limit value. > > For example, if I set _flowcontrol.Provider.qps.limit._ > _business-service-consumer_ as 1, I'll get NO successful request at the very > beginning, although I would expect 1 successful request instead of none. > Similarly, if I set _flowcontrol.Provider.qps.limit._ > _business-service-consumer_ as 2, I'll get 1 successful request instead of > 2. > > -However, if I pause before sending requests, for example add > _Thread.sleep(100)_ before invoking the first request, the number of requests > allowed per second will be correct this time. (i.e. 1 successful request when > limit value is 1, 2 successful requests when limit value is 2, etc.)- > -- This message was sent by Atlassian JIRA (v7.6.3#76005)