Adjust operators to dereference resources after cleanup, enabling them for garbage collection #4035
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.
Fixes: #3199
This change addresses a memory leak in the
Mono#using
,Flux#using
, andFlux#usingWhen
operators. Currently, their internal subscribers retain a strong reference to the managed resource even after theresourceCleanup
action has been executed. This prevents the resource from being garbage collected, leading to potential memory issues.Also, the issue mentions an example of
Flux#fromIterable
, which is in combination withFlux#using
.The
Flux#using
operator is designed for "one-time" use of a resource per subscriber correct?The
Flux#fromIterable
is resubscribable which removing the reference to the iterable, changes the design of the operator.Let me know your thoughts on this approach. I'm happy to make any changes needed.