mirror of https://github.com/zulip/zulip.git
schedule_messages: Update do_schedule_messages to send event on commit.
Earlier, we were using 'send_event' in 'do_schedule_messages' which can lead to a situation, if any db operation is added after the 'send_event' in future, where we enqueue events but the action function fails at a later stage. Events should not be sent until we know we're not rolling back. Fixes part of #30489.
This commit is contained in:
parent
7302d533fe
commit
04347bb315
|
@ -24,7 +24,7 @@ from zerver.lib.scheduled_messages import access_scheduled_message
|
||||||
from zerver.lib.string_validation import check_stream_topic
|
from zerver.lib.string_validation import check_stream_topic
|
||||||
from zerver.models import Client, Realm, ScheduledMessage, Subscription, UserProfile
|
from zerver.models import Client, Realm, ScheduledMessage, Subscription, UserProfile
|
||||||
from zerver.models.users import get_system_bot
|
from zerver.models.users import get_system_bot
|
||||||
from zerver.tornado.django_api import send_event
|
from zerver.tornado.django_api import send_event, send_event_on_commit
|
||||||
|
|
||||||
SCHEDULED_MESSAGE_LATE_CUTOFF_MINUTES = 10
|
SCHEDULED_MESSAGE_LATE_CUTOFF_MINUTES = 10
|
||||||
|
|
||||||
|
@ -104,14 +104,15 @@ def do_schedule_messages(
|
||||||
scheduled_message.has_attachment = True
|
scheduled_message.has_attachment = True
|
||||||
scheduled_message.save(update_fields=["has_attachment"])
|
scheduled_message.save(update_fields=["has_attachment"])
|
||||||
|
|
||||||
event = {
|
event = {
|
||||||
"type": "scheduled_messages",
|
"type": "scheduled_messages",
|
||||||
"op": "add",
|
"op": "add",
|
||||||
"scheduled_messages": [
|
"scheduled_messages": [
|
||||||
scheduled_message.to_dict() for scheduled_message, ignored in scheduled_messages
|
scheduled_message.to_dict() for scheduled_message, ignored in scheduled_messages
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
send_event(sender.realm, event, [sender.id])
|
send_event_on_commit(sender.realm, event, [sender.id])
|
||||||
|
|
||||||
return [scheduled_message.id for scheduled_message, ignored in scheduled_messages]
|
return [scheduled_message.id for scheduled_message, ignored in scheduled_messages]
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue