Skip to content

Migration Guide 3.3

George Gastaldi edited this page Mar 5, 2024 · 15 revisions

Elasticsearch

Dev Services

The Elasticsearch Dev Services now default to starting Elasticsearch 8, instead of 7.17 previously.

High-Level Client

The extension for the Elasticsearch High-Level Client was deprecated in Quarkus 3.0 because the client had been deprecated by Elastic and had licensing issues.

This extension has now been removed completely.

You should use the Elasticsearch Java Client instead. See the Elasticsearch client guide for more information.

Flyway

Additional dependency required for Oracle users

Quarkus 3.3.x upgrades to Flyway 9.20.0, which extracts the Oracle DB code to a separate dependency. See the Flyway extension documentation for more information.

Defaults for projectable/sortable on geo-point fields

Hibernate Search 6.2 changed how defaults are handled for geo-point fields.

If your Hibernate Search mapping includes geo-point fields that are using the default value for the projectable option, and are using either the default value or Sortable.NO for the sortable option, Elasticsearch schema validation will fail on startup because of missing docvalues on those fields.

To address that, either:

  • Revert to the previous defaults by adding projectable = Projectable.NO to the mapping annotation of relevant geo-point fields.

  • Or recreate your Elasticsearch indexes and reindex your database. The easiest way to do so is to use the MassIndexer with dropAndCreateSchemaOnStart(true).

Different DB schema for outbox-polling

If you use the quarkus-hibernate-search-orm-outbox-polling extension, be aware that the database schema for the tables used by that extension changed.

See https://docs.jboss.org/hibernate/search/6.2/migration/html_single/#data-format for help on how to migrate to the new schema.

Deprecated/renamed configuration properties

  • quarkus.hibernate-search-orm.automatic-indexing.synchronization.strategy is now deprecated in favor of quarkus.hibernate-search-orm.indexing.plan.synchronization.strategy.

  • quarkus.hibernate-search-orm.automatic-indexing.enable-dirty-check is now deprecated with no alternative to replace it. After its removal in a future version, a dirty check will always be performed when considering whether to trigger reindexing.

GraalVM

We are now relying consistently on the org.graalvm.sdk:graal-sdk artifact (we previously used the non-API svm artifact).

The dependencies to this artifact are marked as provided in Quarkus so they are not transitive: if you want to include GraalVM substitutions in your applications, please add it as a dependency yourself from now on.

It is part of the BOM so you don’t have to define the version.

OpenTelemetry (OTel)

This version brings extensive improvements to the `quarkus-opentelemetry' extension. Please check the full list of changes of the release notes. In here we mention noteworthy new features and behaviours that might have changed.

  • OTel 1.28 is now supported.

  • The default OTel exporter has been replaced by a Quarkus implementation on top of Vert.x. This allows us not to depend on the OkHttp library. The exporter continues to be automatically wired with CDI, that’s why the quarkus.otel.traces.exporter property defaults to cdi.

  • The new Quarkus Vert.x exporter now supports grpc (default) and http/protobuf. Please change the protocol with this property: quarkus.otel.exporter.otlp.traces.protocol

  • The Quarkus OTel exporter will now have TLS support.

  • When setting quarkus.tls.trust-all=true, it will also disable all SSL verifications on the Quarkus OTel exporter.

  • We added a way to customise the propagation header. This can be achieved by implementing the TextMapPropagatorCustomizer interface. This can be used, as an example, to restrict propagation of OpenTelemetry trace headers and prevent potentially sensitive data to be sent to third party systems.

  • By setting quarkus.otel.traces.eusp.enabled=true you can add information about the user related to each span. The user’s ID and roles will be added to the span attributes, if available.

  • We now properly report the http.route attribute.

  • Swagger UI endpoints will not be tracked anymore.

  • Spans of Failed requests will now contain stack traces.

  • OTel instantiation has been improved to prevent racing condition at startup.

Micrometer

  • Micrometer will now provide Netty allocation metrics if the related classes are present in the classpath, which is the usual case.

  • Customise emitted tags by implementing HttpServerMetricsTagsContributor and emitted metrics by implementing MeterRegistryCustomizer.

  • Auth failures will now populate the metrics URI tag.

Keycloak Authorization

org.keycloak:keycloak-adapter-core dependency has been removed from the quarkus-keycloak-authorization extension with the update to Keycloak 22.0.0 because it is no longer relevant to the functionality of quarkus-keycloak-authorization, with Keycloak Java adapters code planned to be removed from Keycloak in the future as well.

If necessary, please add this dependency to your application’s pom:

<dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-adapter-core</artifactId>
</dependency>
Clone this wiki locally