What's new
SPILL_TO_DISK overflow action
Messages that overflow the in-memory queue are written to a per-lane file-backed FIFO queue on disk and drained back into memory once the queue clears — zero message loss under back-pressure. Configure with overflowAction: SPILL_TO_DISK and optionally spillRootPath: /your/path (default: .streamfence-spill).
New metric
streamfence_messages_spilled_total — Prometheus counter tracking spill events per namespace/topic.
Runnable examples (streamfence-demo)
Three ready-to-run examples covering every overflow policy:
SingleServerExample— BEST_EFFORT single namespaceMultiNamespaceExample— DROP_OLDEST, SNAPSHOT_ONLY, AT_LEAST_ONCE in parallelMixedWorkloadExample— two servers loaded from YAML config
Coverage & quality
- JaCoCo 60 % instruction coverage gate enforced in CI
- 114 unit + integration + smoke tests (up from 66)
- Codecov branch coverage gaps closed for
SpillFileStore,ClientLane,ClientSessionState, andSocketIoServerSpec
Security
- BouncyCastle
bcprov-jdk18onandbcpkix-jdk18onbumped from 1.79 → 1.84
Documentation
Full README rewrite aligned with the JS reference implementation: delivery modes table, overflow policies table, all 14 event listener callbacks, server/namespace builder reference, API type index, and example links.
Upgrade notes
No breaking API changes. The spillRootPath builder method is new and purely additive.
What's Changed
- chore(deps): Bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #16
- [Snyk] Fix for 3 vulnerabilities by @MoshPe in #18
- [Snyk] Fix for 1 vulnerabilities by @MoshPe in #19
- feat: harden Java parity with the JS repo by @MoshPe in #20
- chore(deps): Bump org.bouncycastle:bcpkix-jdk18on from 1.79 to 1.84 by @dependabot[bot] in #21
- chore(deps): Bump org.bouncycastle:bcprov-jdk18on from 1.79 to 1.84 by @dependabot[bot] in #22
New Contributors
- @dependabot[bot] made their first contribution in #16
Full Changelog: https://github.com/MoshPe/StreamFence/commits/v1.0.7