Fix Netty addListener instrumentation #10254
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
PR aims to address two issues with the Netty instrumentation.
The instrumentation of Netty's "addListeners" methods violates the method's contract, failing to check for null values in listeners. In contrast, the original Netty addListeners method omits the processing of listeners that are null. As the advice is executed before Netty addListener, a null pointer exception (NPE) may be encountered.
In cases where the listeners do not require wrapping, the addListeners advice may lose them. To address this issue, the pull request wraps all listeners that require wrapping and leaves those that do not (i.e., already wrapped listeners or Netty-provided listeners) as is.
Additional suggestions
It would be great to backport it to 1.32.x, as this issue breaks a lot of custom Netty-based code.