Skip to content

Migration Guide 3.25

Guillaume Smet edited this page Jul 3, 2025 · 6 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.

Legacy config classes

It not possible anymore to build extensions using legacy config classes and the -AlegacyConfigRoot=true extension annotation processor option (see the 3.14 migration guide for more details about why this option was introduced).

Building such extensions will fail.

Extensions are now required to use config interfaces annotated with @ConfigMapping (and @ConfigRoot).

See the Quarkus 3.19 announcement and the Sunsetting legacy config classes blog post for the whole story.

Hibernate ORM

Database versions checks

The Hibernate ORM extension checks the version of the database on startup, to make sure its dialect was configured correctly.

This check has been in place for several versions of Quarkus now, but Quarkus 3.25 improves the check to correctly handle some edge cases such as the version of SQL Server on Azure or the version of CockroachDB.

Applications that were previously using workarounds to pass faulty version checks may start experiencing a version check failure on startup after the upgrade to Quarkus 3.25, in which case the datasource version (quarkus.datasource.db-version) needs to be updated.

For example when configuring a CockroachDB datasource, Quarkus will now expect the CockroachDB version to be set in quarkus.datasource.db-version (instead of the PostgreSQL version previously).

Hibernate Reactive

Database versions checks

The Hibernate Reactive extension now checks the version of the database on startup, just as the Hibernate ORM extension does, to make sure its dialect was configured correctly.

Applications connecting to older or incompatible versions of their chosen database may start experiencing a version check failure on startup, in which case the datasource version (quarkus.datasource.db-version) needs to be set explicitly.

OpenTelemetry metrics

When OpenTelemetry metric is active, Quarkus produces HTTP server and JVM related metrics.

Metric jvm.system.cpu.utilization was removed when in JVM mode and jvm.cpu.recent_utilization should be used instead.

These are the now available metrics when using OpenTelemetry Metrics:

Metric Name Description Type Available on JVM? Available on Native? MP 2.0?

http.server.request.duration

Duration of HTTP server requests

HISTOGRAM

Y

Y

Y

jvm.memory.committed

Measure of memory committed

LONG_SUM

Y

No data produced

Y

jvm.memory.used

Measure of memory used

LONG_SUM

Y

No data produced

Y

jvm.memory.limit

Measure of max obtainable memory

LONG_SUM

Y

Not present

Y

jvm.memory.used_after_last_gc

Measure of memory used, as measured after the most recent garbage collection event on this pool.

LONG_SUM

Y

No data produced

Y

jvm.gc.duration

Duration of JVM garbage collection actions

HISTOGRAM

Y

Not present

Y

jvm.class.count

Number of classes currently loaded.

LONG_SUM

Y

No data produced

Y

jvm.class.loaded

Number of classes loaded since JVM start.

LONG_SUM

Y

No data produced

Y

jvm.class.unloaded

Number of classes unloaded since JVM start.

LONG_SUM

Y

No data produced

Y

jvm.cpu.count

Number of processors available to the Java virtual machine.

LONG_SUM

Y

Y

N

jvm.cpu.limit

LONG_SUM

Y

No data produced

N

jvm.cpu.time

CPU time used by the process as reported by the JVM.

DOUBLE_SUM

Y

Not present

N

jvm.system.cpu.utilization

CPU time used by the process as reported by the JVM.

DOUBLE_SUM

Not present

No data produced

N

jvm.cpu.recent_utilization

Recent CPU utilization for the process as reported by the JVM.

DOUBLE_GAUGE

Y

No data produced

N

jvm.cpu.longlock

Long lock times

HISTOGRAM

Y

Y

N

jvm.cpu.context_switch

DOUBLE_SUM

Y

No data produced

N

jvm.network.io

Network read/write bytes.

HISTOGRAM

Y

Not present

N

jvm.network.time

Network read/write duration.

HISTOGRAM

Y

Not present

N

jvm.thread.count

Number of executing platform threads.

LONG_SUM

Y

Y

Y

Migration guides

Current version


LTS versions


Next version in main


Clone this wiki locally