[Bug]: Compile commits partial output after a job fails and reports the task completed
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
Direzione di ricerca
Start with bot/vikingbot/compile/ops/map.py, ops/reduce.py, pipeline.py, and service.py, tracing how recorded job failures reach finalization and determine the task status. Check the existing tests for partial output and task status, then add coverage for the requested behavior: a task with failed jobs should report incomplete or failed, or support disabling salvage. Done means partial graph output cannot be reported as fully completed, with regression tests covering the chosen behavior.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Version
- OpenViking core v0.5.3 (
178a8cdfb) - Compile (
bot/vikingbot/compile) from main4b92b3065; the same behavior is still on current main (3f6aa65ac), withservice.pyline numbers shifted by about four - LiteLLM 1.102.4 (the current pin)
Summary
When a pipeline job fails (for example a Reduce job that still gets 429 after its provider and job retries), Compile finalizes whatever artifacts remain, commits them to the target, and marks the task completed. The only signals are a warning string, pipeline/coverage.json, and prepared: false in the pipeline summary. For a knowledge-graph target, the result is a partial graph that a client can't tell apart from a complete one unless it reads the coverage file.
Reproduction
- Run a directory compile with the knowledge-graph Skill over 25 to 45 source files into an empty target.
- Force one Map or Reduce job to fail partway through. A model rate limit that outlasts the provider retries and the job-level retries (
MAX_JOB_ATTEMPTS) does this reliably. - Poll the task until it finishes.
Observed: task status: completed, error: null. result.warnings includes a Partial output; ... warning, and the target holds entity pages and edges from only the jobs that finished. pipeline/coverage.json lists the missing sources as failed or pending.
Expected: a failed job gives a failed or incomplete task, or at least a way to stop partial output from being published to that target.
Code path (at 4b92b3065)
There are two routes to the same result.
Job failures inside Map or Reduce:
bot/vikingbot/compile/ops/reduce.py:85-91andops/map.py:148-154callbounded_jobs(..., failures=runtime.failures), so a failed job is recorded inpipeline.failuresinstead of raising.bot/vikingbot/compile/pipeline.py:251-259: the finalize node still runs on the remaining inputs and addsPartial output; unfinished jobs: .... The summary recordsprepared: false.
Exceptions that escape the pipeline (timeouts, shuffle or stage errors):
bot/vikingbot/compile/pipeline.py:319-324: any non-CompileFailureexception becomesCompileFailure("COMPILE_INCOMPLETE", ...).bot/vikingbot/compile/service.py:1169-1176:except (CompileFailure, TimeoutError)runsfinalize_oponpipeline.artifactswhenever any artifacts exist and addsPartial output; Compile did not finish: .... The only failure code that skips this salvage isSKILL_REPAIR_FAILED.
Both routes end at:
bot/vikingbot/compile/service.py:1242: status iscompletedwhenever anything was published, whether or notpipeline.failuresis empty.bot/vikingbot/compile/models.py:49:salvage_grace_secondsis the only salvage setting. Partial publication can't be turned off per target or per Skill.
Salvage was added in #3948 for Resource targets that hit the runtime deadline or the iteration limit. That makes sense for wiki pages. A graph is different: missing sources quietly drop entities and relations, and later incremental compiles build on that partial state.
Impact
Over a run of 105 input batches, two batches committed partial graphs this way while the task reported completed. Our external coverage check caught both before anything used them.
Workaround
We compile each batch into its own target. After the task finishes, we read pipeline/coverage.json and keep the batch only if every input is delivered. Otherwise we discard the target and redo the batch in a fresh target.
Request
Either of these would fix it:
- A per-request or per-Skill option (for example
salvage: false) that makes any job failure fail the task without committing, or - Report the task as
incompleteorfailed(with the partial result still attached) wheneverpipeline.failuresis non-empty, socompletedalways means full coverage.
We're happy to test a patch against our workload.
- Lingua principale
- Python
- Stelle
- 41.8k
- Fork
- 3.4k
- Merge medio
- 19h 29m
- PR unite (30g)
- 500
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di volcengine/OpenViking
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
volcengine/OpenViking#7485 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
volcengine/OpenViking#7210 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
volcengine/OpenViking#7205 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: Retrieval rerank fallback statistics stay zero after provider failureForse già presa @97Three l’ha presa 8 giorni fa. Apertabug kernel
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
volcengine/OpenViking#7014 ·
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: memory.prefetch_search_topn is inert above 5 (call site omits limit), plus two docstrings state the wrong defaultsForse già presa @peterzhang987723 l’ha presa 8 giorni fa. Apertakernel
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
volcengine/OpenViking#6923 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di volcengine/OpenViking
Issue simili
-
fuzz fuzz-unconfirmed
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
Switch to ruffAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
Qiskit/qiskit-aer#2533 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
etesync/etesync-dav#376 ·