hive-router-plan-executor 7.0.4 (2026-08-12)
Fixes
Add WebSocket connection reuse and execution mode configuration
WebSocket-enabled subgraphs can now configure connection reuse and choose how queries and mutations are transported.
Configure defaults for all subgraphs under traffic_shaping.all.websocket:
subscriptions:
enabled: true
websocket:
subgraphs:
reviews:
path: /reviews/ws
traffic_shaping:
all:
pool_idle_timeout: 50s # default
websocket:
reuse_connections: true
execute_mode: reuse_existingreuse_connections defaults to true:
truemultiplexes matching operations over initialized pooled WebSocket connectionsfalseopens a dedicated connection for each WebSocket operation
execute_mode defaults to http and supports:
http: queries and mutations always use HTTPreuse_existing: queries and mutations use an initialized matching WebSocket when available, otherwise they immediately use HTTPwebsocket: queries and mutations use WebSocket, creating or joining a pooled connection when reuse is enabled
Settings can be overridden per subgraph. Omitted WebSocket fields inherit the global value:
traffic_shaping:
all:
pool_idle_timeout: 50s # default
websocket:
reuse_connections: true
execute_mode: reuse_existing
subgraphs:
payments:
pool_idle_timeout: 5s
websocket:
reuse_connections: false
execute_mode: websocketIn this example, other WebSocket-enabled subgraphs opportunistically reuse initialized connections. payments sends each operation over a dedicated WebSocket.
Pooled WebSockets use the effective pool_idle_timeout. A per-subgraph value overrides traffic_shaping.all.pool_idle_timeout for both HTTP and WebSocket pools. Active WebSocket operations do not expire.
Connection matching uses the inbound headers selected by traffic_shaping.router.dedupe.headers, even when router request deduplication is disabled. Include every header that can affect connection-scoped authentication, authorization, cookies, or tenant identity:
traffic_shaping:
router:
dedupe:
headers:
include: [authorization, cookie, x-tenant]Improve variable coercion error messages
Variable coercion errors (invalid scalar/enum/object values, missing required fields, non-null violations) reports clear and informative error messages.
This only changes error text - error codes and HTTP status codes are unchanged.
Propagate all multi-instance headers from a single subgraph response
When a subgraph responded with multiple instances of a never-join header (Set-Cookie or WWW-Authenticate), the router only forwarded one of them to the client and silently dropped the rest.
The fix is to propagate all values of a never-join header as separate header fields end-to-end, rather than just the first value.
Fixes #1388