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

  1. Locate the failKnowledge call site to identify the actual failure stage
  2. Inspect knowledge.ErrorMessage after terminal failure for the formatted details
  3. 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.