Skip to content

Fluxheim 1.5.7

Choose a tag to compare

@eldryoth eldryoth released this 06 Jun 20:55
Immutable release. Only release title and notes can be modified.
v1.5.7
4c3afcd

Fluxheim 1.5.7 Release Notes

Fluxheim 1.5.7 starts the Fluxheim-native load-balancer core line. The goal is
to replace pingora-load-balancing as Fluxheim's load-balancer substrate while
preserving the current proxy/load-balancer configuration, admin API, status
shape, metrics, privacy-mode behavior, managed-cookie behavior, and selection
results as far as possible.

Changed

  • Add a Fluxheim-owned backend/backend-set model for load-balancer upstream
    construction.
  • Route static upstream pools, file-refreshed upstream discovery, and
    DNS-refreshed upstream discovery through the Fluxheim backend model.
  • Move backend keying, passive health, slow start, connection counters,
    latency scoring, and backend policy evaluation onto a Fluxheim-owned backend
    identity abstraction.
  • Build Maglev lookup tables from Fluxheim backend identities so Maglev
    construction no longer depends on Pingora's concrete backend type.
  • Move file-refreshed and DNS-refreshed backend discovery behind a
    Fluxheim-owned discovery trait.
  • Route runtime backend stats, bounded-load weight accounting, and disabled
    upstream parsing through the Fluxheim backend identity/adapter layer.
  • Move slow-start state regression coverage onto Fluxheim backend identities,
    keeping Pingora backend construction only in runtime-selection tests.
  • Replace Pingora's FNV weighted-hash selector for source, URI, header, and
    cookie hash modes with Fluxheim-owned weighted-first FNV selection over the
    current backend container.
  • Seed Fluxheim-owned FNV and consistent-hash selectors with per-boot routing
    secrets so clients cannot precompute keys that target a chosen backend.
  • Replace Pingora's random selector dependency for power-of-two choices with a
    Fluxheim-owned weighted random first pick and unique backend fallback scan.
  • Replace Pingora's consistent-hash selector dependency with Fluxheim-owned
    rendezvous candidate ordering for consistent and bounded-load consistent
    hash modes. Dynamic file/DNS discovery remains supported through the
    Fluxheim runtime backend container. This is a valid consistent-hash
    algorithm change and can remap existing consistent-hash affinity keys once
    during the 1.5.7 upgrade.
  • Collapse load-balancer factory, stats, and priority-check helpers onto a
    concrete readiness container now that Fluxheim owns all shipped selection
    algorithms.
  • Centralize runtime backend container operations behind Fluxheim-owned
    adapter helpers so readiness checks, backend enumeration, and health-check
    metadata have one migration boundary.
  • Route static upstream pools through the same Fluxheim-owned discovery
    adapter as file-refreshed and DNS-refreshed pools, removing Pingora's static
    discovery wrapper from load-balancer construction.
  • Replace Pingora's generic GenBackgroundService wrapper for load-balancer
    pools with a Fluxheim-owned ServiceWithDependents implementation while
    preserving the current update and health-check loop.
  • Introduce a Fluxheim backend-container trait so selector and runtime-stat
    code depend on Fluxheim's backend/readiness interface instead of the concrete
    Pingora container type.
  • Centralize the remaining concrete runtime backend value type behind the
    backend adapter module, keeping orchestration and discovery on Fluxheim's
    adapter alias while the final value-type replacement remains isolated.
  • Wrap load-balanced pools in a Fluxheim runtime type before handing them to
    selection, status, and background-service code.
  • Return Fluxheim runtime-wrapped load-balancer pools from discovery so
    selection-mode construction no longer repeats Pingora container wrapping.
  • Keep the selector-facing backend-container trait implemented only by the
    Fluxheim runtime wrapper.
  • Replace Pingora's load-balancer Backends container, discovery adapter, and
    background update loop with Fluxheim-owned backend storage, readiness state,
    discovery refresh, health-check scheduling, and shutdown handling.
  • Move load-balancer health checks behind a Fluxheim-owned health-check trait.
    Existing TCP/HTTP health-check behavior is preserved, with Pingora connector
    code kept inside the adapter layer instead of the runtime readiness boundary.
  • Hide the remaining runtime backend value type behind the load-balancer
    backend adapter so selector and health-check modules use Fluxheim's boundary
    type while the final backend-type replacement remains isolated.
  • Serialize per-backend load-balancer health state updates so enable/disable
    changes and active health observations cannot overwrite each other under
    concurrent health checks.
  • Store refreshed backend sets before refreshed health maps and use checked
    wake-time arithmetic in the load-balancer background loop.
  • Clarify stream upstream TLS warnings for mixed hostname and IP upstream
    routes where only IP connections skip hostname verification without
    upstream_sni.

Boundaries

1.5.7 is the load-balancer substrate replacement line. It may replace backend
types, backend readiness storage, discovery adapters, health-check scheduling,
background update lifecycle, and remaining load-balancer factory errors with
Fluxheim-owned equivalents.

1.5.7 does not add restart-persistent load-balancer state, active-active
cross-node state sync, runtime add/remove-member, xDS/Kubernetes/Consul
discovery, UDP/GSLB, WAF, VPN/firewall appliance behavior, HTTP/3/QUIC, or
Wasm/iRules/Lua scripting.

Checksums And Signatures

  • Commit: 4c3afcdf9d7e25546a48976d29b0e98adf80b23c
  • Local gate: GitHub CI green before tag; local release metadata checks passed
  • CodeQL/code scanning: no open release-blocking alerts before tag
  • Source archive checksums:
    • 8f49121c205c615da93be23e54bc049659e1bc4a7c9d8906d27b75be3c1538fc fluxheim-1.5.7.tar.gz
    • fb1c301f37a9ac31e24e88934ceef5b4551337eeeb50081565cea5d99e22606f fluxheim-1.5.7.zip
  • Binary checksums:
    • x86_64:
      • f117cf4b4de33bdb2bd52d2a388466b131d8ef39741afc062c1f315b308cdc80 fluxheim-1.5.7-full-x86_64-linux.tar.gz
      • 40feefd8a8db257e5c2098b23d218cbed4f8475cabc7634cde387b59151f7db7 fluxheim-1.5.7-cache-x86_64-linux.tar.gz
      • 4d4f8cf0cc82fb534309bd07a7c84dddff732f3d262a586dce4d17827f1a003a fluxheim-1.5.7-proxy-x86_64-linux.tar.gz
      • 04a8aac4afd569454f88142c58f965b4db5367255cbda996d23443fec8558dd8 fluxheim-1.5.7-php-x86_64-linux.tar.gz
      • 68fd806bc8ad3608b4c29cf51d38f1fe56638209325fa950653002366a3672a7 fluxheim-1.5.7-load-balancer-x86_64-linux.tar.gz
      • f11ece9ffb287f51a270f14ff1d33fceb6682943af6270a1615d2dfe9bfb6ca8 fluxheim-1.5.7-config-tester-x86_64-linux.tar.gz
    • aarch64:
      • e345b5d7db7ae6e23f590532dfbece32422ee6dfc2b4f666b377923920bd1d05 fluxheim-1.5.7-full-aarch64-linux.tar.gz
      • 9d012092191af3172b8707ae740669b70c69e09d8f9f167f2c524dc54e7b7e7e fluxheim-1.5.7-cache-aarch64-linux.tar.gz
      • e9bd81f3a3eede386ba4a5b046c3bdd18a4f7784aaddcf4707d449746a5d1df2 fluxheim-1.5.7-proxy-aarch64-linux.tar.gz
      • cc4278c3c5910f0fdaeed321c9ffb34f2aedb33695468fc14e6300875fef7ba7 fluxheim-1.5.7-php-aarch64-linux.tar.gz
      • 66691b9fc38f3d03b1f0ff0235ccae8fddf404522ac0735d75e59580b864d141 fluxheim-1.5.7-load-balancer-aarch64-linux.tar.gz
      • e898abaa74b1abe2f83c4c2e0c003a6c701c56dc98c30e6f76d4d516d8f43448 fluxheim-1.5.7-config-tester-aarch64-linux.tar.gz
    • macos:
      • 4ecb5c08af2f38b6346d5b62e6e3ab47301de49021489f81be39fdf16dfedde1 fluxheim-1.5.7-dev-aarch64-macos.tar.gz
  • SBOM checksums:
    • 621a99aaf138cf333a83886dd4df7c389d52f2d4adf575c141cb86b42cac61b2 fluxheim.spdx.json
    • 7beb909f309a4ee7d55d1b9229a23e9b8c5b9f68f51bf4626b69f7b1e975f49e fluxheim.cyclonedx.json
  • Reproducible build:
    • 7ed55ef583046f5be854e479b739c293e7395c9149e96bd6ddf2236f7d4c1aac x86_64
    • b60192a433a1e4a560a4aea8aca2138f58d5ebbffbab1bf072893f032a91d2f4 aarch64
    • 46e39a003856196efef4338d17400c5d3eded2893a91fe6572b125ceaddc7e55 macos
  • Full Build Container digests:
    • Wolfi: ghcr.io/valkyoth/fluxheim@sha256:8bcae75fe6c2471521d84da30ea01934312a5d09ae97a7316008d710727902b0
    • Alpine: ghcr.io/valkyoth/fluxheim@sha256:4430892fb03a3ec058eeb3990daa82052c22eeef7856f775f09a150235f7ab49
    • SUSE Micro: ghcr.io/valkyoth/fluxheim@sha256:aaaadd88849f1b7477aaff44d5b39a27f8b986d6cb1e1f588ef4e4772f9b7f2d
    • Debian: ghcr.io/valkyoth/fluxheim@sha256:70031ecc56edcdce8dedc32f07185df62a77f89b183889c1a3ba7de3016fbdcf
  • Cache Build Container digests:
    • Wolfi: ghcr.io/valkyoth/fluxheim@sha256:1df81acc5604cafe4b129c658bd375929c760afe5633160de51e3f56617d21f8
    • Alpine: ghcr.io/valkyoth/fluxheim@sha256:1a0f6585ba194a5e4eb623096bc5ef0301dc5fcc657f519836efa15118a7dd70
    • SUSE Micro: ghcr.io/valkyoth/fluxheim@sha256:5d9e1ba146e991398e5cd77fcef420b89c6d0d25d380680e26537a6c17b529a0
    • Debian: ghcr.io/valkyoth/fluxheim@sha256:0168740c6212ccca74b3b15761e80b7f05f8b44c98a7387d0af8109645d75ce2
  • Proxy Build Container digests:
    • Wolfi: ghcr.io/valkyoth/fluxheim@sha256:6846c457893e98e136fbf0680d0fc1e2936fcd5aeb7e63caa4194e272566f47d
    • Alpine: ghcr.io/valkyoth/fluxheim@sha256:4bd9f02e5b5b407a4f2683a2081596b3f56dde7b116e66746821c392a46e0219
    • SUSE Micro: ghcr.io/valkyoth/fluxheim@sha256:2b57e4d2b17f3768054ee67114b8fc3ca7630300bcc5f4a2f07e24a723e0c5aa
    • Debian: ghcr.io/valkyoth/fluxheim@sha256:312cf1eec27c951392fedfab7ad22285264cc072cb8698a7a613c9feb7abc187
  • PHP Build Container digests:
    • Wolfi: ghcr.io/valkyoth/fluxheim@sha256:5be25d8ebcf89c8066997ebfefceec6f9e09b0884eb0b0ff01680ea959ce0768
    • Alpine: ghcr.io/valkyoth/fluxheim@sha256:196b9d0abb5784de8921300195e24c30cb9cca7ea1023f549e9d1c1b3b0306f9
    • SUSE Micro: ghcr.io/valkyoth/fluxheim@sha256:7e4395cf561235a5088bf2aa2a3ff94da11cd8be9ee4b4171fcc358e91582237
    • Debian: ghcr.io/valkyoth/fluxheim@sha256:c034b4a83ec2f92549371d86143811983055144c1c1f2d4da94047b19d62ad5b
  • Load Balancer Build Container digests:
    • Wolfi: ghcr.io/valkyoth/fluxheim@sha256:94d6653ade3d38ca53211ff8feb82024cb37c582be432d9faa8cf350d6d852bc
    • Alpine: ghcr.io/valkyoth/fluxheim@sha256:9a01dc94b407712dd1357f7c2a0bd1ea35de8ce918887787e5d422db77507ee2
    • SUSE Micro: ghcr.io/valkyoth/fluxheim@sha256:64b5835211c5937110035708a636f0c88263c018268283ddd2b94eb4b87762c0
    • Debian: ghcr.io/valkyoth/fluxheim@sha256:524a22a332c9c5f728e1918a1fbda12ab87d48c1c50086fea0e00d41cd0884a3
  • Tag signature:
    • Good "git" signature for 1921261+eldryoth@users.noreply.github.com with ED25519 key SHA256:EoLRQ5k4J5pYz3UMFmkrV798gYFNkToGS2xEPvebqB4