From 4a8d79be6f1ff2bb2f833913ea06ccae1fc852dc Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Fri, 29 May 2026 10:32:15 -0700 Subject: [PATCH] Fix: Missing call to tanvity wait_merging_threads (#12863) --- src/documents/search/_backend.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/documents/search/_backend.py b/src/documents/search/_backend.py index 68a9aecad..2ccd8c86a 100644 --- a/src/documents/search/_backend.py +++ b/src/documents/search/_backend.py @@ -220,6 +220,10 @@ class WriteBatch: try: if exc_type is None: self._writer.commit() + # Wait for background merge threads to finish before releasing + # the file lock so the next writer doesn't race against an + # in-progress merge on the same index files. + self._writer.wait_merging_threads() self._backend._index.reload() # Explicitly delete writer to release tantivy's internal lock. # On exception the uncommitted writer is simply discarded. @@ -922,6 +926,9 @@ class TantivyBackend: ) writer.add_document(doc) writer.commit() + # Wait for background merge threads to finish so all segments are + # fully merged and persisted before the index is considered rebuilt. + writer.wait_merging_threads() new_index.reload() except BaseException: # pragma: no cover # Restore old index on failure so the backend remains usable