Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions django_elasticsearch_dsl/signals.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,8 @@ def handle_save(self, sender, instance, **kwargs):
app_label = instance._meta.app_label
model_name = instance.__class__.__name__

self.registry_update_task.delay(pk, app_label, model_name)
self.registry_update_related_task.delay(pk, app_label, model_name)
self.registry_update_task.delay_on_commit(pk, app_label, model_name)
self.registry_update_related_task.delay_on_commit(pk, app_label, model_name)

def handle_pre_delete(self, sender, instance, **kwargs):
"""Handle removing of instance object from related models instance.
Expand Down Expand Up @@ -163,14 +163,14 @@ def prepare_registry_delete_related_task(self, instance):
else:
object_list = related
bulk_data = list(doc_instance._get_actions(object_list, action)),
self.registry_delete_task.delay(doc_instance.__class__.__name__, bulk_data)
self.registry_delete_task.delay_on_commit(doc_instance.__class__.__name__, bulk_data)

@shared_task()
def registry_delete_task(doc_label, data):
"""
Handle the bulk delete data on the registry as a Celery task.
The different implementations used are due to the difference between delete and update operations.
The update operation can re-read the updated data from the database to ensure eventual consistency,
The different implementations used are due to the difference between delete and update operations.
The update operation can re-read the updated data from the database to ensure eventual consistency,
but the delete needs to be processed before the database record is deleted to obtain the associated data.
"""
doc_instance = import_module(doc_label)
Expand All @@ -195,7 +195,7 @@ def prepare_registry_delete_task(self, instance):
else:
object_list = related
bulk_data = list(doc_instance.get_actions(object_list, action)),
self.registry_delete_task.delay(doc_instance.__class__.__name__, bulk_data)
self.registry_delete_task.delay_on_commit(doc_instance.__class__.__name__, bulk_data)

@shared_task()
def registry_update_task(pk, app_label, model_name):
Expand Down