-
Notifications
You must be signed in to change notification settings - Fork 1.1k
make sure channel round-robin cannot fail on overflow #1551
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
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The AtomicInteger might overflow. Previously, we'll just die since we'd try to index into an array with negative number. This commit makes sure we have a valid index to use. Note that this is still not a "perfect" round robin. If the number of channels does not divide 2^32, we'll slightly prefer lower indices. This is probably OK since the bias is small, and the alternative requires a much more expensive lock. Fixes #1543.
Member
|
Hmm how about a test? |
Contributor
Author
|
@garrettjonesgoogle PTAL |
Member
|
LGTM |
meltsufin
pushed a commit
that referenced
this pull request
Dec 22, 2025
[](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [com.google.truth:truth](https://togithub.com/google/truth) | `1.4.1` -> `1.4.2` | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>google/truth (com.google.truth:truth)</summary> ### [`v1.4.2`](https://togithub.com/google/truth/releases/tag/v1.4.2): 1.4.2 This release is the final step of copying all our methods from `Truth8` to `Truth`. If you have not already migrated your usages from `Truth8` to `Truth`, you may see build errors: OptionalSubjectTest.java:39: error: reference to assertThat is ambiguous assertThat(Optional.of("foo")).isPresent(); ^ both method assertThat(@​org.checkerframework.checker.nullness.qual.Nullable Optional<?>) in Truth8 and method assertThat(@​org.checkerframework.checker.nullness.qual.Nullable Optional<?>) in Truth match In most cases, you can migrate your whole project mechanically: `git grep -l Truth8 | xargs perl -pi -e 's/\bTruth8\b/Truth/g;'`. (You can make that change before upgrading to Truth 1.4.2 or as part of the same commit.) If you instead need to migrate your project incrementally (for example, because it is very large), you may want to upgrade your version of Truth incrementally, too, following our instructions for [1.3.0](https://togithub.com/google/truth/releases/tag/v1.3.0) and [1.4.0](https://togithub.com/google/truth/releases/tag/v1.4.0). ##### For help Please feel welcome to [open an issue](https://togithub.com/google/truth/issues/new) to report problems or request help. ##### Changelog - Removed temporary type parameters from `Truth.assertThat(Stream)` and `Truth.assertThat(Optional)`. This can create build errors, which you can fix by replacing all your references to `Truth8` with references to `Truth`. ([`45782bd`](https://togithub.com/google/truth/commit/45782bd0e)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/googleapis/java-logging). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMjAuMiIsInVwZGF0ZWRJblZlciI6IjM3LjIyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The AtomicInteger might overflow.
Previously, we'll just die since we'd try to index into an array
with negative number.
This commit makes sure we have a valid index to use.
Note that this is still not a "perfect" round robin.
If the number of channels does not divide 2^32,
we'll slightly prefer lower indices.
This is probably OK since the bias is small,
and the alternative requires a much more expensive lock.
cc @davidtorres