Ref T4379. When you add a redundant edge, we currently compare the values strictly, using ===. However, the old and new versions of the edge have slightly different member data, because one has been synthetically constructed and one has been read from the database.
Instead, compare only the things we actually care about:
- Were any destintations added or removed?
- Was any edge data changed?
If the answer to both questions is "no", consider the update a no-op.