From 72616def4f23f3bff67c52b03329025471fff01e Mon Sep 17 00:00:00 2001
From: jonaswinkler <jonas.winkler@jpwinkler.de>
Date: Mon, 18 Jan 2021 15:18:03 +0100
Subject: [PATCH] locking for the document archiver

---
 src/documents/management/commands/document_archiver.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/documents/management/commands/document_archiver.py b/src/documents/management/commands/document_archiver.py
index 7b9a123d9..01bd819c5 100644
--- a/src/documents/management/commands/document_archiver.py
+++ b/src/documents/management/commands/document_archiver.py
@@ -11,6 +11,7 @@ from django import db
 from django.conf import settings
 from django.core.management.base import BaseCommand
 from django.db import transaction
+from filelock import FileLock
 from whoosh.writing import AsyncWriter
 
 from documents.models import Document
@@ -47,8 +48,10 @@ def handle_document(document_id):
                     archive_checksum=checksum,
                     content=parser.get_text()
                 )
-                create_source_path_directory(document.archive_path)
-                shutil.move(parser.get_archive_path(), document.archive_path)
+                with FileLock(settings.MEDIA_LOCK):
+                    create_source_path_directory(document.archive_path)
+                    shutil.move(parser.get_archive_path(),
+                                document.archive_path)
 
         with AsyncWriter(index.open_index()) as writer:
             index.update_document(writer, document)