LightRAG/lightrag/kg
BukeLy f7b500bca2 feat: Add workspace isolation support for pipeline status
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
(cherry picked from commit eb52ec94d7)
2025-12-04 19:11:16 +08:00
..
deprecated Preserve ordering in get_by_ids methods across all storage implementations 2025-12-04 19:06:54 +08:00
__init__.py Improve storage config validation and add config.ini fallback support 2025-12-04 19:09:03 +08:00
faiss_impl.py Standardize empty workspace handling from "_" to "" across storage 2025-12-04 19:09:05 +08:00
graph_tenant_support.py tests: stabilize integration tests + skip external services; fix multi-tenant API behavior and idempotency (#4) 2025-12-04 16:04:21 +08:00
json_doc_status_impl.py Standardize empty workspace handling from "_" to "" across storage 2025-12-04 19:09:05 +08:00
json_kv_impl.py Standardize empty workspace handling from "_" to "" across storage 2025-12-04 19:09:05 +08:00
memgraph_impl.py Refactor exception handling in MemgraphStorage label methods 2025-12-04 19:09:04 +08:00
milvus_impl.py Fix dimension type comparison in Milvus vector field validation 2025-12-04 19:09:08 +08:00
mongo_impl.py Standardize empty workspace handling from "_" to "" across storage 2025-12-04 19:09:05 +08:00
mongo_tenant_support.py tests: stabilize integration tests + skip external services; fix multi-tenant API behavior and idempotency (#4) 2025-12-04 16:04:21 +08:00
nano_vector_db_impl.py Refactor storage classes to use namespace instead of final_namespace 2025-12-04 19:09:06 +08:00
neo4j_impl.py Add retry decorators to Neo4j read operations for resilience 2025-12-04 19:09:08 +08:00
networkx_impl.py Refactor storage classes to use namespace instead of final_namespace 2025-12-04 19:09:06 +08:00
postgres_impl.py Add CASCADE to AGE extension creation in PostgreSQL implementation 2025-12-04 19:09:07 +08:00
postgres_rls.sql tests: stabilize integration tests + skip external services; fix multi-tenant API behavior and idempotency (#4) 2025-12-04 16:04:21 +08:00
postgres_tenant_support.py tests: stabilize integration tests + skip external services; fix multi-tenant API behavior and idempotency (#4) 2025-12-04 16:04:21 +08:00
qdrant_impl.py Add Qdrant legacy collection migration with workspace support 2025-12-04 19:11:15 +08:00
redis_impl.py Standardize empty workspace handling from "_" to "" across storage 2025-12-04 19:09:05 +08:00
redis_tenant_support.py tests: stabilize integration tests + skip external services; fix multi-tenant API behavior and idempotency (#4) 2025-12-04 16:04:21 +08:00
shared_storage.py feat: Add workspace isolation support for pipeline status 2025-12-04 19:11:16 +08:00
vector_tenant_support.py tests: stabilize integration tests + skip external services; fix multi-tenant API behavior and idempotency (#4) 2025-12-04 16:04:21 +08:00