diff --git a/ravendb/documents/bulk_insert_operation.py b/ravendb/documents/bulk_insert_operation.py index 108eea23..aec4257b 100644 --- a/ravendb/documents/bulk_insert_operation.py +++ b/ravendb/documents/bulk_insert_operation.py @@ -625,9 +625,13 @@ def __init__(self, operation: BulkInsertOperation): self.operation = operation def store(self, key: str, name: str, attachment_bytes: bytes, content_type: Optional[str] = None): - self.operation._concurrency_check() - self.operation._end_previous_command_if_needed() - self.operation._ensure_ongoing_operation() + release_lock_callback = self.operation._concurrency_check() + try: + self.operation._end_previous_command_if_needed() + self.operation._ensure_ongoing_operation() + except Exception as e: + release_lock_callback() + raise e try: if not self.operation._first: @@ -655,6 +659,9 @@ def store(self, key: str, name: str, attachment_bytes: bytes, content_type: Opti except Exception as e: self.operation._handle_errors(key, e) + finally: + release_lock_callback() + def attachments_for(self, key: str) -> BulkInsertOperation.AttachmentsBulkInsert: if not key or key.isspace(): raise ValueError("Document id cannot be None or empty.")