hive-router-plan-executor 9.0.0 (2026-08-16)
Breaking Changes
Bind graph-specific configuration to Supergraph
Supergraph::from_sdl and Supergraph::from_document now accept SupergraphOptions instead of QueryPlannerOptions. The immutable options snapshot includes planner, executor, subgraph subscription, persisted-document, error-masking, and Hive target settings.
Migration
Import SupergraphOptions with Supergraph:
use hive_router::plugins::hooks::on_supergraph_load::{Supergraph, SupergraphOptions};Replace the query-planner options argument with a complete supergraph options value:
-use hive_router::plugins::hooks::on_supergraph_load::Supergraph;
+use hive_router::plugins::hooks::on_supergraph_load::{Supergraph, SupergraphOptions};
use hive_router::query_planner::planner::QueryPlannerOptions;
let query_planner = QueryPlannerOptions {
experimental_abstract_type_folding: true,
};
-let supergraph = Supergraph::from_sdl(sdl, query_planner)?;
+let supergraph = Supergraph::from_sdl(
+ sdl,
+ SupergraphOptions {
+ query_planner,
+ ..SupergraphOptions::default()
+ },
+)?;Callers that used Default::default() can migrate directly:
use hive_router::plugins::hooks::on_supergraph_load::{Supergraph, SupergraphOptions};
let supergraph = Supergraph::from_sdl(sdl, SupergraphOptions::default())?;Fixes
Fix http.route lable value in metrics
The http.route label value in metrics was set to the effective route path, instead of the route template.
In setups with http.graphql_endpoint is used, or when persisted documents are used over HTTP paths, this led to high cardinality in metrics.
Thanks praguevara for contributing.
Fix http.route lable value in traces
The http.route span attribute was set to the effective route path, instead of the route template.
The OTEL specification for HTTP spans describes the http.router field as:
The matched route template for the request. This MUST be low-cardinality and include all static path segments, with dynamic path segments represented with placeholders.
Thanks praguevara for contributing.
Refactor internal HiveRouterConfig
HiveRouterConfig can now be treated as '&static (by calling .into_static()). This makes the work with the config struct easier, as it can be used directly without worrying about lifetimes, and without cloning.
Stop cancellation from interrupting an active usage flush
The usage agent now observes cancellation while waiting for the next flush interval instead of checking only after the full interval has elapsed. Cancellation remains pending while an active flush completes, preventing a drained report batch from being lost when its send future is interrupted.