From 12d4f12e57a1f09b2ed81950c0ba754b6d6a7fa5 Mon Sep 17 00:00:00 2001 From: yangdx Date: Sat, 19 Jul 2025 07:36:50 +0800 Subject: [PATCH] fix: sort edge_key components in _locked_process_edges for consistent locking - Ensures bidirectional relationships use same lock key - Maintains thread safety for knowledge graph edge operations --- lightrag/operate.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lightrag/operate.py b/lightrag/operate.py index 1e5f96bc..5e1cc1b6 100644 --- a/lightrag/operate.py +++ b/lightrag/operate.py @@ -1262,8 +1262,11 @@ async def merge_nodes_and_edges( async with semaphore: workspace = global_config.get("workspace", "") namespace = f"{workspace}:GraphDB" if workspace else "GraphDB" + # Sort the edge_key components to ensure consistent lock key generation + sorted_edge_key = sorted([edge_key[0], edge_key[1]]) + logger.info(f"Processing edge: {sorted_edge_key[0]} - {sorted_edge_key[1]}") async with get_storage_keyed_lock( - f"{edge_key[0]}-{edge_key[1]}", + f"{sorted_edge_key[0]}-{sorted_edge_key[1]}", namespace=namespace, enable_logging=False, ):