Skip to content

lazy-loading behaviour for /sync is incorrectly specified #942

@DMRobertson

Description

@DMRobertson

Link to problem area: https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3sync

I'm having a hard time following the description of /sync's behaviour. In particular, the third paragraph:

Further, like other members, the user's own membership event is eligible
for being considered redundant by the server. When a sync is limited,
the server MUST return membership events for events in the gap
(between since and the start of the returned timeline), regardless
as to whether or not they are redundant. This ensures that joins/leaves
and profile changes which occur during the gap are not lost.

Note that the default behaviour of state is to include all membership
events, alongside other state, when lazy-loading is not enabled.

Points of confusion:

  • I'm not sure what "being considered redundant by the server" refers to.

    • Is this in the context of lazy-loading? I thought that involved a specific user-defined filter, rather than the server's discretion.
    • The events which live the in the "gap" aren't redundant---they're just omitted---so I don't think it's talking about that.
  • "membership events for events in the gap" sounds like "all membership events which are in the gap" to me; it wasn't obvious to me that events "have" or "own" a membership event.

    • It apparently means "the most recent membership event for each sender of an event in the gap".
    • Must we only return such membership events in the gap, or can they predate the gap? Put differently, can the server assume the client has a complete understanding of memberships at the since token, if it given? (Is this the meaning of redundant in the final penultimate sentence?)
  • "Note that the default behaviour of state is to include all membership events".

    • All historical events back to the beginning of time?
    • What about events after the since token?
    • Or just the most recent such event prior to the since token?
    • For each currently joined member? For members who have left/been kicked or banned?

Metadata

Metadata

Assignees

No one assigned

    Labels

    clarificationAn area where the expected behaviour is understood, but the spec could do with being more explicitspec-bugSomething which is in the spec, but is wrong

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions