xds:Fix ConcurrentModificationException in PriorityLoadBalancer#9728
Merged
larry-safran merged 3 commits intogrpc:masterfrom Dec 2, 2022
Merged
xds:Fix ConcurrentModificationException in PriorityLoadBalancer#9728larry-safran merged 3 commits intogrpc:masterfrom
larry-safran merged 3 commits intogrpc:masterfrom
Conversation
Contributor
Author
|
Per Eric should not use this approach as want config updates to be atomic |
…king copy of children values to iterate rather than directly using children in for loop.
temawi
approved these changes
Dec 2, 2022
Contributor
temawi
left a comment
There was a problem hiding this comment.
Thank you!
Would it be worth adding a comment(s) on why this extra step is needed?
ejona86
reviewed
Dec 2, 2022
|
|
||
| // Includes all active and deactivated children. Mutable. New entries are only added from priority | ||
| // 0 up to the selected priority. An entry is only deleted 15 minutes after its deactivation. | ||
| // Note that because all configuration updates should be atomic, updates to children can happen |
Member
There was a problem hiding this comment.
This is incorrect. Updates to children happens within the synchronization context. When this code is running it is already within the synchronization context, so calling into the child can cause the child to call back into the LB policy and modify the map.
Basically, the problem here is a single-threaded mundane "modified while iterating" problem.
larry-safran
added a commit
to larry-safran/grpc-java
that referenced
this pull request
Dec 9, 2022
…#9728) Fix ConcurrentModificationException in PriorityLoadBalancer by making copy of children values to iterate rather than directly using children in for loop.
larry-safran
added a commit
that referenced
this pull request
Dec 12, 2022
… (#9744) Fix ConcurrentModificationException in PriorityLoadBalancer by making copy of children values to iterate rather than directly using children in for loop.
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
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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 problem was introduced by pr 9670.
Make a copy of children values to iterate rather than directly using children in for loop
This fixes b/259971157.