diff --git a/src/documents/bulk_edit.py b/src/documents/bulk_edit.py index c851c3e01..a6a310632 100644 --- a/src/documents/bulk_edit.py +++ b/src/documents/bulk_edit.py @@ -626,8 +626,10 @@ def merge_as_versions( ) -> Literal["OK"]: with transaction.atomic(): documents = list( + # Ordered by pk so concurrent merges take the row locks in the same order Document.objects.select_for_update() .filter(id__in=doc_ids) + .order_by("id") .defer("content"), ) documents_by_id = {document.id: document for document in documents}