From 656a3d7d5c65207a8ac9aab1e189f345ce4ec0bb Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Sun, 26 Apr 2026 14:50:21 +0000 Subject: [PATCH] fix(graph): cap get_all_edges to 5000 edges to prevent unbounded RAM growth --- backend/app/graph/graphiti_backend.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/app/graph/graphiti_backend.py b/backend/app/graph/graphiti_backend.py index c8a100a7..f185e098 100644 --- a/backend/app/graph/graphiti_backend.py +++ b/backend/app/graph/graphiti_backend.py @@ -392,13 +392,17 @@ class GraphitiBackend(GraphBackend): }) return nodes - def get_all_edges(self, graph_id: str) -> List[Dict[str, Any]]: + def get_all_edges(self, graph_id: str, max_items: int = 5000) -> List[Dict[str, Any]]: results = _run_async( self._client.driver.execute_query( - "MATCH (s)-[r]->(t) WHERE r.group_id = $gid RETURN s, r, t", - params={"gid": graph_id}, + "MATCH (s)-[r]->(t) WHERE r.group_id = $gid RETURN s, r, t LIMIT $limit", + params={"gid": graph_id, "limit": max_items}, ) ) + if len(results.records) >= max_items: + logger.warning( + f"get_all_edges: result truncated at {max_items} edges for graph {graph_id}" + ) edges = [] for record in results.records: r = record["r"]