Skip to content

Migration Guide 2.8

Martin Kouba edited this page Mar 11, 2022 · 21 revisions

quarkus-undertow-websockets is gone

The long time deprecated quarkus-undertow-websockets legacy extension is now removed. Use quarkus-websockets instead.

Assertj moved out of the BOM

We had frequent problems with Assertj binary compatibility (running tests compiled with an older version didn't work well with the version enforced in the BOM) so we decided to move Assertj outside of the Quarkus BOM.

That means you will have to define the version of Assertj in your own POM:

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.22.0</version>
</dependency>

quarkus.datasource.devservices removed

Long time deprecated quarkus.datasource.devservices config property has been removed. Use quarkus.datasource.devservices.enabled instead.

Hibernate MariaDB Dialect updated to 10.6

Hibernate is now using org.hibernate.dialect.MariaDB106Dialect by default. If you are working with MariaDB 10.3, 10.4 or 10.5 you should configure the following:

quarkus.hibernate-orm.dialect=org.hibernate.dialect.MariaDB103Dialect

OpenTracing

Some OpenTracing libraries code was moved to SmallRye OpenTracing due to lack of maintenance in the upstream projects:

These are now removed from the Quarkus BOM and available in io.smallrye:smallrye-opentracing-contrib (included transitively with the Quarkus OpenTracing Extension).

OpenTelemetry

  • Static resources are not traced automatically anymore. To revert to the old behavior, please use the configuration quarkus.opentelemetry.tracer.include-static-resources=true.
  • HTTP Span names now include a leading slash. This aligns with the OpenTelemetry Semantic conventions for HTTP spans and the http.route tag.

Qute

A null parameter of a loop section is treated as an empty iterable, smilarly as a null value is handled by an output expression. Previously a null parameter resulted in a TemplateException at runtime.

{#for item in items} <1>
 {item.name}
{/for}

<1> If items is resolved to null then nothing is rendered. Previously, a TemplateException was thrown at runtime.

REST Client Reactive ReactiveClientHeadersFactory method change

To align with ClientHeadersFactory, the getHeaders method now accepts clientOutgoingHeaders map as the second parameter. This parameter is a read-only map of header parameters specified on the client interface. After the change the signature of the method is:

public abstract Uni<MultivaluedMap<String, String>> getHeaders(MultivaluedMap<String, String> incomingHeaders,
            MultivaluedMap<String, String> clientOutgoingHeaders);

Scheduler

Subclasses do not inherit the metadata of a @Scheduled method declared on a superclass anymore. The old behavior was undocumented and inconsistent; e.g. if Scheduled#identity() was used and the method was inherited then the build failed.

In the following example, the everySecond() method is only invoked upon the instance of Jobs.

class Jobs {
   @Scheduled(every = "1s")
   void everySecond() {
     // ..do something 
   }
}
@Singleton
class MyJobs extends Jobs {
}

Current Version

Migration Guide 3.16

Next Version

Migration Guide 3.17

Clone this wiki locally