Skip to content

hive-router-plan-executor 9.0.0 (2026-08-16)

Choose a tag to compare

@knope-bot knope-bot released this 16 Aug 15:00
da8f2ad

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.