kezhuw commented on code in PR #2264:
URL: https://github.com/apache/zookeeper/pull/2264#discussion_r2120001122
##########
zookeeper-server/src/main/java/org/apache/zookeeper/server/BlueThrottle.java:
##########
@@ -327,6 +327,9 @@ public synchronized boolean checkLimit(int need) {
if (diff > fillTime) {
int refill = (int) (diff * fillCount / fillTime);
tokens = Math.min(tokens + refill, maxTokens);
+ if (tokens < 0) {
+ tokens = maxTokens;
+ }
Review Comment:
```suggestion
long refill = diff * fillCount / fillTime;
tokens = (int) Math.min(tokens + refill, maxTokens);
if (tokens < 0) {
tokens = maxTokens;
LOG.error("Throttle config values {}({}) and {}({}) are
insane and cause long integer overflow after {}ms",
CONNECTION_THROTTLE_FILL_TIME, fillTime,
CONNECTION_THROTTLE_FILL_COUNT, fillCount, diff);
}
```
> fillCount is 3 and fillTime is 1,this case is triggered when there is no
request for more than 8 days.
In case of `long` and above settings, it will take 90 million years to
overflow. Even for `fillCount 30000, filleTime 1`(which is insane) it takes 9
thousand years.
So I think we could combine [the two
methods](https://github.com/apache/zookeeper/pull/2264#discussion_r2113804414)
together to solve both overflow and insane/incorrect configurations.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]