From b5a9cad2bf250090c6ef15f1a92f17a3de679a0f Mon Sep 17 00:00:00 2001 From: Lucas Jeub Date: Fri, 18 Sep 2026 10:54:05 +0200 Subject: [PATCH] quick fix for the subgraph creation deadlock with reproducing test --- raphtory-graphql/src/lib.rs | 16 ++++++++++++++++ raphtory-graphql/src/model/mod.rs | 6 +++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/raphtory-graphql/src/lib.rs b/raphtory-graphql/src/lib.rs index 93ea5e743a..2627ea1b6e 100644 --- a/raphtory-graphql/src/lib.rs +++ b/raphtory-graphql/src/lib.rs @@ -3671,4 +3671,20 @@ mod graphql_test { } } } }) ); } + + #[tokio::test] + async fn test_subgraph_on_uncached() { + let tmp_dir = TempDir::new().unwrap(); + let g = Graph::new(); + g.add_node(0, 1, NO_PROPS, None, None).unwrap(); + setup_with_graphs(&[("g", g.into())], tmp_dir.path()).await; // write to folder and drop the cache + let setup = setup_with_graphs(&[], tmp_dir.path()).await; // new data pointing at the folder with the graph unloaded + + let query = r#" + mutation { + createSubgraph(newPath: "sg", parentPath: "g", nodes: [1], overwrite: false) + }"#; + let res = run_mutation(&setup.schema, query).await; + assert_eq!(res.errors, vec![], "{:?}", res.errors); + } } diff --git a/raphtory-graphql/src/model/mod.rs b/raphtory-graphql/src/model/mod.rs index 0d07327893..57a888e7a4 100644 --- a/raphtory-graphql/src/model/mod.rs +++ b/raphtory-graphql/src/model/mod.rs @@ -728,13 +728,13 @@ impl Mut { let data = ctx.data_unchecked::(); let dst_ns = parent_namespace(&new_path); require_namespace_write(ctx, &data.auth_policy, dst_ns, &new_path, "create")?; + let (_, parent_graph) = data + .get_graph_requiring_read(ctx, parent_path, None) + .await?; let folder = data .work_dir_write() .await .validate_path_for_insert(&new_path, overwrite)?; - let (_, parent_graph) = data - .get_graph_requiring_read(ctx, parent_path, None) - .await?; let folder_clone = folder.clone(); let new_subgraph = blocking_compute(move || { let subgraph = parent_graph.subgraph(nodes);