{"record":{"id":"434d3d7dcde4d118","repo":"langflow-ai/langflow","slug":"error-getting-knowledge-base","errorCode":null,"errorMessage":"Error getting knowledge base.","messagePattern":"Error getting knowledge base\\.","errorType":"http","errorClass":"HTTPException","httpStatus":500,"severity":"error","filePath":"src/backend/base/langflow/api/v1/knowledge_bases.py","lineNumber":1489,"sourceCode":"                dir_name=record.name,\n                metadata=knowledge_base_service.record_to_metadata_dict(record),\n                size=record.size_bytes,\n            )\n\n        kb_path = _resolve_kb_path(kb_name, _kb_guard.owner_user)\n        metadata = knowledge_base_service.load_metadata_from_disk(kb_path)\n        return _build_kb_info(\n            kb_name=kb_name.replace(\"_\", \" \"),\n            dir_name=kb_name,\n            metadata=metadata,\n            size=KBStorageHelper.get_directory_size(kb_path),\n        )\n\n    except HTTPException:\n        raise\n    except Exception as e:\n        await logger.aerror(\"Error getting knowledge base '%s': %s\", kb_name, e)\n        raise HTTPException(status_code=500, detail=\"Error getting knowledge base.\") from e\n\n\n@router.get(\"/{kb_name}/chunks\", status_code=HTTPStatus.OK, dependencies=[Depends(_check_memory_base_association)])\nasync def get_knowledge_base_chunks(\n    kb_name: str,\n    current_user: CurrentActiveUser,\n    request: Request,\n    page: Annotated[int, Query(ge=1)] = 1,\n    limit: Annotated[int, Query(ge=1, le=100)] = 50,\n    search: Annotated[str, Query(description=\"Filter chunks whose text contains this substring\")] = \"\",\n    source_type: Annotated[\n        str | None,\n        Query(description=\"Only return chunks ingested via the given source type (e.g. 'file_upload', 'folder').\"),\n    ] = None,\n    file_name: Annotated[\n        str | None,\n        Query(description=\"Only return chunks whose source filename exactly matches.\"),\n    ] = None,","sourceCodeStart":1471,"sourceCodeEnd":1507,"githubUrl":"https://github.com/langflow-ai/langflow/blob/976ec789d2886a86de109c044d089d68e96c9a35/src/backend/base/langflow/api/v1/knowledge_bases.py#L1471-L1507","documentation":"Catch-all 500 from the get-single-KB endpoint: exceptions while resolving the KB path, loading metadata from disk (knowledge_base_service.load_metadata_from_disk), or computing directory size are logged with the kb_name and wrapped. HTTPExceptions (e.g. 404 for a missing KB) pass through unchanged.","triggerScenarios":"GET /api/v1/knowledge_bases/{kb_name} where the KB row exists but metadata loading fails (corrupted/unreadable metadata file) or KBStorageHelper.get_directory_size raises (permission errors, broken symlinks, deleted directory still recorded in DB).","commonSituations":"KB files deleted or moved behind the backend's back, NFS/permission changes on the storage root, or partially written metadata after a crash.","solutions":["Check server logs for \"Error getting knowledge base '<kb>': <e>\" to see whether it was metadata parsing or size computation.","Verify the KB directory on the server is intact and readable.","If the directory is gone, delete the stale KB record and recreate the KB.","Restore the metadata file from backup or re-save the KB config via the UI."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"async def kb_gettable(client, kb_name: str) -> bool:\n    return (await client.get(f\"/api/v1/knowledge_bases/{kb_name}\")).status_code == 200","typeGuard":null,"tryCatchPattern":"try:\n    resp = await client.get(f\"/api/v1/knowledge_bases/{kb_name}\")\nexcept HTTPStatusError as e:\n    if e.response.status_code == 500:\n        log(\"KB metadata/size read failed\", kb_name)  # check server log\n    elif e.response.status_code == 404:\n        log(\"KB not found\", kb_name)","preventionTips":["Do not delete or move KB directories directly on disk; delete via the API.","Back up KB directories including metadata files.","Alert on 500s from single-KB reads — they usually mean on-disk corruption."],"tags":["knowledge-base","http-500","metadata","server-error"],"backgroundTag":null,"analyzedSha":"976ec789d2886a86de109c044d089d68e96c9a35","analyzedAt":"2026-08-14T18:23:12.227Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}