Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rate: simplify code #20

Closed
wants to merge 1 commit into from
Closed

rate: simplify code #20

wants to merge 1 commit into from

Conversation

josharian
Copy link
Contributor

When a long time has passed since a previous call to the rate limiter,
we can overflow when calculating how many new tokens are available.

To prevent that, we calculated a maximum elapsed amount.
When we used maxElapseed, we ended up converting a duration into tokens
and then back. This operation was lossy, so we took pains to increase
the precision of the conversion in tokensFromDuration.

An easier fix is to avoid the round trip entirely.
We know the max number of new tokens we should add; cap it directly.
This lets us use the original, simpler tokensFromDuration.

While we're here, tweak durationFromTokens for clarity.

Updates #34861

When a long time has passed since a previous call to the rate limiter,
we can overflow when calculating how many new tokens are available.

To prevent that, we calculated a maximum elapsed amount.
When we used maxElapseed, we ended up converting a duration into tokens
and then back. This operation was lossy, so we took pains to increase
the precision of the conversion in tokensFromDuration.

An easier fix is to avoid the round trip entirely.
We know the max number of new tokens we should add; cap it directly.
This lets us use the original, simpler tokensFromDuration.

While we're here, tweak durationFromTokens for clarity.

Updates #34861
@google-cla
Copy link

google-cla bot commented Jul 21, 2021

We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for all the commit author(s) or Co-authors. If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google.
In order to pass this check, please resolve this problem and then comment @googlebot I fixed it.. If the bot doesn't comment, it means it doesn't think anything has changed.

ℹ️ Googlers: Go here for more info.

@google-cla google-cla bot added the cla: no label Jul 21, 2021
@josharian
Copy link
Contributor Author

Oops, context switching fail. Will re-send via gerrit later.

@josharian josharian closed this Jul 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant