• DcRouter v32.0.1
    Release / build-and-release (push) Successful in 27m37s
    Stable

    jkunz released this 2026-09-19 00:02:38 +00:00 | 84 commits to main since this release

    2026-09-19 - 32.0.1

    Fixes

    • drop the version token from the combined gateway-client route key (routes)
      • A gateway-client route that owns one hostname under a specific route reference stored its ownership as <type>:<clientId>:<appId>:v2:host-route:<payload>. The v2: token was a released key prefix of ours carrying a version, which nothing reads as a version and nothing ever increments. The composed and matched spelling is now host-route:<payload>, with the prefix, its parser and the generated route name owned by one module (ts/opsserver/helpers/gateway-client-route-key.ts). The payload bytes are unchanged.
      • New migration step host-route-key (32.0.0 to 32.0.1) rewrites every stored RouteDoc.metadata.externalKey that still carries the old prefix, and rewrites route.name only where it still equals the name generated from the old key — an operator- or producer-chosen name is never touched. The walk is ordered by id, resumes from a step-owned checkpoint cursor, selects documents by their stored spelling so a re-run is a no-op, and leaves updatedAt alone because no route's effective configuration changes. A stored key whose payload does not decode into a hostname and route reference is refused by name with the route id instead of being carried forward.
      • There is no runtime tolerance for the old prefix after the step: a route key that still spells it is treated as a malformed combined key and listed with its route hostname only, never with a route reference it cannot prove, and the malformed key is stated once per listing at warn with the route id. Once the step has run the ledger names 32.0.1, and a ledger a newer dcrouter wrote is refused by name (ts_migrations/readme.md, "Migration Rules"), so a rollback to 32.0.0 does not start against the migrated database.
      • The key is composed, matched and consumed entirely inside dcrouter. Producers send IGatewayClientOwnership and never compose or read an externalKey, so no gateway-client API body, no Cloudly or Onebox call site and no wire contract changes with this release. The only externally visible change is the string an operator sees in route metadata.
    Downloads