Tencent/WeKnora · error
fmt.Errorf(format, args...) (dynamic message)
Error message
fmt.Errorf(format, args...) (dynamic message)
What it means
Dynamic sentinel wrapper: failKnowledge is a helper that marks the knowledge ParseStatus='failed' with the formatted message only on the last asynq retry, and always returns the error so intermediate attempts retry. The message text is supplied by each caller at its throw site.
Source
Thrown at internal/application/service/knowledge_process.go:3846
return reader
}
// failKnowledge marks knowledge as failed (only on last retry) and returns an error.
func (s *knowledgeService) failKnowledge(
ctx context.Context,
knowledge *types.Knowledge,
isLastRetry bool,
format string,
args ...interface{},
) (*types.ReadResult, error) {
errMsg := fmt.Sprintf(format, args...)
if isLastRetry {
knowledge.ParseStatus = "failed"
knowledge.ErrorMessage = errMsg
knowledge.UpdatedAt = time.Now()
s.repo.UpdateKnowledge(ctx, knowledge)
}
return nil, fmt.Errorf(format, args...)
}
// enqueueImageMultimodalTasks enqueues asynq tasks for multimodal image processing.
func (s *knowledgeService) enqueueImageMultimodalTasks(
ctx context.Context,
knowledge *types.Knowledge,
kb *types.KnowledgeBase,
images []docparser.StoredImage,
chunks []types.ParsedChunk,
metadata map[string]string,
) {
if s.task == nil || len(images) == 0 {
return
}
attempt := attemptFromCtx(ctx)
redisKey := fmt.Sprintf("multimodal:pending:%s", knowledge.ID)
if s.redisClient != nil {View on GitHub (pinned to 988cbb0330)
Solutions
- Locate the failKnowledge call site to identify the actual failure stage
- Inspect knowledge.ErrorMessage after terminal failure for the formatted details
- Fix the underlying parse/pipeline cause and re-trigger the parse task
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at internal/application/service/knowledge_process.go:3846 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02).
Data as JSON: /api/errors/0fbfc85ed78e2532.
Report an issue: GitHub.