Skip to content

Migration Guide 3.16

Martin Kouba edited this page Dec 19, 2024 · 19 revisions
Note

We highly recommend the use of quarkus update to update to a new version of Quarkus.

Items marked below with ⚙️ ✅ are automatically handled by quarkus update.

Big Reactive Rename compatibility layer gone

In Quarkus 3.9, we renamed a lot of extensions and configuration properties when we rebranded RESTEasy Reactive to Quarkus REST and the Reactive Messaging extensions to Quarkus Messaging.

We introduced relocations for the artifacts and also fallbacks for the configuration properties.

In Quarkus 3.16, we dropped the relocations and the fallbacks for the configuration properties so you need to use the new artifacts and the new configuration properties.

See the Quarkus 3.9 migration guide for more context.

WebSockets Next

Improved default strategies for unhandled failures

When an error occurs but no error handler can handle the failure, Quarkus uses the strategy specified by the quarkus.websockets-next.server.unhandled-failure-strategy configuration property. The default values changed. For server endpoints, the error message is logged and the connection is closed. For client endpoints, the error message is logged. Previously, for both server and client endpoints the connection was closed silently by default.

HttpUpgradeContext constructor

The HttpUpgradeContext now consumes Uni<SecurityIdentity> instead of SecurityIdentity. This aligns with the reactive model used in the core of the extension.

HTTP Compression

If HTTP compression is enabled the quarkus.http.compress-media-types configuration property defines the list of media types compressed. The default value of this config property has changed. The newly compressed media types include application/json and application/xhtml+xml.

SmallRye Fault Tolerance

The configuration properties for @Fallback.fallbackMethod() and @BeforeRetry.methodName() are now resolved at build time and so cannot be changed at runtime. Specifically, the following configuration properties are affected:

  • <class name>/<method name>/Fallback/fallbackMethod

  • <class name>/Fallback/fallbackMethod

  • Fallback/fallbackMethod

  • <class name>/<method name>/BeforeRetry/methodName

  • <class name>/BeforeRetry/methodName

  • BeforeRetry/methodName

This is to allow proper reflection configuration and native image compilation.

OpenTelemetry

Configuration quarkus.datasource.jdbc.tracing was marked as deprecated for removal. This was a left over from the old, also deprecated OpenTracing based JDBC tracing. Nowadays OpenTelementry, with this property should be used instead:

quarkus.datasource.jdbc.telemetry=true
For more details, please check: https://quarkus.io/guides/opentelemetry-tracing#jdbc

MongoDB with Panache

The handling of lists/arrays has slightly changed. Prior to 3.16, you had to include the square brackets yourselves in the query: {'status':{$in: [?1]}}. From 3.16, the square brackets are automatically added by the Panache layer which is a lot more consistent and your queries will look like {'status':{$in: ?1}}.

This change was made as part of fixing some other issues related to escaping.

@WithTestResource

Quarkus 3.15 shipped with a version of @WithTestResource that was fundamentally flawed and was thus not advertised. In Quarkus 3.16 the flaws have been fixed but that resulted in a breaking change, where the previous restrictToAnnotatedClass field was replaced by scope

Current version

Migration Guide 3.17

Next version in main

Migration Guide 3.18

Clone this wiki locally