Data Adapter: Only trigger model type update if the record live array count actually changed #15604
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.
Fixes emberjs/ember-inspector#690
The issue:
In some cases, Ember Data's
peekAll
triggersarrayContentDidChange
on the record array manager's live record array even if the records didn't change. One example case is when we callunloadRecord
followed bypeekAll
within the same run loop.The
peekAll
will trigger the array observer'sdidChange
callback (with zero changes). This is generally harmless as long as we guard against that in our data adapter. Without the guard, we risk causing an infinite recursion because ourdidChange
observer itself callspeekAll
, which in the above scenario will re-trigger the observer and so on.