Releases: janbalangue/async-bulkhead
v0.4.0
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.bulkhead→io.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.