Skip to content

Migration to Vert.x 5 and Netty 4.2 #51959

@jponge

Description

@jponge

Description

This epic is to track the migration from Vert.x 4 to Vert.x 5 in Quarkus and across its wider ecosystem. Switching to Netty 4.2 is also part of this effort as Vert.x 5 depends on it, and this Netty branch has substantial changes compared to Netty 4.1.

Analysis

Switching to Vert.x 5 and Netty 4.2 is not a simple dependency bump, there are modules, APIs and runtime breaking changes.

The migration effort will require a multi-step approach to migrate the direct dependency components first (likely with beta releases for downstream consumption), then Quarkus itself, then "major" projects in the Quarkiverse ecosystem.

Vert.x 5 and Netty 4.2 migration guides

See:

Roadmap

The initial roadmap is the following.

1. Smallrye Mutiny Vert.x Bindings

Many drivers and user-facing APIs consume Vert.x 5 through the Mutiny bindings, so it has to be migrated first (tracked by smallrye/smallrye-mutiny-vertx-bindings#1045)

  • New bindings generator that supports Vert.x 5 APIs
  • Reconsideration of what modules we should support in this project, and what modules we should drop
  • Alignment with the latest Vert.x 5 releases
  • Release a first public beta for downstream consumption

2. Direct Quarkus dependencies ecosystem

Each project will need to publish beta releases when it has performed its migration.

3. Quarkus "independent projects"

At this stage we will be able to create a long-running branch to prepare https://github.com/quarkusio/quarkus itself to migrate.

There are 2 projects to migrate under the independent-projects/ folder of the Quarkus repository:

4. Quarkus initial migration (JVM)

At this stage we will migrate https://github.com/quarkusio/quarkus itself to Vert.x 5 and Netty 4.2 in the vertx-5-migration branch.

We focus on correctness, not technical debt reduction. We don't focus on performance either.

5. Quarkus full migration (JVM + native + 4.0 features)

Notable attention points once we have a vertx-5-migration branch "migrated" as a baseline:

Finalization:

  • Fix and ensure all tests pass in JVM mode
  • Fix and ensure native compilation so all tests pass in native mode
  • Fix and ensure all integration tests
  • Ensure everything passes in upstream CI
  • Evaluate performance and coordinate possible upstream fixes
  • Document breaking changes and have a migration guide related to the impact of this migration

6. Quarkiverse

7. The big merge

  • Green flag for all dependency projects to leave beta and perform proper releases
  • Merge into main
  • Celebrate!

Initial stakeholders

Stakeholders related to the components and steps above: @jponge @anavarr @vietj @tsegismont @ozangunalp @franz1981 @DavideD @lucamolteni @geoand @gsmet @cescoffier @aureamunoz @radcortez @dmlloyd @brunobat @Ladicek @mkouba

Migrated artifacts version tracking

These projects have Vert.x 5 artifacts available from Maven Central starting from these releases:

  • org.hibernate.reactive:hibernate-reactive: 4.2.1.Final
  • io.fabric8:kubernetes-httpclient-vertx-5: 7.6.1
  • io.smallrye.reactive:smallrye-mutiny-*: 4.0.0-beta0
  • io.smallrye.common:smallrye-common-vertx5-context: 2.17.0
  • io.smallrye:smallrye-fault-tolerance (and related): 7.0.0-RC1
  • io.quarkus.http:quarkus-http: 6.0.0.Alpha3
  • io.smallrye.reactive:smallrye-reactive-messaging-*: 5.0.0-beta0
  • io.smallrye.opentelemetry:smallrye-opentelemetry-*: 2.12.0
  • io.smallrye:smallrye-graphql: 3.0.0.Beta1
  • io.smallrye.reactive:smallrye-reactive-messaging: 5.0.0-beta1

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

Status

In Progress

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions