Skip to content

hive-router-plan-executor 7.0.4 (2026-08-12)

Choose a tag to compare

@knope-bot knope-bot released this 12 Aug 13:39
69752b7

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_existing

reuse_connections defaults to true:

  • true multiplexes matching operations over initialized pooled WebSocket connections
  • false opens a dedicated connection for each WebSocket operation

execute_mode defaults to http and supports:

  • http: queries and mutations always use HTTP
  • reuse_existing: queries and mutations use an initialized matching WebSocket when available, otherwise they immediately use HTTP
  • websocket: 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: websocket

In 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