Make many-to-many additions idempotent on unique constraint violation - #4611
Merged
Conversation
johha
force-pushed
the
ignore-unique-errors-for-many-to-many
branch
from
October 22, 2025 09:27
19a9d0e to
1d21619
Compare
johha
marked this pull request as ready for review
October 22, 2025 10:01
jochenehret
reviewed
Oct 22, 2025
jochenehret
reviewed
Oct 22, 2025
jochenehret
self-requested a review
October 22, 2025 13:24
jochenehret
previously approved these changes
Oct 22, 2025
Adds an `ignored_unique_constraint_violation_errors` option to the many_to_many association in the `VcapRelations` Sequel plugin. When this option is provided with a list of index name patterns, any `Sequel::UniqueConstraintViolation` error that occurs during an `add_` operation on an association and matches one of the patterns will be caught. The operation is wrapped in a transaction with a savepoint, which is rolled back upon catching the specific error, effectively making the addition idempotent. This prevents race conditions where concurrent requests attempt to add the same association. This issue can be observed when a user makes two POST requests at the same time to create a new resource instance. This new option is applied to the `staging_spaces relationship in the `SecurityGroup` model to handle potential concurrent updates. Further models will updated in separate commits.
johha
force-pushed
the
ignore-unique-errors-for-many-to-many
branch
from
October 22, 2025 13:25
1d21619 to
cfe5b65
Compare
jochenehret
approved these changes
Oct 22, 2025
ari-wg-gitbot
added a commit
to cloudfoundry/capi-release
that referenced
this pull request
Oct 23, 2025
Changes in cloud_controller_ng:
- Make many-to-many additions idempotent on unique constraint violation
PR: cloudfoundry/cloud_controller_ng#4611
Author: Johannes Haass <johannes.haass@sap.com>
johha
added a commit
that referenced
this pull request
Nov 3, 2025
Commit `8b932f9f9498d2d222b981aa7dc5db7a6d16dcf7` (PR #4611) introduced the option to ignore `UniqueConstraintViolation`` errors for specified indexes/ constraints/ keys. This change does the same for the domain, route and service instance model. The ignore logic is already tested in the vcap_relations plugin (see #4611).
5 tasks
johha
added a commit
that referenced
this pull request
Nov 5, 2025
Commit `8b932f9f9498d2d222b981aa7dc5db7a6d16dcf7` (PR #4611) introduced the option to ignore `UniqueConstraintViolation`` errors for specified indexes/ constraints/ keys. This change does the same for the domain, route and service instance model. The ignore logic is already tested in the vcap_relations plugin (see #4611).
sethboyles
pushed a commit
to atanas-attodorov-wq/cloud_controller_ng
that referenced
this pull request
Dec 11, 2025
…dry#4641) Commit `8b932f9f9498d2d222b981aa7dc5db7a6d16dcf7` (PR cloudfoundry#4611) introduced the option to ignore `UniqueConstraintViolation`` errors for specified indexes/ constraints/ keys. This change does the same for the domain, route and service instance model. The ignore logic is already tested in the vcap_relations plugin (see cloudfoundry#4611).
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 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.
Adds an
ignored_unique_constraint_violation_errorsoption to the many_to_many association in theVcapRelationsSequel plugin. When this option is provided with a list of index name patterns, anySequel::UniqueConstraintViolationerror that occurs during anadd_operation on an association and matches one of the patterns will be caught. The operation is wrapped in a transaction with a savepoint, which is rolled back upon catching the specific error, effectively making the addition idempotent. This prevents race conditions where concurrent requests attempt to add the same association. This issue can be observed when a user makes two POST requests at the same time to create a new resource instance.This new option is applied to the
staging_spaces relationshipin theSecurityGroupmodel to handle potential concurrent updates. Further models will updated in separate commits.I have reviewed the contributing guide
I have viewed, signed, and submitted the Contributor License Agreement
I have made this pull request to the
mainbranchI have run all the unit tests using
bundle exec rakeI have run CF Acceptance Tests