Skip to content

IoUring: extend user data from short to long#16682

Merged
chrisvest merged 25 commits into
netty:4.2from
dreamlike-ocean:extend_udata
May 12, 2026
Merged

IoUring: extend user data from short to long#16682
chrisvest merged 25 commits into
netty:4.2from
dreamlike-ocean:extend_udata

Conversation

@dreamlike-ocean

Copy link
Copy Markdown
Contributor

Motivation:

This PR extends io_uring userData handling from short to long without changing the existing fast path for short values.

We reuse Netty's IoUringIoHandler to drive some one-shot io_uring operations through a shared DefaultIoUringIoRegistration per EventLoop. In this model, short user data is too limited for real usage: it is not enough for some tracking payloads and cannot reliably carry values such as an fd or other larger identifiers.

Modification:

  • Keep the existing packed fast path when userData still fits in short.
  • Add a slow path for larger long userData values.
  • Track slow-path SQEs with a lightweight per-SQE table (PendingOpSlots) and resolve completions through the live registration table.
  • Keep the io_uring channel code and IoUringIoOps path compatible with long userData.

Result:
Keep long user data support for custom IoHandle, preserve near-baseline performance for the short user data path, and confine the remaining extra bookkeeping cost to the long user data slow path.

Design:
I also evaluated other tracking strategies, including open addressing and HashMap / LongObjectMap-style mappings.

In practice, they were not a better fit for this workload:

  • Open addressing with tombstones still introduced extra probe / insert / remove bookkeeping, and its CPU cost became more visible once removals were frequent or the live set grew larger.
  • HashMap / LongObjectMap-style solutions added extra lookup / indirection overhead on the slow path and were not competitive enough for this use case.
  • HashMap / LongObjectMap-style solutions add extra gc overhead on the slow path and were not competitive enough for this use case.
  • Some alternatives improved one side of the workload, but paid for it either with higher steady-state CPU cost or with a more expensive remove path.

The current approach is a better overall tradeoff for the target scenario:

  • custom IoHandle usage is relatively uncommon
  • collisions are expected to be rare
  • resizes should therefore also be uncommon
  • for non-network io_uring operations, SQEs usually have a short pending lifetime

That makes a simple array-backed per-SQE tracking scheme a good fit here: it keeps the common case straightforward and avoids introducing extra hot-path cost for more general but heavier data structures.

CustomIoHandleBenchmark on the current branch and 4.2 base

Fast path vs baseline

pendingOpsDepth baseline fast current fast delta
4096 1,023,617 ops/s 1,024,338 ops/s +0.07%
65536 974,757 ops/s 970,427 ops/s -0.44%

Slow path vs current fast path

pendingOpsDepth fast path slow path delta
4096 1,024,338 ops/s 944,886 ops/s -7.76%
65536 970,427 ops/s 886,176 ops/s -8.68%

These numbers are in the expected range for the added slow-path bookkeeping, while keeping the existing short-value fast path intact.

https://gist.github.com/dreamlike-ocean/05e7e272e0e6a9f45f40192229c938dc

fix #16634

@normanmaurer

Copy link
Copy Markdown
Member

@franz1981 @chrisvest PTAL as well

2. release slow-path slot before dispatch
3. keep registration ids positive via wraparound
@normanmaurer

Copy link
Copy Markdown
Member

@franz1981 @chrisvest PTAL as well

@normanmaurer normanmaurer added this to the 4.2.13.Final milestone Apr 24, 2026

@normanmaurer normanmaurer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The next round of review

Comment thread transport-classes-io_uring/src/main/java/io/netty/channel/uring/IoUringIoOps.java Outdated
private void resize() {
int oldCapacity = activeSequences.length;
int newCapacity = oldCapacity << 1;
if (newCapacity <= 0) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure we should really allow to grow it so much in the first place. Imho it would be better to have a smaller max capacity.

@dreamlike-ocean dreamlike-ocean Apr 24, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can cap growth
but, it won’t be true fail-fast—registration may still fail asynchronously after the token is returned(off-eventloop) flow, so this is only a safety guard.

@franz1981

Copy link
Copy Markdown
Contributor

Gotta take a look. Likely Monday bud 🙏

@normanmaurer

Copy link
Copy Markdown
Member

@yawkat you might also be interested...

@normanmaurer normanmaurer left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work!

@normanmaurer

Copy link
Copy Markdown
Member

And @chrisvest

@chrisvest

Copy link
Copy Markdown
Member

Will review it soon

@normanmaurer normanmaurer added this to the 4.2.14.Final milestone May 5, 2026
@dreamlike-ocean

Copy link
Copy Markdown
Contributor Author

Do you have any updates on this? @franz1981 @chrisvest

# Conflicts:
#	transport-classes-io_uring/src/main/java/io/netty/channel/uring/IoUringIoHandler.java
@franz1981

Copy link
Copy Markdown
Contributor

Today the day 🙏 sorry for the delay @dreamlike-ocean

@chrisvest chrisvest left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry it took so long to review this. I spotted a few things.

My main concern is that PendingOpSlots copes poorly with collisions, and can end up using a lot of memory in long running processes.

Comment thread transport-classes-io_uring/src/main/java/io/netty/channel/uring/IoUring.java Outdated
int mask = this.mask;
int slot = slot(sequence, mask);
while (activeSequences[slot] != INVALID_ID) {
resize();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This triggers a resize on any collision.

If there's a slot taken, that is never completed, then we'll resize every time the sequence wraps around.

Even without a slot that never completes, the arrays will still grow from the non-zero probability of collisions over long enough timescales.

I think we need a data structure that copes with this better; a hash table, or a tree.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it now uses a dedicated open-addressed mapping for slow-path token to context lookup.

@dreamlike-ocean

dreamlike-ocean commented May 9, 2026

Copy link
Copy Markdown
Contributor Author

PendingOpMap replaces the old slow-path slot table with a hash-based map. This avoids resizing on every collision and makes slow-path token lookup more robust.

  • Using open addressing, it avoids extra per-entry object allocation on the slow path.
  • Using Fibonacci hashing to spread the monotonically increasing slow-path tokens across the table.
  • Using tombstones on delete, so removals do not force expensive reshuffling.

@chrisvest chrisvest left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couple of comments but otherwise this is looking good.

Comment thread transport-classes-io_uring/src/main/java/io/netty/channel/uring/PendingOpMap.java Outdated
@chrisvest chrisvest added the needs-cherry-pick-5.0 This PR should be cherry-picked to 5.0 once merged. label May 12, 2026
chrisvest added 2 commits May 12, 2026 10:07
All io_uring tests, except LoadClassTest, needs to be in the native module
@chrisvest

Copy link
Copy Markdown
Member

Moved the new test to the native module to make the JDK8 build happy.

@chrisvest chrisvest enabled auto-merge (squash) May 12, 2026 20:22
@chrisvest chrisvest merged commit 7f00b24 into netty:4.2 May 12, 2026
19 checks passed
@netty-project-bot

Copy link
Copy Markdown
Contributor

Auto-port PR for 5.0: #16806

@github-actions github-actions Bot removed the needs-cherry-pick-5.0 This PR should be cherry-picked to 5.0 once merged. label May 12, 2026
chrisvest added a commit that referenced this pull request May 13, 2026
Auto-port of #16682 to 5.0
Cherry-picked commit: 7f00b24

---
 Motivation:

This PR extends io_uring `userData` handling from `short` to `long`
without changing the existing fast path for short values.

We reuse Netty's `IoUringIoHandler` to drive some one-shot io_uring
operations through a shared `DefaultIoUringIoRegistration` per
`EventLoop`. In this model, `short` user data is too limited for real
usage: it is not enough for some tracking payloads and cannot reliably
carry values such as an `fd` or other larger identifiers.

Modification:

- Keep the existing packed fast path when `userData` still fits in
`short`.
- Add a slow path for larger `long userData` values.
- Track slow-path SQEs with a lightweight per-SQE table
(`PendingOpSlots`) and resolve completions through the live registration
table.
- Keep the io_uring channel code and `IoUringIoOps` path compatible with
long `userData`.


Result:
Keep `long` user data support for custom `IoHandle`, preserve
near-baseline performance for the `short` user data path, and confine
the remaining extra bookkeeping cost to the `long` user data slow path.

Design:
I also evaluated other tracking strategies, including open addressing
and `HashMap` / `LongObjectMap`-style mappings.

In practice, they were not a better fit for this workload:

- Open addressing with tombstones still introduced extra probe / insert
/ remove bookkeeping, and its CPU cost became more visible once removals
were frequent or the live set grew larger.
- `HashMap` / `LongObjectMap`-style solutions added extra lookup /
indirection overhead on the slow path and were not competitive enough
for this use case.
- `HashMap` / `LongObjectMap`-style solutions add extra gc overhead on
the slow path and were not competitive enough for this use case.
- Some alternatives improved one side of the workload, but paid for it
either with higher steady-state CPU cost or with a more expensive remove
path.

The current approach is a better overall tradeoff for the target
scenario:

- custom `IoHandle` usage is relatively uncommon
- collisions are expected to be rare
- resizes should therefore also be uncommon
- for non-network io_uring operations, SQEs usually have a short pending
lifetime

That makes a simple array-backed per-SQE tracking scheme a good fit
here: it keeps the common case straightforward and avoids introducing
extra hot-path cost for more general but heavier data structures.


`CustomIoHandleBenchmark` on the current branch  and 4.2 base

 Fast path vs baseline
  | pendingOpsDepth | baseline fast | current fast | delta |
  | --- | ---: | ---: | ---: |
  | 4096 | 1,023,617 ops/s | 1,024,338 ops/s | +0.07% |
  | 65536 | 974,757 ops/s | 970,427 ops/s | -0.44%  |

Slow path vs current fast path
| pendingOpsDepth | fast path | slow path | delta |
| --- | ---: | ---: | ---: |
| 4096 | 1,024,338 ops/s | 944,886 ops/s | -7.76% |
| 65536 | 970,427 ops/s | 886,176 ops/s | -8.68% |

These numbers are in the expected range for the added slow-path
bookkeeping, while keeping the existing short-value fast path intact.

https://gist.github.com/dreamlike-ocean/05e7e272e0e6a9f45f40192229c938dc

fix #16634

---------

Co-authored-by: Mengyang Li <56702218+dreamlike-ocean@users.noreply.github.com>
Co-authored-by: Chris Vest <christianvest_hansen@apple.com>
mergify Bot added a commit to ArcadeData/arcadedb that referenced this pull request May 24, 2026
…ip ci]

Bumps `netty.version` from 4.2.13.Final to 4.2.14.Final.
Updates `io.netty:netty-transport` from 4.2.13.Final to 4.2.14.Final
Release notes

*Sourced from [io.netty:netty-transport's releases](https://github.com/netty/netty/releases).*

> netty-4.2.14.Final
> ------------------
>
> What's Changed
> --------------
>
> * HTTP: Fix revapi failure introduced by 84530fa81e12dcd1d42310bb20c1385cb44128d8 by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16748](https://redirect.github.com/netty/netty/pull/16748)
> * HTTP: Re-add constructor to HttpProxyHandler that was removed by mistake by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16747](https://redirect.github.com/netty/netty/pull/16747)
> * Marshalling: Explicit document security requirements by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16752](https://redirect.github.com/netty/netty/pull/16752)
> * Fix io\_uring op completion TRACE logging by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16755](https://redirect.github.com/netty/netty/pull/16755)
> * Quic: Ensure writes are done before notify close promise of QuicheQui… by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16758](https://redirect.github.com/netty/netty/pull/16758)
> * Avoid re-parsing openssl key material with non-cached provider by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16759](https://redirect.github.com/netty/netty/pull/16759)
> * Pin HTTP/RTSP version + method normalization to Locale.US by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16765](https://redirect.github.com/netty/netty/pull/16765)
> * Fill MsgHdrMemoryArray#hdrs with null entry on release by [`@​tsegismont`](https://github.com/tsegismont) in [netty/netty#16764](https://redirect.github.com/netty/netty/pull/16764)
> * Revapi: Use default "oldVersion" by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16774](https://redirect.github.com/netty/netty/pull/16774)
> * Adaptive: Fix concurrency issue in adaptive allocator by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16767](https://redirect.github.com/netty/netty/pull/16767)
> * Auto-port 4.2: Make bulk byte moving in ByteBuf faster by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16781](https://redirect.github.com/netty/netty/pull/16781)
> * Pin multipart Content-Type / Content-Transfer-Encoding case folding to Locale.US by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16768](https://redirect.github.com/netty/netty/pull/16768)
> * Remove dead native declarations by [`@​pandareen`](https://github.com/pandareen) in [netty/netty#16783](https://redirect.github.com/netty/netty/pull/16783)
> * Isolate tests that modify available Security providers by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16793](https://redirect.github.com/netty/netty/pull/16793)
> * Remove test annotations from a method that isn't a test by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16792](https://redirect.github.com/netty/netty/pull/16792)
> * Enable OpenSslCachingKeyMaterialProvider to evict stale entries after cert rotation by [`@​zhangweikop`](https://github.com/zhangweikop) in [netty/netty#16523](https://redirect.github.com/netty/netty/pull/16523)
> * IoUring: extend user data from short to long by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16682](https://redirect.github.com/netty/netty/pull/16682)
> * Revert CompositeByteBuf component search fast path by [`@​yawkat`](https://github.com/yawkat) in [netty/netty#16811](https://redirect.github.com/netty/netty/pull/16811)
> * HTTP2: Use 100 as default max concurrent streams setting by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16804](https://redirect.github.com/netty/netty/pull/16804)
> * Fix ResumptionController wrapping by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16815](https://redirect.github.com/netty/netty/pull/16815)
> * Resolve all localhost addresses without querying DNS servers by [`@​JulianVennen`](https://github.com/JulianVennen) in [netty/netty#16749](https://redirect.github.com/netty/netty/pull/16749)
> * IpFilter: Fix ClassCastException caused by IpSubnetFilter if only ipv6 rules are configured but remote peer is using ipv4 by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16803](https://redirect.github.com/netty/netty/pull/16803)
> * Fix memoryAddress() for direct ByteBuffers wrapped by Unpooled without Unsafe by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16788](https://redirect.github.com/netty/netty/pull/16788)
> * Route synchronous onLookupComplete exceptions via fireExceptionCaught by [`@​kwondh5217`](https://github.com/kwondh5217) in [netty/netty#16794](https://redirect.github.com/netty/netty/pull/16794)
> * IoUring: Stop generic FileRegion drain loop when transferred() reaches count() by [`@​LuciferYang`](https://github.com/LuciferYang) in [netty/netty#16826](https://redirect.github.com/netty/netty/pull/16826)
> * MQTT: Allow MQTT 5 CONNECT with password only by [`@​shblue21`](https://github.com/shblue21) in [netty/netty#16833](https://redirect.github.com/netty/netty/pull/16833)
> * Fix MQTT decoder size check after variable header replay by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16787](https://redirect.github.com/netty/netty/pull/16787)
>
> New Contributors
> ----------------
>
> * [`@​pandareen`](https://github.com/pandareen) made their first contribution in [netty/netty#16783](https://redirect.github.com/netty/netty/pull/16783)
> * [`@​zhangweikop`](https://github.com/zhangweikop) made their first contribution in [netty/netty#16523](https://redirect.github.com/netty/netty/pull/16523)
> * [`@​JulianVennen`](https://github.com/JulianVennen) made their first contribution in [netty/netty#16749](https://redirect.github.com/netty/netty/pull/16749)
> * [`@​kwondh5217`](https://github.com/kwondh5217) made their first contribution in [netty/netty#16794](https://redirect.github.com/netty/netty/pull/16794)
> * [`@​shblue21`](https://github.com/shblue21) made their first contribution in [netty/netty#16833](https://redirect.github.com/netty/netty/pull/16833)
>
> **Full Changelog**: <netty/netty@netty-4.2.13.Final...netty-4.2.14.Final>


Commits

* [`0a60b75`](netty/netty@0a60b75) [maven-release-plugin] prepare release netty-4.2.14.Final
* [`72df658`](netty/netty@72df658) Fix MQTT decoder size check after variable header replay ([#16787](https://redirect.github.com/netty/netty/issues/16787))
* [`7125dba`](netty/netty@7125dba) MQTT: Allow MQTT 5 CONNECT with password only ([#16833](https://redirect.github.com/netty/netty/issues/16833))
* [`9e19320`](netty/netty@9e19320) IoUring: Stop generic FileRegion drain loop when transferred() reaches count(...
* [`4ce9f17`](netty/netty@4ce9f17) Route synchronous onLookupComplete exceptions via fireExceptionCaught ([#16794](https://redirect.github.com/netty/netty/issues/16794))
* [`f7b1b7d`](netty/netty@f7b1b7d) Fix memoryAddress() for direct ByteBuffers wrapped by Unpooled without Unsafe...
* [`0ccb265`](netty/netty@0ccb265) IpFilter: Fix ClassCastException caused by IpSubnetFilter if only ipv6 rules ...
* [`a6aeb6d`](netty/netty@a6aeb6d) Resolve all localhost addresses without querying DNS servers ([#16749](https://redirect.github.com/netty/netty/issues/16749))
* [`c328ba2`](netty/netty@c328ba2) Fix ResumptionController wrapping ([#16815](https://redirect.github.com/netty/netty/issues/16815))
* [`bc5862b`](netty/netty@bc5862b) HTTP2: Use 100 as default max concurrent streams setting ([#16804](https://redirect.github.com/netty/netty/issues/16804))
* Additional commits viewable in [compare view](netty/netty@netty-4.2.13.Final...netty-4.2.14.Final)
  
Updates `io.netty:netty-codec` from 4.2.13.Final to 4.2.14.Final
Release notes

*Sourced from [io.netty:netty-codec's releases](https://github.com/netty/netty/releases).*

> netty-4.2.14.Final
> ------------------
>
> What's Changed
> --------------
>
> * HTTP: Fix revapi failure introduced by 84530fa81e12dcd1d42310bb20c1385cb44128d8 by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16748](https://redirect.github.com/netty/netty/pull/16748)
> * HTTP: Re-add constructor to HttpProxyHandler that was removed by mistake by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16747](https://redirect.github.com/netty/netty/pull/16747)
> * Marshalling: Explicit document security requirements by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16752](https://redirect.github.com/netty/netty/pull/16752)
> * Fix io\_uring op completion TRACE logging by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16755](https://redirect.github.com/netty/netty/pull/16755)
> * Quic: Ensure writes are done before notify close promise of QuicheQui… by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16758](https://redirect.github.com/netty/netty/pull/16758)
> * Avoid re-parsing openssl key material with non-cached provider by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16759](https://redirect.github.com/netty/netty/pull/16759)
> * Pin HTTP/RTSP version + method normalization to Locale.US by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16765](https://redirect.github.com/netty/netty/pull/16765)
> * Fill MsgHdrMemoryArray#hdrs with null entry on release by [`@​tsegismont`](https://github.com/tsegismont) in [netty/netty#16764](https://redirect.github.com/netty/netty/pull/16764)
> * Revapi: Use default "oldVersion" by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16774](https://redirect.github.com/netty/netty/pull/16774)
> * Adaptive: Fix concurrency issue in adaptive allocator by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16767](https://redirect.github.com/netty/netty/pull/16767)
> * Auto-port 4.2: Make bulk byte moving in ByteBuf faster by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16781](https://redirect.github.com/netty/netty/pull/16781)
> * Pin multipart Content-Type / Content-Transfer-Encoding case folding to Locale.US by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16768](https://redirect.github.com/netty/netty/pull/16768)
> * Remove dead native declarations by [`@​pandareen`](https://github.com/pandareen) in [netty/netty#16783](https://redirect.github.com/netty/netty/pull/16783)
> * Isolate tests that modify available Security providers by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16793](https://redirect.github.com/netty/netty/pull/16793)
> * Remove test annotations from a method that isn't a test by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16792](https://redirect.github.com/netty/netty/pull/16792)
> * Enable OpenSslCachingKeyMaterialProvider to evict stale entries after cert rotation by [`@​zhangweikop`](https://github.com/zhangweikop) in [netty/netty#16523](https://redirect.github.com/netty/netty/pull/16523)
> * IoUring: extend user data from short to long by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16682](https://redirect.github.com/netty/netty/pull/16682)
> * Revert CompositeByteBuf component search fast path by [`@​yawkat`](https://github.com/yawkat) in [netty/netty#16811](https://redirect.github.com/netty/netty/pull/16811)
> * HTTP2: Use 100 as default max concurrent streams setting by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16804](https://redirect.github.com/netty/netty/pull/16804)
> * Fix ResumptionController wrapping by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16815](https://redirect.github.com/netty/netty/pull/16815)
> * Resolve all localhost addresses without querying DNS servers by [`@​JulianVennen`](https://github.com/JulianVennen) in [netty/netty#16749](https://redirect.github.com/netty/netty/pull/16749)
> * IpFilter: Fix ClassCastException caused by IpSubnetFilter if only ipv6 rules are configured but remote peer is using ipv4 by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16803](https://redirect.github.com/netty/netty/pull/16803)
> * Fix memoryAddress() for direct ByteBuffers wrapped by Unpooled without Unsafe by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16788](https://redirect.github.com/netty/netty/pull/16788)
> * Route synchronous onLookupComplete exceptions via fireExceptionCaught by [`@​kwondh5217`](https://github.com/kwondh5217) in [netty/netty#16794](https://redirect.github.com/netty/netty/pull/16794)
> * IoUring: Stop generic FileRegion drain loop when transferred() reaches count() by [`@​LuciferYang`](https://github.com/LuciferYang) in [netty/netty#16826](https://redirect.github.com/netty/netty/pull/16826)
> * MQTT: Allow MQTT 5 CONNECT with password only by [`@​shblue21`](https://github.com/shblue21) in [netty/netty#16833](https://redirect.github.com/netty/netty/pull/16833)
> * Fix MQTT decoder size check after variable header replay by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16787](https://redirect.github.com/netty/netty/pull/16787)
>
> New Contributors
> ----------------
>
> * [`@​pandareen`](https://github.com/pandareen) made their first contribution in [netty/netty#16783](https://redirect.github.com/netty/netty/pull/16783)
> * [`@​zhangweikop`](https://github.com/zhangweikop) made their first contribution in [netty/netty#16523](https://redirect.github.com/netty/netty/pull/16523)
> * [`@​JulianVennen`](https://github.com/JulianVennen) made their first contribution in [netty/netty#16749](https://redirect.github.com/netty/netty/pull/16749)
> * [`@​kwondh5217`](https://github.com/kwondh5217) made their first contribution in [netty/netty#16794](https://redirect.github.com/netty/netty/pull/16794)
> * [`@​shblue21`](https://github.com/shblue21) made their first contribution in [netty/netty#16833](https://redirect.github.com/netty/netty/pull/16833)
>
> **Full Changelog**: <netty/netty@netty-4.2.13.Final...netty-4.2.14.Final>


Commits

* [`0a60b75`](netty/netty@0a60b75) [maven-release-plugin] prepare release netty-4.2.14.Final
* [`72df658`](netty/netty@72df658) Fix MQTT decoder size check after variable header replay ([#16787](https://redirect.github.com/netty/netty/issues/16787))
* [`7125dba`](netty/netty@7125dba) MQTT: Allow MQTT 5 CONNECT with password only ([#16833](https://redirect.github.com/netty/netty/issues/16833))
* [`9e19320`](netty/netty@9e19320) IoUring: Stop generic FileRegion drain loop when transferred() reaches count(...
* [`4ce9f17`](netty/netty@4ce9f17) Route synchronous onLookupComplete exceptions via fireExceptionCaught ([#16794](https://redirect.github.com/netty/netty/issues/16794))
* [`f7b1b7d`](netty/netty@f7b1b7d) Fix memoryAddress() for direct ByteBuffers wrapped by Unpooled without Unsafe...
* [`0ccb265`](netty/netty@0ccb265) IpFilter: Fix ClassCastException caused by IpSubnetFilter if only ipv6 rules ...
* [`a6aeb6d`](netty/netty@a6aeb6d) Resolve all localhost addresses without querying DNS servers ([#16749](https://redirect.github.com/netty/netty/issues/16749))
* [`c328ba2`](netty/netty@c328ba2) Fix ResumptionController wrapping ([#16815](https://redirect.github.com/netty/netty/issues/16815))
* [`bc5862b`](netty/netty@bc5862b) HTTP2: Use 100 as default max concurrent streams setting ([#16804](https://redirect.github.com/netty/netty/issues/16804))
* Additional commits viewable in [compare view](netty/netty@netty-4.2.13.Final...netty-4.2.14.Final)
  
Updates `io.netty:netty-handler` from 4.2.13.Final to 4.2.14.Final
Release notes

*Sourced from [io.netty:netty-handler's releases](https://github.com/netty/netty/releases).*

> netty-4.2.14.Final
> ------------------
>
> What's Changed
> --------------
>
> * HTTP: Fix revapi failure introduced by 84530fa81e12dcd1d42310bb20c1385cb44128d8 by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16748](https://redirect.github.com/netty/netty/pull/16748)
> * HTTP: Re-add constructor to HttpProxyHandler that was removed by mistake by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16747](https://redirect.github.com/netty/netty/pull/16747)
> * Marshalling: Explicit document security requirements by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16752](https://redirect.github.com/netty/netty/pull/16752)
> * Fix io\_uring op completion TRACE logging by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16755](https://redirect.github.com/netty/netty/pull/16755)
> * Quic: Ensure writes are done before notify close promise of QuicheQui… by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16758](https://redirect.github.com/netty/netty/pull/16758)
> * Avoid re-parsing openssl key material with non-cached provider by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16759](https://redirect.github.com/netty/netty/pull/16759)
> * Pin HTTP/RTSP version + method normalization to Locale.US by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16765](https://redirect.github.com/netty/netty/pull/16765)
> * Fill MsgHdrMemoryArray#hdrs with null entry on release by [`@​tsegismont`](https://github.com/tsegismont) in [netty/netty#16764](https://redirect.github.com/netty/netty/pull/16764)
> * Revapi: Use default "oldVersion" by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16774](https://redirect.github.com/netty/netty/pull/16774)
> * Adaptive: Fix concurrency issue in adaptive allocator by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16767](https://redirect.github.com/netty/netty/pull/16767)
> * Auto-port 4.2: Make bulk byte moving in ByteBuf faster by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16781](https://redirect.github.com/netty/netty/pull/16781)
> * Pin multipart Content-Type / Content-Transfer-Encoding case folding to Locale.US by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16768](https://redirect.github.com/netty/netty/pull/16768)
> * Remove dead native declarations by [`@​pandareen`](https://github.com/pandareen) in [netty/netty#16783](https://redirect.github.com/netty/netty/pull/16783)
> * Isolate tests that modify available Security providers by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16793](https://redirect.github.com/netty/netty/pull/16793)
> * Remove test annotations from a method that isn't a test by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16792](https://redirect.github.com/netty/netty/pull/16792)
> * Enable OpenSslCachingKeyMaterialProvider to evict stale entries after cert rotation by [`@​zhangweikop`](https://github.com/zhangweikop) in [netty/netty#16523](https://redirect.github.com/netty/netty/pull/16523)
> * IoUring: extend user data from short to long by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16682](https://redirect.github.com/netty/netty/pull/16682)
> * Revert CompositeByteBuf component search fast path by [`@​yawkat`](https://github.com/yawkat) in [netty/netty#16811](https://redirect.github.com/netty/netty/pull/16811)
> * HTTP2: Use 100 as default max concurrent streams setting by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16804](https://redirect.github.com/netty/netty/pull/16804)
> * Fix ResumptionController wrapping by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16815](https://redirect.github.com/netty/netty/pull/16815)
> * Resolve all localhost addresses without querying DNS servers by [`@​JulianVennen`](https://github.com/JulianVennen) in [netty/netty#16749](https://redirect.github.com/netty/netty/pull/16749)
> * IpFilter: Fix ClassCastException caused by IpSubnetFilter if only ipv6 rules are configured but remote peer is using ipv4 by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16803](https://redirect.github.com/netty/netty/pull/16803)
> * Fix memoryAddress() for direct ByteBuffers wrapped by Unpooled without Unsafe by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16788](https://redirect.github.com/netty/netty/pull/16788)
> * Route synchronous onLookupComplete exceptions via fireExceptionCaught by [`@​kwondh5217`](https://github.com/kwondh5217) in [netty/netty#16794](https://redirect.github.com/netty/netty/pull/16794)
> * IoUring: Stop generic FileRegion drain loop when transferred() reaches count() by [`@​LuciferYang`](https://github.com/LuciferYang) in [netty/netty#16826](https://redirect.github.com/netty/netty/pull/16826)
> * MQTT: Allow MQTT 5 CONNECT with password only by [`@​shblue21`](https://github.com/shblue21) in [netty/netty#16833](https://redirect.github.com/netty/netty/pull/16833)
> * Fix MQTT decoder size check after variable header replay by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16787](https://redirect.github.com/netty/netty/pull/16787)
>
> New Contributors
> ----------------
>
> * [`@​pandareen`](https://github.com/pandareen) made their first contribution in [netty/netty#16783](https://redirect.github.com/netty/netty/pull/16783)
> * [`@​zhangweikop`](https://github.com/zhangweikop) made their first contribution in [netty/netty#16523](https://redirect.github.com/netty/netty/pull/16523)
> * [`@​JulianVennen`](https://github.com/JulianVennen) made their first contribution in [netty/netty#16749](https://redirect.github.com/netty/netty/pull/16749)
> * [`@​kwondh5217`](https://github.com/kwondh5217) made their first contribution in [netty/netty#16794](https://redirect.github.com/netty/netty/pull/16794)
> * [`@​shblue21`](https://github.com/shblue21) made their first contribution in [netty/netty#16833](https://redirect.github.com/netty/netty/pull/16833)
>
> **Full Changelog**: <netty/netty@netty-4.2.13.Final...netty-4.2.14.Final>


Commits

* [`0a60b75`](netty/netty@0a60b75) [maven-release-plugin] prepare release netty-4.2.14.Final
* [`72df658`](netty/netty@72df658) Fix MQTT decoder size check after variable header replay ([#16787](https://redirect.github.com/netty/netty/issues/16787))
* [`7125dba`](netty/netty@7125dba) MQTT: Allow MQTT 5 CONNECT with password only ([#16833](https://redirect.github.com/netty/netty/issues/16833))
* [`9e19320`](netty/netty@9e19320) IoUring: Stop generic FileRegion drain loop when transferred() reaches count(...
* [`4ce9f17`](netty/netty@4ce9f17) Route synchronous onLookupComplete exceptions via fireExceptionCaught ([#16794](https://redirect.github.com/netty/netty/issues/16794))
* [`f7b1b7d`](netty/netty@f7b1b7d) Fix memoryAddress() for direct ByteBuffers wrapped by Unpooled without Unsafe...
* [`0ccb265`](netty/netty@0ccb265) IpFilter: Fix ClassCastException caused by IpSubnetFilter if only ipv6 rules ...
* [`a6aeb6d`](netty/netty@a6aeb6d) Resolve all localhost addresses without querying DNS servers ([#16749](https://redirect.github.com/netty/netty/issues/16749))
* [`c328ba2`](netty/netty@c328ba2) Fix ResumptionController wrapping ([#16815](https://redirect.github.com/netty/netty/issues/16815))
* [`bc5862b`](netty/netty@bc5862b) HTTP2: Use 100 as default max concurrent streams setting ([#16804](https://redirect.github.com/netty/netty/issues/16804))
* Additional commits viewable in [compare view](netty/netty@netty-4.2.13.Final...netty-4.2.14.Final)
  
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
mergify Bot added a commit to ArcadeData/arcadedb that referenced this pull request May 24, 2026
…l [skip ci]

Bumps [io.netty:netty-all](https://github.com/netty/netty) from 4.2.13.Final to 4.2.14.Final.
Release notes

*Sourced from [io.netty:netty-all's releases](https://github.com/netty/netty/releases).*

> netty-4.2.14.Final
> ------------------
>
> What's Changed
> --------------
>
> * HTTP: Fix revapi failure introduced by 84530fa81e12dcd1d42310bb20c1385cb44128d8 by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16748](https://redirect.github.com/netty/netty/pull/16748)
> * HTTP: Re-add constructor to HttpProxyHandler that was removed by mistake by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16747](https://redirect.github.com/netty/netty/pull/16747)
> * Marshalling: Explicit document security requirements by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16752](https://redirect.github.com/netty/netty/pull/16752)
> * Fix io\_uring op completion TRACE logging by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16755](https://redirect.github.com/netty/netty/pull/16755)
> * Quic: Ensure writes are done before notify close promise of QuicheQui… by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16758](https://redirect.github.com/netty/netty/pull/16758)
> * Avoid re-parsing openssl key material with non-cached provider by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16759](https://redirect.github.com/netty/netty/pull/16759)
> * Pin HTTP/RTSP version + method normalization to Locale.US by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16765](https://redirect.github.com/netty/netty/pull/16765)
> * Fill MsgHdrMemoryArray#hdrs with null entry on release by [`@​tsegismont`](https://github.com/tsegismont) in [netty/netty#16764](https://redirect.github.com/netty/netty/pull/16764)
> * Revapi: Use default "oldVersion" by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16774](https://redirect.github.com/netty/netty/pull/16774)
> * Adaptive: Fix concurrency issue in adaptive allocator by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16767](https://redirect.github.com/netty/netty/pull/16767)
> * Auto-port 4.2: Make bulk byte moving in ByteBuf faster by [`@​netty-project-bot`](https://github.com/netty-project-bot) in [netty/netty#16781](https://redirect.github.com/netty/netty/pull/16781)
> * Pin multipart Content-Type / Content-Transfer-Encoding case folding to Locale.US by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16768](https://redirect.github.com/netty/netty/pull/16768)
> * Remove dead native declarations by [`@​pandareen`](https://github.com/pandareen) in [netty/netty#16783](https://redirect.github.com/netty/netty/pull/16783)
> * Isolate tests that modify available Security providers by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16793](https://redirect.github.com/netty/netty/pull/16793)
> * Remove test annotations from a method that isn't a test by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16792](https://redirect.github.com/netty/netty/pull/16792)
> * Enable OpenSslCachingKeyMaterialProvider to evict stale entries after cert rotation by [`@​zhangweikop`](https://github.com/zhangweikop) in [netty/netty#16523](https://redirect.github.com/netty/netty/pull/16523)
> * IoUring: extend user data from short to long by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16682](https://redirect.github.com/netty/netty/pull/16682)
> * Revert CompositeByteBuf component search fast path by [`@​yawkat`](https://github.com/yawkat) in [netty/netty#16811](https://redirect.github.com/netty/netty/pull/16811)
> * HTTP2: Use 100 as default max concurrent streams setting by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16804](https://redirect.github.com/netty/netty/pull/16804)
> * Fix ResumptionController wrapping by [`@​chrisvest`](https://github.com/chrisvest) in [netty/netty#16815](https://redirect.github.com/netty/netty/pull/16815)
> * Resolve all localhost addresses without querying DNS servers by [`@​JulianVennen`](https://github.com/JulianVennen) in [netty/netty#16749](https://redirect.github.com/netty/netty/pull/16749)
> * IpFilter: Fix ClassCastException caused by IpSubnetFilter if only ipv6 rules are configured but remote peer is using ipv4 by [`@​normanmaurer`](https://github.com/normanmaurer) in [netty/netty#16803](https://redirect.github.com/netty/netty/pull/16803)
> * Fix memoryAddress() for direct ByteBuffers wrapped by Unpooled without Unsafe by [`@​dreamlike-ocean`](https://github.com/dreamlike-ocean) in [netty/netty#16788](https://redirect.github.com/netty/netty/pull/16788)
> * Route synchronous onLookupComplete exceptions via fireExceptionCaught by [`@​kwondh5217`](https://github.com/kwondh5217) in [netty/netty#16794](https://redirect.github.com/netty/netty/pull/16794)
> * IoUring: Stop generic FileRegion drain loop when transferred() reaches count() by [`@​LuciferYang`](https://github.com/LuciferYang) in [netty/netty#16826](https://redirect.github.com/netty/netty/pull/16826)
> * MQTT: Allow MQTT 5 CONNECT with password only by [`@​shblue21`](https://github.com/shblue21) in [netty/netty#16833](https://redirect.github.com/netty/netty/pull/16833)
> * Fix MQTT decoder size check after variable header replay by [`@​daguimu`](https://github.com/daguimu) in [netty/netty#16787](https://redirect.github.com/netty/netty/pull/16787)
>
> New Contributors
> ----------------
>
> * [`@​pandareen`](https://github.com/pandareen) made their first contribution in [netty/netty#16783](https://redirect.github.com/netty/netty/pull/16783)
> * [`@​zhangweikop`](https://github.com/zhangweikop) made their first contribution in [netty/netty#16523](https://redirect.github.com/netty/netty/pull/16523)
> * [`@​JulianVennen`](https://github.com/JulianVennen) made their first contribution in [netty/netty#16749](https://redirect.github.com/netty/netty/pull/16749)
> * [`@​kwondh5217`](https://github.com/kwondh5217) made their first contribution in [netty/netty#16794](https://redirect.github.com/netty/netty/pull/16794)
> * [`@​shblue21`](https://github.com/shblue21) made their first contribution in [netty/netty#16833](https://redirect.github.com/netty/netty/pull/16833)
>
> **Full Changelog**: <netty/netty@netty-4.2.13.Final...netty-4.2.14.Final>


Commits

* [`0a60b75`](netty/netty@0a60b75) [maven-release-plugin] prepare release netty-4.2.14.Final
* [`72df658`](netty/netty@72df658) Fix MQTT decoder size check after variable header replay ([#16787](https://redirect.github.com/netty/netty/issues/16787))
* [`7125dba`](netty/netty@7125dba) MQTT: Allow MQTT 5 CONNECT with password only ([#16833](https://redirect.github.com/netty/netty/issues/16833))
* [`9e19320`](netty/netty@9e19320) IoUring: Stop generic FileRegion drain loop when transferred() reaches count(...
* [`4ce9f17`](netty/netty@4ce9f17) Route synchronous onLookupComplete exceptions via fireExceptionCaught ([#16794](https://redirect.github.com/netty/netty/issues/16794))
* [`f7b1b7d`](netty/netty@f7b1b7d) Fix memoryAddress() for direct ByteBuffers wrapped by Unpooled without Unsafe...
* [`0ccb265`](netty/netty@0ccb265) IpFilter: Fix ClassCastException caused by IpSubnetFilter if only ipv6 rules ...
* [`a6aeb6d`](netty/netty@a6aeb6d) Resolve all localhost addresses without querying DNS servers ([#16749](https://redirect.github.com/netty/netty/issues/16749))
* [`c328ba2`](netty/netty@c328ba2) Fix ResumptionController wrapping ([#16815](https://redirect.github.com/netty/netty/issues/16815))
* [`bc5862b`](netty/netty@bc5862b) HTTP2: Use 100 as default max concurrent streams setting ([#16804](https://redirect.github.com/netty/netty/issues/16804))
* Additional commits viewable in [compare view](netty/netty@netty-4.2.13.Final...netty-4.2.14.Final)
  
[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility\_score?dependency-name=io.netty:netty-all&package-manager=maven&previous-version=4.2.13.Final&new-version=4.2.14.Final)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
Dependabot commands and options
  
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show  ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
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.

Proposal: extend user data from short to long

5 participants