From 6e1657a771f95910842bef1618d861f9b8572fab Mon Sep 17 00:00:00 2001 From: yangdx Date: Sat, 19 Jul 2025 10:25:48 +0800 Subject: [PATCH] Improve thread safety for relationship rebuilding - Sort src and tgt for consistent lock keys - Maintain order-independent locking --- lightrag/operate.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lightrag/operate.py b/lightrag/operate.py index 909d55a8..d978d77a 100644 --- a/lightrag/operate.py +++ b/lightrag/operate.py @@ -429,8 +429,12 @@ async def _rebuild_knowledge_from_chunks( async with semaphore: workspace = global_config.get("workspace", "") namespace = f"{workspace}:GraphDB" if workspace else "GraphDB" + # Sort src and tgt to ensure order-independent lock key generation + sorted_key_parts = sorted([src, tgt]) async with get_storage_keyed_lock( - f"{src}-{tgt}", namespace=namespace, enable_logging=False + f"{sorted_key_parts[0]}-{sorted_key_parts[1]}", + namespace=namespace, + enable_logging=False, ): try: await _rebuild_single_relationship(