From b98a8832115324d3ce65aef7887b6dc1d08dbf79 Mon Sep 17 00:00:00 2001 From: croquette Date: Wed, 26 May 2021 10:58:29 +0200 Subject: [PATCH] fix: memory leak when using reactive subscriptions with keepalive --- .../webflux/ReactiveWebSocketSubscriptionSession.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/graphql-kickstart-spring-webflux/src/main/java/graphql/kickstart/spring/webflux/ReactiveWebSocketSubscriptionSession.java b/graphql-kickstart-spring-webflux/src/main/java/graphql/kickstart/spring/webflux/ReactiveWebSocketSubscriptionSession.java index ba97408d..aab7b8eb 100644 --- a/graphql-kickstart-spring-webflux/src/main/java/graphql/kickstart/spring/webflux/ReactiveWebSocketSubscriptionSession.java +++ b/graphql-kickstart-spring-webflux/src/main/java/graphql/kickstart/spring/webflux/ReactiveWebSocketSubscriptionSession.java @@ -8,6 +8,7 @@ public class ReactiveWebSocketSubscriptionSession extends DefaultSubscriptionSession { private final WebSocketSession webSocketSession; + private boolean opened = true; public ReactiveWebSocketSubscriptionSession( GraphQLSubscriptionMapper mapper, WebSocketSession webSocketSession) { @@ -17,7 +18,7 @@ public ReactiveWebSocketSubscriptionSession( @Override public boolean isOpen() { - return true; + return opened; } @Override @@ -34,4 +35,10 @@ public String getId() { public WebSocketSession unwrap() { return webSocketSession; } + + @Override + public void close(final String reason) { + super.close(reason); + this.opened = false; + } }