| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
|
This looks like it should do the trick! Thanks for the quick reply! |
Sorry, something went wrong.
…2176) Motivation NettyConnectListener.onSuccess NPEs on timeoutsHolder.setResolvedRemoteAddress(...) when a request timeout fires concurrently with a successful connect: abort() calls cancelTimeouts() (nulls the holder) before setting isDone, and per JMM the IO thread can observe holder==null while isDone==0. PR #2127 only guarded the remoteAddress parameter, not the holder. Modification - Add null guard on timeoutsHolder in onSuccess — close the channel and bail out if the holder was nulled out concurrently. - Broaden futureIsAlreadyCancelled → futureIsAlreadyCompleted (isCancelled() → isDone()) so aborted futures don't slip past the early-out (abort()/done() set isDone, not isCancelled). - Release the partition-key lock on both early-exit paths. - Add NettyConnectListenerTest reproducing the exact NPE from the bug report. Fixes #2172
| Back | FazBrowse Home | New Git URL |
Motivation
NettyConnectListener.onSuccess NPEs on timeoutsHolder.setResolvedRemoteAddress(...) when a request timeout fires concurrently with a successful connect: abort() calls cancelTimeouts() (nulls the holder) before setting isDone, and per JMM the IO thread can observe holder==null while isDone==0. PR #2127 only guarded the remoteAddress parameter, not the holder.
Modification
Fixes
#2172