graph-ldap: Fix possible races when editing group membership in parallel #6214
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.
As the standard LDAP groups (groupOfNames) require at least one "member" value to be present in a group, we have workarounds in place that add an empty member ("") when creating a new group or when removing the last member from the group. This can cause a race condition when e.g. multiple request to remove members from a group an running in parallel, as we need to read the group before we can construct the modification request. If some other request modified the group (e.g. deleted the 2nd last member) after we read it, we create non-working modification request.
These changes try to catch those errors and retry the modification request once.
Fixes: #6170