Skip to content

Releases: janbalangue/async-bulkhead

v0.4.0

27 Jan 19:04

Choose a tag to compare

async-bulkhead v0.4.0

This release continues the focus on explicit, fail-fast admission control for async operations, with a small breaking change for long-term consistency and a few ergonomics around overload handling.

Breaking change

  • Public Java package namespace renamed

    io.janbalangue.bulkhead.*io.janbalangue.asyncbulkhead.*

    This aligns the public API with the artifact name (io.janbalangue:async-bulkhead) and repository structure.

    Migration: update imports via a simple search/replace:

    io.janbalangue.bulkheadio.janbalangue.asyncbulkhead

Added

  • Overload handling helpers
    • Bulkhead.submitOrElse(...)
    • Bulkhead.submitOrElseValue(...)
    • Enables concise, explicit fallback behavior when capacity is exhausted.
  • Rejection classification utilities
    • BulkheadRejectedException.unwrap(Throwable)
    • BulkheadRejectedException.isRejected(Throwable)
    • Simplifies distinguishing overload rejection from execution failure in async pipelines.

Guardrails & correctness

  • Added namespace/API smoke tests to prevent accidental reintroduction of legacy packages.
  • Release workflow now inspects built JAR contents to enforce canonical package layout.
  • Expanded test coverage around rejection helpers and fallback behavior.

Why this breaking change

This release aligns the public Java package namespace with the library's artifact and repository naming for consistency. While it requires a small, mechanical import update, it reduces long-term ambiguity and keeps documentation, examples, and tooling easier to reason about. Making this adjustment early helps keep the public API clean and predictable as the project moves toward a stable 1.0 release.