Skip to content

Fluxzero 1.152.6

Choose a tag to compare

@github-actions github-actions released this 23 Apr 15:03

1.152.6 (2026-04-23)

Bug Fixes

  • fix(websocket): suppress metrics after target close (fbd0f70)

    Treat metrics publishing as best-effort when the metrics websocket client has already closed during Fluxzero shutdown.

    Suppress the expected closed-client session lookup failure both at metrics publication and request send logging, while keeping other metrics failures visible.

  • fix(websocket): avoid force close during shutdown (a49c41e)

    Only force-close Undertow sessions from close callbacks while the websocket client is still active.

    This preserves the existing reconnect behavior for remotely closed sessions, because the session pool must not reuse a closing session that still reports isOpen=true.

    During SDK shutdown, skip forceClose so the websocket close handshake can complete cleanly and the runtime does not report abnormal 1006 closes.

  • fix(websocket): ignore metrics after close (f84902e)

    Keep websocket request and result metrics best-effort so telemetry cannot break functional request handling during shutdown.

    Skip metrics publishing once the websocket client is closed and log non-shutdown publish failures at warn level. Add regression coverage for publishing metrics after close.

  • fix(tracking): suppress shutdown interrupts (3a63a61)

    Treat interrupted fetches and position stores as normal shutdown once a tracker has been cancelled. This keeps the stricter retry interruption behavior intact while preventing tracker threads from printing uncaught InterruptedExceptions during Fluxzero shutdown.

    Add regression coverage for interrupted fetch shutdown and interrupted position storage after cancellation.

  • fix(websocket): keep reconnects off io threads (b07d49b)

    SDK 1.133 migrated websocket clients from annotation-based endpoints to programmatic endpoints for capability negotiation. With Undertow, server-initiated abnormal closes can then invoke callbacks on XNIO I/O threads, so retrying outstanding requests inline may block reconnects until UT003035 timeouts. Route websocket message, pong, close, and error callbacks through the result executor, keep reconnect work on the reconnect executor, and make shutdown explicitly drain callback executors while logging late callbacks after close. Add a CI reconnect test with a test-only endpoint that force-closes an outstanding tracking request and verifies the replacement session is opened without close handling running on an XNIO thread.

Tests

  • test(benchmark): add tracker integration benchmark (482bf65)

    Add a standalone TrackerIntegrationBenchmark that can stress many consumers and websocket clients against a local runtime.

    The benchmark publishes configurable event traffic, waits for all consumers to observe the expected messages, and logs missing consumer progress when the run times out.

  • test(websocket): add ping latency benchmark (4df6cc9)

    Add a focused websocket benchmark for investigating ping and pong latency against a real runtime.

    The benchmark keeps tracking sessions open, optionally publishes event traffic, continuously reads message batches, and reports ping scheduling lag, pong callback latency, pong end-to-end latency, latency buckets, timeout counts, publish/read counters, and callback thread summaries.

    This gives us a lightweight way to compare SDK versions and spot pong tail latency moving toward ping timeouts under realistic websocket message traffic without turning timing-sensitive behavior into a flaky CI test.