Skip to content

Changelog — page 20

New features, improvements, and fixes in the Fluxzero SDK.

GitHub

1.178.0 (2026-05-20)

Features
  • handling: support stateful members (GitHub)

    Allow @​Member objects inside @​Stateful handlers to create, update, delete, and fan out via child associations while persisting each mutated root at most once per message.

    Add record canonical-constructor and Kotlin data-class rebuild coverage, duplicate entity-id guards, member map-key documentation, downstream Kotlin tests, and performance benchmark paths.

Performance Improvements
  • handling: batch stateful member writeback (GitHub)

    Stage member mutations per stateful root and apply them per member holder, so list and map members clone and wither their owner once per message instead of once per child mutation. This keeps the one-storage-action-per-root behavior while removing most of the CPU overhead from multi-child updates.

    Benchmarks with memberCount=100/rootCount=10 improved list/map/fanout member handling from roughly 662/634/64 ops/s to 11876/13227/1207 ops/s.

GitHub

1.177.3 (2026-05-20)

Dependency updates
  • bump org.apache.maven.plugins:maven-enforcer-plugin (GitHub)

    org.apache.maven.plugins:maven-enforcer-plugin: 3.6.2 -> 3.6.3 changelog

GitHub

1.177.2 (2026-05-20)

Dependency updates
  • bump org.junit:junit-bom from 6.0.3 to 6.1.0 (GitHub)

    org.junit:junit-bom: 6.0.3 -> 6.1.0 changelog

GitHub

1.177.1 (2026-05-19)

Dependency updates
  • bump actions/setup-node from 5 to 6 (GitHub)

    actions/setup-node: 5 -> 6 changelog

GitHub

1.177.0 (2026-05-19)

Features
  • add fixture trace diagnostics (GitHub)

    Render fixture traces for failing tests, including given/when/and then phases, elapsed time, message publications, handler invocations, async consumer names, and missing handlers. Keep payloads compact, suppress noisy metrics/result/error traffic, and record missed or unexpected expectations directly in the trace.

    Improve assertion output for local and Maven runs: keep IntelliJ comparison links visible by moving trace details to a suppressed assertion, render expected/actual only for detected Maven executions, and simplify mismatch JSON to the asserted payload/metadata shape. Also guard websocket proxy tests with bounded waits so local IDE runs fail clearly instead of hanging.

Bug Fixes
  • websocket: clarify auth and idle timeout logs (GitHub)

    Describe web request messages from the web layer so handler failures no longer show byte[] payloads, and map auto-handshake authorization failures to include the websocket handshake path and underlying handler reason.

    Log proxy idle websocket timeouts as warning messages without stack traces because clients without pings can naturally hit the idle timeout.

GitHub

1.176.0 (2026-05-18)

Continuous Integration
  • repair: invoke repair from failed deploy build (GitHub)
Chores
  • Manually register annotation processors and remove auto-service dependency (GitHub)
GitHub

1.175.1 (2026-05-18)

Bug Fixes
  • websocket: mark replayed response timing (GitHub)
Continuous Integration
  • repair: add automated main build repair workflow (GitHub)
GitHub

1.175.0 (2026-05-18)

Code Refactoring
  • proxy: migrate proxy server to Jetty (GitHub)

    Replace Undertow with Jetty for the proxy HTTP and websocket ingress path while preserving lifecycle, request routing, streaming, and websocket behavior through expanded tests.

    Add configurable request, websocket, and thread limits, websocket send backpressure metrics, and benchmark coverage for the proxy hot paths.

GitHub

1.174.1 (2026-05-18)

Bug Fixes
  • websocket: wait for open error callback in test (GitHub)
GitHub

1.174.0 (2026-05-18)

Tests
  • proxy: cover ingress transport contracts (GitHub)

    Add characterization coverage for proxy HTTP configuration, header propagation, body limits, websocket negotiation, binary frames, and rejected handshakes before replacing Undertow with Jetty.

    Document the intended multi-chunk InputStream webresponse contract as a disabled regression marker because the current Undertow path hangs while closing the final chunk.

GitHub

1.173.2 (2026-05-18)

Dependency updates
  • bump distroless/java25-debian13 in /proxy (GitHub)

    distroless/java25-debian13: c0d379f -> 8fd23b8

GitHub

1.173.1 (2026-05-18)

Dependency updates
  • bump jakarta.annotation:jakarta.annotation-api from 2.1.1 to 3.0.0 (GitHub)

    jakarta.annotation:jakarta.annotation-api: 2.1.1 -> 3.0.0

GitHub

1.173.0 (2026-05-17)

Features
  • websocket: include request receive timing in results (GitHub)
GitHub

1.172.0 (2026-05-17)

Features
  • tracking: skip expired requests before handling (GitHub)

    Propagate effective request timeouts through request metadata so tracking handlers can avoid invoking stale indexed requests. Commands stay opt-in, while queries and HTTP web handlers skip by default, and skipped messages emit IgnoreMessageEvent metrics instead of handler metrics.

    Also lets gateways apply @​Timeout to asynchronous request futures, adds proxy timeout configuration, and documents metrics/timeouts in the Java and Kotlin agent manuals.

Bug Fixes
  • publishing: apply timeout annotation to async sends (GitHub)

    Honor @​Timeout when creating request futures for non-blocking send calls while preserving the existing one-minute default for sendAndWait calls without an annotation. This lets async requests intentionally use shorter or longer deadlines than the request handler default.

  • publishing: clear timed-out request callbacks (GitHub)

    Route blocking gateway timeouts through the concrete request lifecycle so timed-out sendAndWait calls complete the futures that own callback cleanup. Web request sendAndWait keeps its existing settings timeout while passing that deadline into the generic gateway internally.

GitHub

1.171.4 (2026-05-17)

Bug Fixes
  • tracking: return immediately for zero max wait (GitHub)

    Treat a zero max wait duration as an immediate deadline for reads and segment claims, including cached trackers that should avoid falling back to a blocking delegate read when cache data is not available.

GitHub

1.171.3 (2026-05-17)

Bug Fixes
  • tracking: support self handler class registration (GitHub)

    Allow local self handlers to be registered by class without double handling self payloads, and let async test fixtures discover @​TrackSelf payload handlers incrementally.

    Cache default constructor lookups in ReflectionUtils so class handlers without a default constructor only apply to self payloads.

    Closes #29

GitHub

1.171.2 (2026-05-17)

Bug Fixes
  • proxy: start full embedded proxy lifecycle (GitHub)

    Make ProxyServer.start() the embedded full proxy startup path: it creates the configured client, starts the HTTP proxy and forward proxy consumer, and owns shutdown without a JVM hook, keepalive thread, or global application instance. Keep the HTTP-only startup package-private for tests and internal callers, and resolve proxy ports from FLUXZERO_PROXY_PORT before PROXY_PORT.

    Also quiet Jetty logging in the active proxy/sdk logback configs used by embedded test-server runs

Tests
  • fixture: harden async waits and speed slow tests (GitHub)

    Snapshot fixture results before validation, track remote document dispatches for async fixture tests, and remove fixed sleeps from several slow tests.

GitHub

1.171.1 (2026-05-16)

Bug Fixes
  • test-server: separate embedded shutdown lifecycle (GitHub)

    Keep TestServer.main as the standalone entry point with a JVM shutdown hook, and expose startServer variants for embedded usage without registering hooks.

    Disable Jetty stop-at-shutdown, shut down websocket endpoints when the returned server stops, and make test-server based tests own and stop their embedded server explicitly.

    Also set Jetty logging to warn and update the proxy OpenAPI demo to use the embedded server lifecycle.

GitHub

1.171.0 (2026-05-16)

Features
  • search: add fluent bulk document updates (GitHub)

    Expose Fluxzero.bulkUpdate(collection) and DocumentStore.bulkUpdate(collection) as fluent builders for mixed index and delete operations.

    The builder reuses existing index inference and applies updates through the existing document store bulk update path.

GitHub

1.170.0 (2026-05-16)

Features
  • test-server: publish runtime lifecycle metrics (GitHub)

    Add a RuntimeLifecycleEvent JSON type and register it for JsonType deserialization.

    Publish STARTED and STOPPING metrics around the test-server lifecycle, with MetricsLog.registerMetrics returning a CompletableFuture so callers can decide whether to wait. Lifecycle publishing waits on that future to ensure the metrics are stored before startup/shutdown completes.


© 2026 Fluxzero