Release Notes
0.3.x
| Version | Date |
|---|---|
0.3.0 |
2026-09-25 |
New Features
-
Multi-layer chaos assaults with per-request layer resolution (
DATABASE→MESSAGING→SERVICE→HTTP_IN,HTTP_OUTrolled per outgoing call), one check-box per layer in the Dev UI, and service-layer assaults on business beans via a CDI interceptor that runs inside the Fault Tolerance machinery — so@Retry,@Fallback,@Timeoutand@CircuitBreakerare exercised for real. TheDATABASElayer fails or delays JDBC connection acquisition through an Agroal pool interceptor (JDBC, Hibernate ORM, Panache); theMESSAGINGlayer faults@Incomingconsumers outside Fault Tolerance, each consumed message resolving its own layer (#54). -
Each recorded assault carries its
source(server,service,rest-client,webclient,database,messaging), exposed in the history, the counters, the metrics, the traces and the Markdown report; the Dev UI status bar counts the assaults per source. -
The Markdown report describes the armed chaos layers and the client-side assaults.
Breaking changes
-
Chaos no longer activates in test mode by default: set
quarkus.goblin.test.enabled=trueto assault your@QuarkusTestsuite (or callAssaultEngine.setActive(true)from a test). Adding the extension therefore never slows down nor breaks an existing test suite. -
The
quarkus-goblin-metricsmodule now depends on the Micrometer API only (quarkus-micrometer): add the registry of your choice, e.g.quarkus-micrometer-registry-prometheus, to expose/q/metrics. -
SERVICE-layer assaults are tagged
serviceinstead ofserverin the metrics and the traces. -
Java API: the targeting rules moved from
GoblinConfig.TargetConfigtoGoblinTargetingConfig(the property names are unchanged), andAssaultEngine.setStaticConfigis removed.
Improvements
-
Every configuration key except the
quarkus.goblin.target.include-packages/exclude-packages/exclude-annotationstargeting rules is now read at runtime and can be overridden when the application starts. The targeting rules stay fixed at build time and are applied by a single implementation shared by every layer. -
No chaos wiring in production builds: the service and messaging interceptor bindings, the database hook and the Dev UI JSON-RPC are only registered in dev and test.
-
Configuration changes (profile switch, reset, import) are published atomically, and each assault hook reads one consistent snapshot per request. A Dev UI import is staged and applied at once: a rejected payload changes nothing, and values of the wrong type are converted or skipped with a warning.
-
The assault history records the latency actually endured, including a delay cut short by
@Timeout, on every layer. -
Latency is never applied on a Vert.x event-loop thread, and latency values are bounded to 0-300000 ms.
-
The Dev UI keeps its toggles and forms in sync with the server (changes made from another tab or a JSON-RPC client appear within 2 seconds) and validates response header names before saving.
-
The Dev UI state file is written as structured JSON; files written by earlier versions are still read.
-
Quarkus 3.38 and every later version are accepted by the build (including the ecosystem CI snapshot).
Bug Fixes
-
A decision left on a worker thread by a failed HTTP request no longer leaks into a later message consumer or scheduled job.
-
The Dev UI "client" counter counted nothing: assaults are now counted per source.
-
Saving response header rules with an invalid name no longer erases every rule.
-
A corrupted or legacy
.goblin-state.jsonno longer prevents the application from starting.
0.2.x
| Version | Date |
|---|---|
0.2.1 |
2026-09-24 |
0.2.0 |
2026-09-21 |
0.2.1
New Features
-
Assault metrics and latency histograms via Micrometer / Prometheus, in the optional
quarkus-goblin-metricsmodule (#51). -
Assault tracing via OpenTelemetry — one
goblin.assaultspan per assault withgoblin.assault.*attributes, linked to the parent request span, in the optionalquarkus-goblin-opentelemetrymodule (#47).
0.2.0
New Features
-
Predefined assault profiles (#35).
-
Turn the Assault History into a chaos testing console (#37).
-
Client-side assaults for outgoing REST Client calls (#38).
-
Client-side assaults for outgoing Vert.x WebClient calls via
GoblinWebClient.enable(…)(#31). -
Response body injection assault (#40).
-
Response header injection assault (#42).
Improvements
-
Chaos Dashboard overhaul with live controls and server-driven quick picks (#41).
Bug Fixes
-
The enabled flag now always comes from the property, never from persisted state (#39).