fix(datastore): prevent version cross-contamination between different model types#14570
Open
anivar wants to merge 2 commits intoaws-amplify:mainfrom
Open
fix(datastore): prevent version cross-contamination between different model types#14570anivar wants to merge 2 commits intoaws-amplify:mainfrom
anivar wants to merge 2 commits intoaws-amplify:mainfrom
Conversation
3 tasks
f9f463d to
26fe0cd
Compare
🦋 Changeset detectedLatest commit: 28d7ee0 The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
… model types (aws-amplify#13412) All MutationEvent queries in the outbox (enqueue, getForModel, syncOutboxVersionsOnDequeue) now filter by both `model` and `modelId` to prevent _version cross-contamination when different model types share the same primary key value. Added test verifying that dequeuing a mutation for one model type does not update the _version on queued mutations for a different model type with the same ID.
26fe0cd to
28d7ee0
Compare
Contributor
Author
|
This fix may help with sync issues reported in #14572 (DataStore not syncing backend changes) — version cross-contamination between different model types could cause silent sync failures. |
3 tasks
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.
Description of changes
Fixes issue where DataStore MutationEvent queries in the outbox matched by
modelIdonly, without filtering bymodeltype. This caused_versioncross-contamination when different model types shared the same primary key value, leading to version conflict errors on subsequent mutations.Three locations fixed in
outbox.ts:enqueue()— existing mutation lookup now filters bymodel+modelIdgetForModel()— query now filters bymodel+modelIdsyncOutboxVersionsOnDequeue()— version sync query now filters bymodel+modelIdTest fixes:
getModelDefinition()calls in tests to pass the model constructor (Model) instead of a model instance, which returnedundefinedwhen themodelfilter was addedprocessMutationResponse()helper to pass constructor togetModelDefinition()_versionisolation between different model types sharing the same IDIssue #, if available
Resolves #13412
Description of how you validated changes
connectivityHandling.test.ts, unrelated to this change)Checklist
yarn testpassesBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.