{"record":{"id":"48dd0fc8acc43574","repo":"langflow-ai/langflow","slug":"error-ingesting-folder-to-knowledge-base","errorCode":null,"errorMessage":"Error ingesting folder to knowledge base.","messagePattern":"Error ingesting folder to knowledge base\\.","errorType":"http","errorClass":"HTTPException","httpStatus":500,"severity":"error","filePath":"src/backend/base/langflow/api/v1/knowledge_bases.py","lineNumber":1312,"sourceCode":"            files_data=None,\n            chunk_size=payload.chunk_size,\n            chunk_overlap=payload.chunk_overlap,\n            separator=payload.separator,\n            source_name=payload.source_name,\n            current_user=current_user,\n            model_selection=model_selection,\n            task_job_id=job_id,\n            job_service=job_service,\n            source=folder_source,\n            source_metadata=run_user_metadata or None,\n        )\n        return TaskResponse(id=str(job_id), href=f\"/task/{job_id}\")\n\n    except HTTPException:\n        raise\n    except Exception as e:\n        await logger.aerror(\"Error ingesting folder to knowledge base: %s\", e)\n        raise HTTPException(status_code=500, detail=\"Error ingesting folder to knowledge base.\") from e\n\n\n@router.get(\"\", status_code=HTTPStatus.OK)\n@router.get(\"/\", status_code=HTTPStatus.OK)\nasync def list_knowledge_bases(\n    current_user: CurrentActiveUser,\n    job_service: Annotated[JobService, Depends(get_job_service)],\n) -> list[KnowledgeBaseInfo]:\n    \"\"\"List all available knowledge bases.\n\n    Reads from ``knowledge_base`` rows first. A disk scan is only used\n    as a recovery fallback when the user has no KB rows yet.\n    \"\"\"\n    # List-level guard: a viewer-role user may still see the KBs they own,\n    # but a role with ``knowledge_base:read`` revoked entirely is rejected\n    # here. Per-row filtering is the authorization plugin's responsibility once\n    # KB share grants exist.\n    await _guard_kb_action(current_user=current_user, action=KnowledgeBaseAction.READ, kb_name=None)","sourceCodeStart":1294,"sourceCodeEnd":1330,"githubUrl":"https://github.com/langflow-ai/langflow/blob/976ec789d2886a86de109c044d089d68e96c9a35/src/backend/base/langflow/api/v1/knowledge_bases.py#L1294-L1330","documentation":"Catch-all 500 from the folder-ingest endpoint: any non-HTTPException failure (job creation, task scheduling, asset-id resolution, IO) is logged as 'Error ingesting folder to knowledge base: <e>' and wrapped in this generic detail. The underlying exception appears only in server logs.","triggerScenarios":"POST /api/v1/knowledge_bases/{kb_name}/ingest/folder that passes folder validation and embedding checks but fails afterwards — DB error creating the ingestion job, task service unavailable, or an exception while spawning the background ingestion task.","commonSituations":"Database outages, transient storage failures, permission errors writing under the KB path, or regressions in the ingestion task plumbing after upgrades.","solutions":["Inspect server logs for 'Error ingesting folder to knowledge base: <e>' and address the logged root cause.","Verify DB connectivity and that the jobs/tasks schema is migrated (run alembic upgrade if needed).","Check disk space and permissions on the KB storage path.","Retry once transient infrastructure issues are resolved."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    resp = await client.post(folder_url, json=payload)\nexcept HTTPStatusError as e:\n    if e.response.status_code == 500:\n        check_server_log(\"Error ingesting folder\")\n        await retry_with_backoff(lambda: client.post(folder_url, json=payload), attempts=3)","preventionTips":["Pre-validate the folder path and KB config so known 4xx causes are eliminated first.","Keep folder ingests resumable: track which folders succeeded so retries are cheap.","Watch backend logs during large folder ingests to catch the root cause early."],"tags":["knowledge-base","folder-ingest","http-500","server-error"],"backgroundTag":null,"analyzedSha":"976ec789d2886a86de109c044d089d68e96c9a35","analyzedAt":"2026-08-14T18:23:12.227Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}