Download Latest Version BFE v1.8.9.1 source code.zip (13.3 MB)
Home / v1.8.8.5
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-10-21 1.4 kB
v1.8.8.5 source code.tar.gz 2026-10-21 7.4 MB
v1.8.8.5 source code.zip 2026-10-21 11.4 MB
Totals: 3 Items   18.8 MB 0

What's Changed

Fixed

  • Return a decidable synthetic 429 when no AI key can be selected for the target cluster (all keys penalized / Weight=0 / dead), instead of (res=nil, err=nil): a configured fallback cluster is actually tried, and without one the client gets a retryable 429 instead of an opaque empty-body 500. shouldTriggerFallback also treats (nil, nil) as fallback-eligible as a hard invariant (issue [#1440])
  • Exclude Weight=0 keys from the session-affinity penalty filter and replace the "fallback to the original list" branch with a circuit breaker: when every usable key is penalized the filter returns no candidates — key selection fails, the synthetic 429 triggers cluster fallback, and the cluster makes zero upstream interaction until the penalty TTL expires (new 429s extend the window) (issue [#1439])
  • Emit the unified error contract on gateway-synthesized AI failures: the key-exhaustion 429 now carries error.code = NO_AVAILABLE_KEY (429, rate_limit_error), error.details.retry_after_seconds and a standard Retry-After header, and sets err_code = NO_AVAILABLE_KEY for access-log attribution; gateway-side failures (findProduct failure, no cluster, backend connect/transport errors) return BACKEND_UNAVAILABLE (502) with the unified body instead of a bare empty-body 500 (issue [#1441])

Full Changelog: https://github.com/bfenetworks/bfe/blob/v1.8.8.5/CHANGELOG.md

Source: README.md, updated 2026-10-21