mirror of https://github.com/zulip/zulip.git
0ba63826dd
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. |
||
---|---|---|
.. | ||
__init__.py | ||
application.py | ||
descriptors.py | ||
django_api.py | ||
event_queue.py | ||
exceptions.py | ||
handlers.py | ||
ioloop_logging.py | ||
sharding.py | ||
views.py |