diff --git a/backend/src/main/java/com/qqchen/deploy/backend/deploy/strategy/log/K8sLogStreamStrategy.java b/backend/src/main/java/com/qqchen/deploy/backend/deploy/strategy/log/K8sLogStreamStrategy.java index b9355467..ec4b6014 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/deploy/strategy/log/K8sLogStreamStrategy.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/deploy/strategy/log/K8sLogStreamStrategy.java @@ -21,12 +21,17 @@ import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.time.Instant; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicLong; import java.util.function.Supplier; /** * K8S日志流策略 * + *

⚠️ 重要:OkHttp Response必须显式关闭,否则会导致连接泄漏! + *

当用户关闭WebSocket时,需要同时关闭Response,而不仅仅是cancel Call。 + * * @author qqchen * @since 2025-12-16 */ @@ -36,6 +41,12 @@ public class K8sLogStreamStrategy extends AbstractLogStreamStrategy用于在stop/cleanup时显式关闭Response,避免OkHttp连接泄漏 + */ + private final Map responseCache = new ConcurrentHashMap<>(); + @Resource private IK8sServiceIntegration k8sServiceIntegration; @@ -106,7 +117,13 @@ public class K8sLogStreamStrategy extends AbstractLogStreamStrategy