This is an automated email from the ASF dual-hosted git repository. reta pushed a commit to branch 4.0.x-fixes in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 63653f0ed7cd2a2578dfd6cc3cad08323957dd55 Author: Eric Giese <[email protected]> AuthorDate: Tue Jun 17 19:01:18 2025 +0200 CXF-9146 Fix MemoryLeak in HttpClientHttpConduit (#2467) * CXF-9146 if the wrappedStream corresponds to pout then it should be nulled as well. this fixes a memoryleak caused when pout is a PipedOutputStream, as the pipe holds a strong reference to the client thread which must be nulled to avoid MemoryLeaks in class like ThreadLocalClientState, which utilizes the same thread as a key for weakhashmap which in turn points to this very outputstream. this means that the thread is both the key and within the value of an entry of the weakhashamp, [...] * CXF-9146 both the cachedStream and the wrappedOutputStream references are cleared after closing them (cherry picked from commit 097b0a7c2cfc0743c05e66d92cb7bc988d618495) --- core/src/main/java/org/apache/cxf/io/AbstractWrappedOutputStream.java | 1 + .../http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java | 1 + 2 files changed, 2 insertions(+) diff --git a/core/src/main/java/org/apache/cxf/io/AbstractWrappedOutputStream.java b/core/src/main/java/org/apache/cxf/io/AbstractWrappedOutputStream.java index 084f624bb6..c962faf2c6 100644 --- a/core/src/main/java/org/apache/cxf/io/AbstractWrappedOutputStream.java +++ b/core/src/main/java/org/apache/cxf/io/AbstractWrappedOutputStream.java @@ -75,6 +75,7 @@ public abstract class AbstractWrappedOutputStream extends OutputStream { public void close() throws IOException { if (wrappedStream != null) { wrappedStream.close(); + wrappedStream = null; } } diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java index 8979b52f3a..7b185d5931 100644 --- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java +++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java @@ -1421,6 +1421,7 @@ public abstract class HTTPConduit } finally { if (cachingForRetransmission && cachedStream != null) { cachedStream.close(); + cachedStream = null; } } } catch (HttpRetryException e) {
