chore: phase 1 cleanup — proper shutdown, flow resource cleanup, test fix

- node_runner: track all readers/writers in flow_resources vector,
  release them via mxlReleaseFlowWriter/mxlReleaseFlowReader before
  destroying the MXL instance (fixes 'leaked flow writer' warning)
- node_runner: remove_writer/remove_reader commands now also release
  the MXL flow resources, not just reset the node's optional<>
- engine: call process_manager.stop_all(graph) on shutdown to kill
  child node processes (prevents orphaned passthrough processes)
- graph: add get_node_mut() for process_manager to update node state
- process_manager: implement stop_all(Graph&) that SIGTERMs all
  running node processes
- passthrough: reduce logging to first-grain and realign-once only
- tests: update flow format assertion to match NMOS
  (urn:x-nmos:format:video instead of video/v210)
This commit is contained in:
Johanness
2026-05-26 23:04:16 +03:00
parent 5b48d86c6e
commit 4b50f49172
8 changed files with 68 additions and 9 deletions
+4 -3
View File
@@ -68,9 +68,10 @@ TEST_CASE("FlowManager creates V210 flow definition", "[flow_manager]") {
auto def = fm.create_v210_flow_def(flow_id, 1920, 1080, 50, 1);
REQUIRE(def["id"] == flow_id);
REQUIRE(def["format"] == "video/v210");
REQUIRE(def["width"] == 1920);
REQUIRE(def["height"] == 1080);
REQUIRE(def["format"] == "urn:x-nmos:format:video");
REQUIRE(def["media_type"] == "video/v210");
REQUIRE(def["frame_width"] == 1920);
REQUIRE(def["frame_height"] == 1080);
}
TEST_CASE("Graph serialize", "[graph]") {