Skip to content

v1.2.0

Choose a tag to compare

@jdwyah jdwyah released this 08 Jul 18:41
· 35 commits to main since this release
  • Feat (options): warn when an explicit api_urls disables automatic failover (qfg-41nh.26). The default (and every QUONFIG_DOMAIN-derived) api_urls list carries a primary AND a secondary leg, and the HTTP config-fetch hedges/fails over between them (the secondary runs on separate infrastructure). An explicit api_urls: replaces that list wholesale, so a single-entry override silently dropped the secondary and disabled automatic failover. The client now logs one WARN at init when the caller explicitly set api_urls and the resolved list has fewer than two legs, pointing at the fix (pass both a primary and a secondary URL). Behavior is otherwise unchanged; no new dependencies. A new README "Failover & QUONFIG_DOMAIN" section documents the URL derivation and the failover model.

  • Feat (telemetry): emit failover-behavior signals on the existing telemetry wire (qfg-41nh.18). The SDK now folds three additive failover counters into the periodic telemetry flush so the failover dashboards can be built — previously no SDK emitted any failover signal. Each flush window that saw failover activity ships one failover event alongside the existing summaries / contextShapes / exampleContexts events: hedgeFired (config-fetch cycles where the parallel primary+secondary hedge fired its secondary leg), guardRejected (installs dropped by the reject-older ordering guard, counted on BOTH the HTTP config-fetch path and the SSE message path), and resolvedFromPrimary / resolvedFromSecondary (which upstream leg served each successful HTTP install; SSE/datadir installs are not counted). resolvedFromLkg is reserved and always 0. The event is emitted only when at least one counter is non-zero in the window, so a steady-state client with no config churn emits nothing. Recording rides the existing telemetry opt-out (nothing is emitted unless telemetry is enabled) and adds only a per-config-refresh mutex increment — no new dependencies, no per-evaluation overhead. Wire shape is additive and matches sdk-go exactly (an older api-telemetry strips the unknown field).

  • Add Prefab.get('key') style usage after a Prefab.init() call [#151]

  • Add add_context_keys and with_context_keys method for LoggerClient [#145]