mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-10-28 02:53:29 +08:00
Reparse: - Open the new attempt only after override validation and cleanup pass. A rejected reparse used to leave the previous run's subtasks treating themselves as superseded, so the row stayed in finalizing for good. - Cancel the previous run's queued tasks when it is still in flight. ProcessDocument, processChunks, post-process, image tasks, wiki ops and the dead-letter callback now skip work that belongs to a superseded attempt. - Summary tasks write only their own columns. A full-row save after the LLM call could put finalizing over the new run's processing row. Errors that were acked with the row still in flight: - A failed post-process enqueue is retried in place and then returned, so the task retries instead of leaving the row in processing. - Transient tenant/knowledge reads and the processing write now retry. - An image whose orphan check fails on its final attempt is still counted. Empty manual content fails the row. Counters: - FinalizeSubtask runs its decrement and promote in one transaction. Slot releases retry, and the post-process shortfall release keeps going past a failed release. Wiki: - A synthesis model that cannot be built releases the KB's pending documents on the final attempt instead of retrying forever. - Panics in map/reduce workers become per-document failures. - Housekeeping protects a row held by a wiki op for at most 48h. Lite mode: - SyncTaskExecutor honours options set on asynq.NewTask (MaxRetry, Timeout, Deadline, ProcessIn/At), stops on SkipRetry, and runs the same final-failure callback as the dead-letter middleware. - The multimodal fan-in counter is kept in process, so post-process waits for every image. Also: - Housekeeping recovers summaries left pending on finished rows. Cancel and stall recovery close unfinished summaries. - Housekeeping sweeps no longer overlap. - Data source URL ingest writes only the metadata column. - The document list drops cards the batch endpoint no longer returns.