Skip to content

Commit aa144e6

Browse files
committed
bugfix
1 parent 8b4bbec commit aa144e6

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

taskiq/receiver/receiver.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -436,9 +436,14 @@ async def prefetcher( # noqa: C901
436436
break
437437
except Exception:
438438
logger.exception("Error while prefetching.")
439-
current_message = None
440-
iterator = self.broker.listen()
441-
self.sem_prefetch.release()
439+
# current_message set => fetch failed before enqueue, so we
440+
# still own the permit and a (possibly broken) iterator.
441+
# Otherwise it's queued and the runner owns the permit;
442+
# releasing here would leak a prefetch slot.
443+
if current_message is not None:
444+
current_message = None
445+
iterator = self.broker.listen()
446+
self.sem_prefetch.release()
442447
continue
443448
finally:
444449
# We don't want to fetch new messages if we are shutting down.

0 commit comments

Comments
 (0)