Skip to content

/sync incorrectly calculates state changes for non-gappy syncs with lazy-loading #17050

@richvdh

Description

@richvdh

Consider the following DAG:

             E1
           ↗    ↖
          |      S2
          |
        --|---
          |
          E3

Now, unlike the gappy sync case, we can't really blame this on the client: there is no indication that events or state may be missing, though per matrix-org/matrix-spec#942 (comment) it would be nice if the spec actually told us the right thing to do here.

Anyway, I think really this is a consequence of #16940: if that were fixed, then we wouldn't be in the situation of needing to send S2 in the incremental sync.

I'm calling it out as a separate issue because:

  • The trigger conditions are a bit different.
  • We could work around it by disabling lazy-loading for all incremental syncs, and indeed maybe we should.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions