zulip/zerver
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
..
actions message_flags: Don’t send events for no-op flag updates. 2022-11-16 21:13:44 -08:00
data_import slack import: Merge and dedupe same-base emoji reactions and userlists. 2022-11-16 11:11:43 -08:00
integration_fixtures/nagios
lib message: Fetch streams in bulk in bulk_access_messages. 2022-11-16 21:13:44 -08:00
management tornado: Support sharding by user ID. 2022-11-15 17:27:01 -08:00
migrations signup: Implement use of MultiUseInvite.status attribute. 2022-11-14 17:13:16 -08:00
openapi message_flags: Allow updating flags by narrows and anchors. 2022-11-16 21:13:44 -08:00
tests message_flags: Allow updating flags by narrows and anchors. 2022-11-16 21:13:44 -08:00
tornado tornado: Disable event compression for mark-as-unread events. 2022-11-17 00:46:26 -08:00
views message_flags: Allow updating flags by narrows and anchors. 2022-11-16 21:13:44 -08:00
webhooks papertrail: Strengthen types using WildValue. 2022-11-15 15:05:02 -08:00
worker ruff: Enable import sorting, replacing isort. 2022-11-16 09:29:11 -08:00
__init__.py
apps.py sentry: Initialize sentry in AppConfig ready hook. 2022-09-26 12:42:36 -07:00
context_processors.py templates: Rename `OPEN_GRAPH` variables to `PAGE` or `PAGE_METADATA`. 2022-09-06 14:57:06 -07:00
decorator.py python: Clean up getattr, setattr, delattr calls with literal names. 2022-10-10 08:40:28 -07:00
filters.py
forms.py ruff: Enable import sorting, replacing isort. 2022-11-16 09:29:11 -08:00
logging_handlers.py python: Use Python 3.8 typing.{Protocol,TypedDict}. 2022-04-27 12:57:49 -07:00
middleware.py scim: Check SCIM tokens using constant-time comparison. 2022-11-16 10:52:48 -05:00
models.py ruff: Enable naming errors. 2022-11-16 09:29:11 -08:00
signals.py requirements: Upgrade to Django 4.0. 2022-07-13 16:07:17 -07:00