From cb6602f5d629818d337acf5585b5de45359778c8 Mon Sep 17 00:00:00 2001 From: syaojun Date: Tue, 10 Mar 2026 00:16:51 +0800 Subject: [PATCH] fix: add runtime checks for graph accessors in multiple classes --- .../java/org/apache/geaflow/ai/GeaFlowMemoryServer.java | 9 ++++++++- .../java/org/apache/geaflow/ai/GraphMemoryServer.java | 3 +++ .../org/apache/geaflow/ai/service/ServerMemoryCache.java | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/GeaFlowMemoryServer.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/GeaFlowMemoryServer.java index d39123183..bfcf0dd79 100644 --- a/geaflow-ai/src/main/java/org/apache/geaflow/ai/GeaFlowMemoryServer.java +++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/GeaFlowMemoryServer.java @@ -160,8 +160,12 @@ public String addEntity(@Param("graphName") String graphName, memoryMutableGraph.addEdge(((GraphEdge) entity).getEdge()); } } + GraphMemoryServer insertServer = CACHE.getServerByName(graphName); + if (insertServer == null || insertServer.getGraphAccessors().isEmpty()) { + throw new RuntimeException("Server or graph accessor not available for graph: " + graphName); + } CACHE.getConsolidateServer().executeConsolidateTask( - CACHE.getServerByName(graphName).getGraphAccessors().get(0), memoryMutableGraph); + insertServer.getGraphAccessors().get(0), memoryMutableGraph); return "Success to add entities, num: " + graphEntities.size(); } @@ -213,6 +217,9 @@ public String execQuery(@Param("sessionId") String sessionId, VectorSearch search = new VectorSearch(null, sessionId); search.addVector(new KeywordVector(query)); server.search(search); + if (server.getGraphAccessors().isEmpty()) { + throw new RuntimeException("No graph accessor available for session: " + sessionId); + } Context context = server.verbalize(sessionId, new SubgraphSemanticPromptFunction(server.getGraphAccessors().get(0))); return context.toString(); diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/GraphMemoryServer.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/GraphMemoryServer.java index b571fe540..57a8d37a2 100644 --- a/geaflow-ai/src/main/java/org/apache/geaflow/ai/GraphMemoryServer.java +++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/GraphMemoryServer.java @@ -81,6 +81,9 @@ public String search(VectorSearch search) { sessionManagement.createSession(sessionId); } + if (graphAccessors.isEmpty()) { + throw new RuntimeException("No graph accessor available"); + } for (IndexStore indexStore : indexStores) { if (indexStore instanceof EntityAttributeIndexStore) { SessionOperator searchOperator = new SessionOperator(graphAccessors.get(0), indexStore); diff --git a/geaflow-ai/src/main/java/org/apache/geaflow/ai/service/ServerMemoryCache.java b/geaflow-ai/src/main/java/org/apache/geaflow/ai/service/ServerMemoryCache.java index 8e894d180..fd412bde3 100644 --- a/geaflow-ai/src/main/java/org/apache/geaflow/ai/service/ServerMemoryCache.java +++ b/geaflow-ai/src/main/java/org/apache/geaflow/ai/service/ServerMemoryCache.java @@ -38,11 +38,17 @@ public void putGraph(Graph g) { } public void putServer(GraphMemoryServer server) { + if (server.getGraphAccessors().isEmpty()) { + throw new RuntimeException("Cannot register server without graph accessor"); + } name2Server.put(server.getGraphAccessors().get(0) .getGraphSchema().getName(), server); } public void putSession(GraphMemoryServer server, String sessionId) { + if (server.getGraphAccessors().isEmpty()) { + throw new RuntimeException("Cannot register session without graph accessor"); + } session2GraphName.put(sessionId, server.getGraphAccessors().get(0).getGraphSchema().getName()); }