emberjs/ember.js — pull request #3364 by hjdivad (2013-09-09 05:15:45+00:00)
Title: ReduceComputedProperty ignore invalidated property observers.

It can happen that several reduce computed properties depend on the same
items, because the same items are shared between computed arrays. This will
often be the case with filter/sort chains, for instance. When they depend on
the same item properties it can happen that an item property change is
registered for a downstream array, but a different item property observer
invalidates the change.

For example, changing the priority on an item may cause it to be resorted.
This resorting will result in it being removed and reinserted into a
downstream filtering. However, the original priority change also triggered
an observer to update the filtering: an observer that has been invalidated by
the changes resulting from its being resorted.

- Properly invalidate such observers.
- Also update indexes even more lazily, during `flushChanges`.

Fix #3273.