Add a note about order not being identical

andybalaam/event-thread-and-order
Andy Balaam 6 months ago
parent 6859b8dbb0
commit d2cc49df9f

@ -203,6 +203,32 @@ clarification:
Further, it should be stated that events with negative order are always read,
even if no receipt exists.
### Order does not have to be unique
If this proposal required the `order` property to be unique within a room, it
might inadvertantly put constraints on the implementation of servers since some
linearised process would need to be involved.
So, we do not require that `order` should be unique within a room. Instead, if
two events have the same `order`, they are both marked as read by a receipt with
that order.
Events with identical order introduce some imprecision into the process of
marking events as read, so they should be minimised where possible, but some
overlap is tolerable where the server implementation requires it.
So, a server might choose to use the epoch millisecond at which it received a
message as its order. However, if a server receives a large batch of messages in
the same millisecond, this might cause undesirable behaviour, so a refinement
might be the millisecond as the integer part and a fractional part that
increases as the batch is processed, preserving the order in which the server
receives the messages in the batch.
If a server were processing multiple batches in parallel, it could implement
this in each process separately, and accept that some events would receive
identical orders, but this would be rare in practice and have little effect on
end users' experience of unread markers.
### Redacted events
Existing servers already include an `unsigned` section with redacted events,

Loading…
Cancel
Save