A failed fetch leaves the acquired batch to the reaper
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Domínio
- backend, databases, distributed-systems
Direção de pesquisa
Start with acquire.lua and trace how leased tasks are handled when TaskResult deserialization fails. Then inspect maintain_worker_pool and the reaper's lease-expiry behavior. Done means fetch failures no longer silently lose leased tasks and the intended worker-drain behavior remains intact.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Deferred from the task-prefetching review (crew run): the error path is now loud and the worker exits non-zero, but returning the tasks is the larger design piece.
What
acquire.lua leases every task of a batch (ZADD into the running set with the lease deadline, task data rewritten RUNNING) before the reply is deserialized. If the fetcher then raises — a poison payload that fails TaskResult reconstruction, a renamed or removed task function, a broker error mid-reply — the whole leased batch is discarded:
- the batch is never buffered, never executed, and never acknowledged
- the reaper moves it to the failed history after
lease_ttl(default 1 hour) and never back to READY, so the tasks are lost unless an operator requeues them - with
--exit-empty, dead workers arecontinued bymaintain_worker_pool, so a broker outage across the fetchers can end the whole drain run as if the queue were empty
Reproduced dynamically: one worker, 2 threads, prefetch_count=4, a backend leasing 4 tasks and then failing to deserialize one — 4 tasks leased, 0 acknowledged, worker exited 0 before the loudness fix.
Options
- add a backend
release()/unacquire call that returns a leased task to READY (the inverse of the lease the acquire script takes), and call it for the buffered-and-unstarted remainder on a fetch failure - or lease only after the reply is fully deserialized (changes the atomicity story: the script must not move tasks to the running set until the client has them)
- or make the reaper hand back rather than fail on the first expiry, if a retry-once policy is acceptable
Related: the same "leased but never executed" window exists for a hard kill, which is accepted behaviour (the reaper covers it); this issue is about the error path where the run continues.
- Linguagem predominante
- Python
- Estrelas
- 21
- Forks
- 2
- Merge médio
- 12h 39min
- PRs com merge (30d)
- 27
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Issues semelhantes
-
bug documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
awslabs/visual-asset-management-system#514 ·
Mantenedores costumam responder em até 1 dia
-
backend bug spec:REQ-053
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
nolte/kamerplanter#2547 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
EleutherAI/lm-evaluation-harness#4425 ·
Mantenedores costumam responder em até 1 dia
-
Gemini: respect PLANNING_DISABLED=1 in lifecycle context hooksTalvez já em andamento @AmariAugustin assumiu hoje. Abertabug good first issue help wanted
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 87/100
OthmanAdi/planning-with-files#329 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
wr.dynamodb.read_items returns [{}] for a single partition value that does not existTalvez já em andamento @auraseb assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
aws/aws-sdk-pandas#3520 ·
Mantenedores costumam responder em até 2 dias