Skip to content

Fluxzero 1.239.6

Choose a tag to compare

@github-actions github-actions released this 17 Aug 13:09
· 95 commits to main since this release
fc2648c

1.239.6 (2026-08-17)

Bug Fixes

  • websocket: isolate liveness with staged runtime dispatch (#286) (fc2648c)

    fix(websocket): isolate liveness with bounded runtime ingress

    Replace overflow-triggered reconnects with receive-demand backpressure. Separate WebSocket protocol handling, runtime-message decoding, and functional result completion so slow customer callbacks cannot block pong handling or decode progress.

    Process result batches incrementally through a fair, bounded dispatcher. Preserve the existing worker policy: virtual threads on Java 25+ and a lazy platform-thread pool on Java 21–24.

    Introduce these defaults:

    - fluxzero.runtime.ingress.maxConcurrency=3 per session
    - fluxzero.runtime.ingress.maxRetainedMessages=128 per session
    - fluxzero.runtime.ingress.maxRetainedBytes=67108864 per session
    - fluxzero.runtime.ingress.maxCompletionConcurrency=8 per client
    - fluxzero.runtime.ingress.stallCloseTimeout=PT0S (disabled)

    Retain compressed-wire credit through functional completion while releasing compressed payloads after dispatcher admission. Allow a sole oversized message to progress. No activation property is required; applications with measured workloads can override the bounded defaults explicitly.

    Finalize opt-in WebsocketTransportMetric diagnostics, that when enabled with:

    - fluxzero.websocket.transportMetrics.enabled=true

    will report:

    - PING_TIMEOUT
    - RUNTIME_INGRESS_BACKPRESSURED
    - RUNTIME_INGRESS_STALLED
    - RUNTIME_INGRESS_RECOVERED
    - RUNTIME_INGRESS_OVERFLOW
    - RUNTIME_EXECUTOR_REJECTED

    Avoid per-message, ping, or pong metric publication on the healthy path. Suppress transport diagnostics for the metrics WebSocket itself to prevent recursive pressure.

    Document the configuration, liveness policy, diagnostics, and compatibility considerations. Add regression and load coverage for protocol liveness, backpressure, failure recovery, large tracking responses, result ordering, and bounded resource use.

    Co-authored-by: Michel Tiemens <michel@flux.host>