Skip to content

Conversation

vietj
Copy link
Member

@vietj vietj commented Sep 4, 2025

No description provided.

imz87 and others added 30 commits June 8, 2025 13:11
…hread.

Motivation:

Future#await ensures that we use a virtual thread context to obtain an execute to suspend the virtual thread, however this check also includes execute blocking tasks.

Changes:

When obtaining the worker executor to suspend the current task, ensure that we are on the context thread, so execute blocking tasks are not included.
Motivation:

HTTP/2 client queues writes when the stream has an asynchronous boundary. When the stream creation fails, the failure should be recorded so that queued writes can be guarded against the failure.

Changes:

Record stream creation failure, when a delayed writes observes the failure, the write operation should be failed and not proceed further.
- reduces the amount of methods on VertxInternal/ContextInternal
- introduce context builder to avoid the proliferation of context creational methods
- move the impl API used by VertxInternal/ContextInternal to internal package
- rename HostnameResolver -> NameResolver
Motivation:

NoStackTraceThrowable currently extends Throwable and has been moved to the implementation package not exported in module-info.

There are several concerns we need to solve:

1. Virtual threads and Kotlin coroutines need to catch a throwable which is not a recommended practice, e.g. an Exception catch declaration let the NoStackTraceThrowable go through.
2. Users relying on NoStackTraceThrowable developing a modular application have to catch Throwable instead since the type is not exported.

We should provide a transitory path to remove NoStackTraceThrowable in Vert.x 6.

Changes:

NoStackTraceThrowable extends VertxException instead of Throwable.

Users catching NoStackTraceThrowable (which is deprecated) can instead catch VertxException and achieve the same effect.
Motivation:

The deployment manager API is currently an implementation, this API is used by Vert.x Shell to extract deployment information.

Changes:

Expose the deployment manager API.

Implementation cleanups.
…st header.

Motivation:

The code checking the well formdness of an HTTP/2 request leaves the vertx stream in an incorrect state when the validation fails.

The vertx stream remains reachable from the netty stream as a stream property but the back reference to the netty stream is null.

Subsequent stream events expect it to be fully initialized and fails with NPEs.

Changes:

Only set the vertx stream on the netty stream after it has been initialized, subsequent lookup for the vertx stream will return null instead of an invalid vertx stream.
The Javadoc implies that it is the default, but the implementation leaves it to null, forcing callers to set the EL model everywhere.

With this change, EL threading model is the default and invoking the withThreadingModel method with a null parameter is forbidden.

Signed-off-by: Thomas Segismont <tsegismont@gmail.com>
imz87 and others added 30 commits July 28, 2025 14:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants