mirror of https://github.com/zulip/zulip.git
docs: Rename 'send_event' to 'send_event_on_commit'.
This commit updates the doc to rename the 'send_event' function to 'send_ecent_on_commit'. This is required as we no longer have the send_event function and we prefer to use 'send_event_on_commit' in most cases and 'send_event_rollback_unsafe' in a few.
This commit is contained in:
parent
e763d065a3
commit
a7f48e260c
|
@ -25,7 +25,7 @@ paths will be familiar to Django developers.
|
||||||
|
|
||||||
- `zerver/actions/*.py` Most code doing writes to user-facing
|
- `zerver/actions/*.py` Most code doing writes to user-facing
|
||||||
database tables lives here. In particular, we have a policy that
|
database tables lives here. In particular, we have a policy that
|
||||||
all code calling `send_event` to trigger [pushing data to
|
all code calling `send_event_on_commit` to trigger [pushing data to
|
||||||
clients](../subsystems/events-system.md) must live here.
|
clients](../subsystems/events-system.md) must live here.
|
||||||
|
|
||||||
- `zerver/views/*.py` Most [Django views](https://docs.djangoproject.com/en/5.0/topics/http/views/).
|
- `zerver/views/*.py` Most [Django views](https://docs.djangoproject.com/en/5.0/topics/http/views/).
|
||||||
|
|
|
@ -51,16 +51,16 @@ problems in a scalable, correct, and predictable way.
|
||||||
## Generation system
|
## Generation system
|
||||||
|
|
||||||
Zulip's generation system is built around a Python function,
|
Zulip's generation system is built around a Python function,
|
||||||
`send_event(realm, event, users)`. It accepts the realm (used for
|
`send_event_on_commit(realm, event, users)`. It accepts the realm (used for
|
||||||
sharding), the event data structure (just a Python dictionary with
|
sharding), the event data structure (just a Python dictionary with
|
||||||
some keys and value; `type` is always one of the keys but the rest
|
some keys and value; `type` is always one of the keys but the rest
|
||||||
depends on the specific event) and a list of user IDs for the users
|
depends on the specific event) and a list of user IDs for the users
|
||||||
whose clients should receive the event. In special cases such as
|
whose clients should receive the event. In special cases such as
|
||||||
message delivery, the list of users will instead be a list of dicts
|
message delivery, the list of users will instead be a list of dicts
|
||||||
mapping user IDs to user-specific data like whether that user was
|
mapping user IDs to user-specific data like whether that user was
|
||||||
mentioned in that message. The data passed to `send_event` are simply
|
mentioned in that message. The data passed to `send_event_on_commit` are
|
||||||
marshalled as JSON and placed in the `notify_tornado` RabbitMQ queue
|
simply marshalled as JSON and placed in the `notify_tornado` RabbitMQ
|
||||||
to be consumed by the delivery system.
|
queue to be consumed by the delivery system.
|
||||||
|
|
||||||
Usually, this list of users is one of 3 things:
|
Usually, this list of users is one of 3 things:
|
||||||
|
|
||||||
|
@ -71,8 +71,8 @@ Usually, this list of users is one of 3 things:
|
||||||
reactions, message editing, etc.); i.e. the subscribers to a channel
|
reactions, message editing, etc.); i.e. the subscribers to a channel
|
||||||
or the people on a direct message thread.
|
or the people on a direct message thread.
|
||||||
|
|
||||||
It is the responsibility of the caller of `send_event` to choose the
|
It is the responsibility of the caller of `send_event_on_commit` to choose
|
||||||
list of user IDs correctly. There can be security problems if, for
|
the list of user IDs correctly. There can be security problems if, for
|
||||||
example, an event containing direct message content is sent to the
|
example, an event containing direct message content is sent to the
|
||||||
entire organization. However, if an event isn't sent to enough clients,
|
entire organization. However, if an event isn't sent to enough clients,
|
||||||
there will likely be user-visible real-time sync bugs.
|
there will likely be user-visible real-time sync bugs.
|
||||||
|
@ -388,9 +388,9 @@ The final detail we need to ensure that `apply_events` always works
|
||||||
correctly is to make sure that we have relevant tests for
|
correctly is to make sure that we have relevant tests for
|
||||||
every event type that can be generated by Zulip. This can be tested
|
every event type that can be generated by Zulip. This can be tested
|
||||||
manually using `test-backend --coverage BaseAction` and then
|
manually using `test-backend --coverage BaseAction` and then
|
||||||
checking that all the calls to `send_event` are covered. Someday
|
checking that all the calls to `send_event_on_commit` are covered.
|
||||||
we'll add automation that verifies this directly by inspecting the
|
Someday we'll add automation that verifies this directly by inspecting
|
||||||
coverage data.
|
the coverage data.
|
||||||
|
|
||||||
#### page_params
|
#### page_params
|
||||||
|
|
||||||
|
|
|
@ -27,11 +27,11 @@ As a reminder, the relevant part of the flow for sending messages is
|
||||||
as follows:
|
as follows:
|
||||||
|
|
||||||
- `do_send_messages` is the synchronous message-sending code path,
|
- `do_send_messages` is the synchronous message-sending code path,
|
||||||
and passing the following data in its `send_event` call:
|
and passing the following data in its `send_event_on_commit` call:
|
||||||
- Data about the message's content (e.g., mentions, wildcard
|
- Data about the message's content (e.g., mentions, wildcard
|
||||||
mentions, and alert words) and encodes it into the `UserMessage`
|
mentions, and alert words) and encodes it into the `UserMessage`
|
||||||
table's `flags` structure, which is in turn passed into
|
table's `flags` structure, which is in turn passed into
|
||||||
`send_event` for each user receiving the message.
|
`send_event_on_commit` for each user receiving the message.
|
||||||
- Data about user configuration relevant to the message, such as
|
- Data about user configuration relevant to the message, such as
|
||||||
`online_push_user_ids` and `stream_notify_user_ids`, are included
|
`online_push_user_ids` and `stream_notify_user_ids`, are included
|
||||||
in the main event dictionary.
|
in the main event dictionary.
|
||||||
|
@ -141,8 +141,8 @@ structure of the system, when thinking about changes to it:
|
||||||
details from the database like "which users receiving this message
|
details from the database like "which users receiving this message
|
||||||
are online".
|
are online".
|
||||||
- **Thousands of users**. Zulip supports thousands of users, and we
|
- **Thousands of users**. Zulip supports thousands of users, and we
|
||||||
want to avoid `send_event()` pushing large amounts of per-user data
|
want to avoid `send_event_on_commit()` pushing large amounts of
|
||||||
to Tornado via RabbitMQ for scalability reasons.
|
per-user data to Tornado via RabbitMQ for scalability reasons.
|
||||||
- **Tornado doesn't do database queries**. Because the Tornado system
|
- **Tornado doesn't do database queries**. Because the Tornado system
|
||||||
is an asynchronous event-driven framework, and our Django database
|
is an asynchronous event-driven framework, and our Django database
|
||||||
library is synchronous, database queries are very expensive. So
|
library is synchronous, database queries are very expensive. So
|
||||||
|
|
|
@ -277,7 +277,7 @@ first contacts the server, the server sends the client its
|
||||||
initial state. Subsequently, clients subscribe to "events," which can
|
initial state. Subsequently, clients subscribe to "events," which can
|
||||||
(among other things) indicate that settings have changed.
|
(among other things) indicate that settings have changed.
|
||||||
|
|
||||||
For the backend piece, we will need our action to make a call to `send_event`
|
For the backend piece, we will need our action to make a call to `send_event_on_commit`
|
||||||
to send the event to clients that are active. We will also need to
|
to send the event to clients that are active. We will also need to
|
||||||
modify `fetch_initial_state_data` so that the new field is passed to
|
modify `fetch_initial_state_data` so that the new field is passed to
|
||||||
clients. See [our event system docs](../subsystems/events-system.md) for all the
|
clients. See [our event system docs](../subsystems/events-system.md) for all the
|
||||||
|
@ -299,7 +299,7 @@ help catch coding mistakes, not to check for bad user input.
|
||||||
|
|
||||||
After updating the given realm field, `do_set_realm_property` creates
|
After updating the given realm field, `do_set_realm_property` creates
|
||||||
an 'update' event with the name of the property and the new value. It
|
an 'update' event with the name of the property and the new value. It
|
||||||
then calls `send_event`, passing the event and the list of users whose
|
then calls `send_event_on_commit`, passing the event and the list of users whose
|
||||||
browser sessions should be notified as the second argument. The latter
|
browser sessions should be notified as the second argument. The latter
|
||||||
argument can be a single user (if the setting is a personal one, like
|
argument can be a single user (if the setting is a personal one, like
|
||||||
time display format), members in a particular channel only or all
|
time display format), members in a particular channel only or all
|
||||||
|
@ -327,7 +327,7 @@ def do_set_realm_property(
|
||||||
property=name,
|
property=name,
|
||||||
value=value,
|
value=value,
|
||||||
)
|
)
|
||||||
send_event(realm, event, active_user_ids(realm))
|
send_event_on_commit(realm, event, active_user_ids(realm))
|
||||||
```
|
```
|
||||||
|
|
||||||
If the new realm property being added does not fit into the
|
If the new realm property being added does not fit into the
|
||||||
|
@ -351,7 +351,7 @@ def do_set_realm_authentication_methods(
|
||||||
property='default',
|
property='default',
|
||||||
data=dict(authentication_methods=realm.authentication_methods_dict())
|
data=dict(authentication_methods=realm.authentication_methods_dict())
|
||||||
)
|
)
|
||||||
send_event(realm, event, active_user_ids(realm))
|
send_event_on_commit(realm, event, active_user_ids(realm))
|
||||||
```
|
```
|
||||||
|
|
||||||
### Update application state
|
### Update application state
|
||||||
|
|
|
@ -332,7 +332,7 @@ def update_realm(
|
||||||
```
|
```
|
||||||
|
|
||||||
`realm.save()` actually saves the changes to the realm to the
|
`realm.save()` actually saves the changes to the realm to the
|
||||||
database, and `send_event` sends the event to active clients belonging
|
database, and `send_event_on_commit` sends the event to active clients belonging
|
||||||
to the provided list of users (in this case, all active users in the
|
to the provided list of users (in this case, all active users in the
|
||||||
Zulip realm).
|
Zulip realm).
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue