Problem:
In multi-tenant scenarios, different workspaces share a single global
pipeline_status namespace, causing pipelines from different tenants to
block each other, severely impacting concurrent processing performance.
Solution:
- Extended get_namespace_data() to recognize workspace-specific pipeline
namespaces with pattern "{workspace}:pipeline" (following GraphDB pattern)
- Added workspace parameter to initialize_pipeline_status() for per-tenant
isolated pipeline namespaces
- Updated all 7 call sites to use workspace-aware locks:
* lightrag.py: process_document_queue(), aremove_document()
* document_routes.py: background_delete_documents(), clear_documents(),
cancel_pipeline(), get_pipeline_status(), delete_documents()
Impact:
- Different workspaces can process documents concurrently without blocking
- Backward compatible: empty workspace defaults to "pipeline_status"
- Maintains fail-fast: uninitialized pipeline raises clear error
- Expected N× performance improvement for N concurrent tenants
Bug fixes:
- Fixed AttributeError by using self.workspace instead of self.global_config
- Fixed pipeline status endpoint to show workspace-specific status
- Fixed delete endpoint to check workspace-specific busy flag
Code changes: 4 files, 141 insertions(+), 28 deletions(-)
Testing: All syntax checks passed, comprehensive workspace isolation tests completed
77 lines
875 B
Plaintext
77 lines
875 B
Plaintext
# Python-related files
|
|
__pycache__/
|
|
*.py[cod]
|
|
*.egg-info/
|
|
.eggs/
|
|
*.tgz
|
|
*.tar.gz
|
|
*.ini
|
|
|
|
# Virtual Environment
|
|
.venv/
|
|
venv/
|
|
|
|
# Enviroment Variable Files
|
|
.env
|
|
|
|
# Build / Distribution
|
|
dist/
|
|
build/
|
|
site/
|
|
|
|
# Logs / Reports
|
|
*.log
|
|
*.log.*
|
|
*.logfire
|
|
*.coverage/
|
|
log/
|
|
|
|
# Caches
|
|
.cache/
|
|
.mypy_cache/
|
|
.pytest_cache/
|
|
.ruff_cache/
|
|
.gradio/
|
|
.history/
|
|
temp/
|
|
|
|
# IDE / Editor Files
|
|
.idea/
|
|
.vscode/
|
|
.vscode/settings.json
|
|
|
|
# Framework-specific files
|
|
local_neo4jWorkDir/
|
|
neo4jWorkDir/
|
|
|
|
# Data & Storage
|
|
inputs/
|
|
output/
|
|
rag_storage/
|
|
data/
|
|
|
|
# Evaluation results
|
|
lightrag/evaluation/results/
|
|
|
|
# Miscellaneous
|
|
.DS_Store
|
|
TODO.md
|
|
ignore_this.txt
|
|
*.ignore.*
|
|
|
|
# Project-specific files
|
|
/dickens*/
|
|
/book.txt
|
|
download_models_hf.py
|
|
|
|
# Frontend build output (built during PyPI release)
|
|
/lightrag/api/webui/
|
|
|
|
# temporary test files in project root
|
|
/test_*
|
|
|
|
# Cline files
|
|
memory-bank
|
|
.claude/CLAUDE.md
|
|
.claude/
|