You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2022/01/11 12:23:49 UTC
[wicket] branch wicket-8.x updated: WICKET-6944 Memory leak in WicketEndpoint
This is an automated email from the ASF dual-hosted git repository.
mgrigorov pushed a commit to branch wicket-8.x
in repository https://gitbox.apache.org/repos/asf/wicket.git
The following commit(s) were added to refs/heads/wicket-8.x by this push:
new 6e6d2e9 WICKET-6944 Memory leak in WicketEndpoint
6e6d2e9 is described below
commit 6e6d2e96c06765a534abd8199fed8fcdf2a0b7a0
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Tue Jan 11 14:21:34 2022 +0200
WICKET-6944 Memory leak in WicketEndpoint
Register application listener only once per Application
Signed-off-by: Martin Tzvetanov Grigorov <mg...@apache.org>
(cherry picked from commit 9806e8b1b565f0b680c53df0177e8703c05b4b6a)
---
.../java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java b/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
index 0636831..90bdb51 100644
--- a/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
+++ b/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketEndpoint.java
@@ -20,6 +20,8 @@ import java.io.EOFException;
import java.io.IOException;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.websocket.CloseReason;
@@ -49,6 +51,7 @@ public class WicketEndpoint extends Endpoint
private static final String WICKET_APP_PARAM_NAME = "wicket-app-name";
private final AtomicBoolean applicationDestroyed = new AtomicBoolean(false);
+ private final Set<String> registeredListeners = ConcurrentHashMap.newKeySet();
private JavaxWebSocketProcessor javaxWebSocketProcessor;
@@ -58,7 +61,10 @@ public class WicketEndpoint extends Endpoint
String appName = getApplicationName(session);
WebApplication app = (WebApplication) WebApplication.get(appName);
- app.getApplicationListeners().add(new ApplicationListener(applicationDestroyed));
+ if (registeredListeners.add(appName))
+ {
+ app.getApplicationListeners().add(new ApplicationListener(applicationDestroyed));
+ }
try
{