{"record":{"id":"883ff72b07daedcd","repo":"Tencent/WeKnora","slug":"failed-to-enqueue-task-w","errorCode":null,"errorMessage":"failed to enqueue task: %w","messagePattern":"failed to enqueue task: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/application/service/knowledge_faq_import.go","lineNumber":221,"sourceCode":"\tif payload.DryRun {\n\t\tmaxRetry = 3 // dry run 重试次数少一些\n\t}\n\n\t// 使用 taskID:instanceID 作为 asynq 的唯一任务标识\n\tasynqTaskID := fmt.Sprintf(\"%s:%s\", taskID, instanceID)\n\n\ttask := asynq.NewTask(\n\t\ttypes.TypeFAQImport,\n\t\tpayloadBytes,\n\t\tasynq.TaskID(asynqTaskID),\n\t\tasynq.Queue(types.QueueMaintenance),\n\t\tasynq.MaxRetry(maxRetry),\n\t\tasynq.Timeout(2*time.Hour),\n\t)\n\tinfo, err := s.task.Enqueue(task)\n\tif err != nil {\n\t\tlogger.Errorf(ctx, \"Failed to enqueue FAQ import task: %v\", err)\n\t\treturn \"\", fmt.Errorf(\"failed to enqueue task: %w\", err)\n\t}\n\tlogger.Infof(ctx, \"Enqueued FAQ import task: id=%s queue=%s task_id=%s dry_run=%v\", info.ID, info.Queue, taskID, payload.DryRun)\n\tenqueueSucceeded = true\n\n\tif !payload.DryRun {\n\t\trecordKBActivity(ctx, s.audit, tenantID, kbID, types.AuditActionFAQImportStarted,\n\t\t\t\"faq_entry\", knowledgeID, types.AuditOutcomeAccepted,\n\t\t\tmap[string]any{\n\t\t\t\t\"task_id\": taskID, \"mode\": payload.Mode, \"total\": len(payload.Entries),\n\t\t\t\t\"trigger\": kbActivityTrigger(ctx), \"processing_status\": \"pending\",\n\t\t\t})\n\t}\n\n\treturn taskID, nil\n}\n\n// generateFailedEntriesCSV 生成失败条目的 CSV 文件并上传\nfunc (s *knowledgeService) generateFailedEntriesCSV(ctx context.Context,","sourceCodeStart":203,"sourceCodeEnd":239,"githubUrl":"https://github.com/Tencent/WeKnora/blob/988cbb03305e055d8ebb7d46d9ac6cc0803cd074/internal/application/service/knowledge_faq_import.go#L203-L239","documentation":"Thrown when the asynq client fails to enqueue the TypeFAQImport task onto the maintenance queue. Fires when Redis (asynq backend) is down, the queue is misconfigured, or the task ID (taskID:instanceID) already exists; the import is never scheduled.","triggerScenarios":"Thrown at internal/application/service/knowledge_faq_import.go:221 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check Redis connectivity and asynq configuration","Verify the QueueMaintenance queue is registered on workers","If the task ID collided, wait for the previous task or purge it before retrying","Retry the import request once the broker is healthy"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"988cbb03305e055d8ebb7d46d9ac6cc0803cd074","analyzedAt":"2026-09-02T14:41:08.344Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}