zulip/zerver/tornado
Tim Abbott 0ba63826dd tornado: Disable event compression for mark-as-unread events.
Doing rapid pace mark-as-unread in the Zulip web application, one
observed assertion failures showing that the server would send an
event containing multiple message IDs but only one of the messages
present in the message_details side data structure.

The cause of this was the "virtual events" compression system; two
flags/remove/read events were being combined by simply concatenating
the lists of events, without any attempt to merge the
`message_details` field on those objects.

The immediate fix is to disable virtual events compression for this
event class, but it's not unlikely we'll need to just eliminate the
virtual_events system entirely, because it seems difficult to make it
soundly handle a message whose state for a given flag changes back and
forth while the client is offline.

But we'll leave that for later, since removing that optimization
deserves more discussion than fixing this event corruption bug.
2022-11-17 00:46:26 -08:00
..
__init__.py
application.py tornado: Construct Django BaseHandler once, not per-request. 2022-09-30 11:20:45 -07:00
descriptors.py tornado: Support sharding by user ID. 2022-11-15 17:27:01 -08:00
django_api.py tornado: Support sharding by user ID. 2022-11-15 17:27:01 -08:00
event_queue.py tornado: Disable event compression for mark-as-unread events. 2022-11-17 00:46:26 -08:00
exceptions.py python: Convert deprecated Django ugettext alias to gettext. 2021-04-15 18:01:34 -07:00
handlers.py python: Replace avoidable uses of __special__ attributes. 2022-10-10 08:32:29 -07:00
ioloop_logging.py tornado: Remove instrument_tornado_ioloop. 2022-05-02 17:41:49 -07:00
sharding.py tornado: Support sharding by user ID. 2022-11-15 17:27:01 -08:00
views.py tornado: Support sharding by user ID. 2022-11-15 17:27:01 -08:00