From e1249d3722765aaca56f538e830add7014d20e2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20de=20Kok?= Date: Mon, 5 Feb 2024 10:07:03 +0100 Subject: [PATCH] Test if closing explicitly solves recursive lock issues (#13304) --- spacy/language.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spacy/language.py b/spacy/language.py index 0287549db..568d2d4fa 100644 --- a/spacy/language.py +++ b/spacy/language.py @@ -1716,6 +1716,7 @@ class Language: # is done, so that they can exit gracefully. for q in texts_q: q.put(_WORK_DONE_SENTINEL) + q.close() # Otherwise, we are stopping because the error handler raised an # exception. The sentinel will be last to go out of the queue. @@ -2347,7 +2348,8 @@ def _apply_pipes( # Stop working if we encounter the end-of-work sentinel. if isinstance(texts_with_ctx, _WorkDoneSentinel): - return + sender.close() + receiver.close() docs = ( ensure_doc(doc_like, context) for doc_like, context in texts_with_ctx @@ -2371,7 +2373,8 @@ def _apply_pipes( # Parent has closed the pipe prematurely. This happens when a # worker encounters an error and the error handler is set to # stop processing. - return + sender.close() + receiver.close() class _Sender: