mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-07-25 09:53:29 +08:00
## Summary - Root cause: Pipeline.Run keys the eino checkpoint by taskID only. Resuming a failed run after the user edits the pipeline DSL recompiles a graph with different topology, but the old checkpoint (bound to the previous graph's node ids / wiring) is restored, causing eino to error. - Fix: fingerprint the DSL file (full canvas DSL) and the runtime override_params, persisted next to the eino checkpoint. On resume, if either fingerprint differs, discard the stale checkpoint + interrupt marker and re-run from scratch. The warning log distinguishes a DSL-file edit from a runtime-override edit. ## Test plan - TestPipelineRunResumableDSLChanged: editing the DSL between runs discards the checkpoint and re-runs from scratch. - TestPipelineRunResumableOverrideChanged: editing only the runtime override does the same. - TestClassifyDSLChange: unit-tests the mismatch-reason classifier. - bash build.sh --test ./internal/ingestion/pipeline/... passes. ## Notes - Component-code changes (e.g. a component's output contract) are not covered by the DSL fingerprint; that is a separate, smaller-blast-radius gap noted in code comments. --------- Signed-off-by: xugangqiang <xugangqiang@hotmail.com> Co-authored-by: CodeBuddy <noreply@tencent.com>