fix(mysql): index gap lock deadlock #12119
Merged
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.
Effects MySQL
Fix a condition where multiple transactions concurrently inserting new rows within the same index gap would result in a deadlock. Further details on the condition can be found here.
The solution involves changing the isolation level to READ_COMMITTED and relying on the read locks which were added using "select for update"
Added a smoke-test case with interleaved URNs with transaction concurrency.
Database transaction handling for all databases
MCP_CONSUMER_BATCH_ENABLED
is not enabled by default.Feature
Added header support to
CREATE
/CREATE_ENTITY
change types to allow non-exception behavior if the write should be silently dropped if theCREATE
/CREATE_ENTITY
check fails. Clients can determine if the case is an error or simply ignored.Checklist