Martin Tzvetanov Grigorov created WICKET-6965: -------------------------------------------------
Summary: Memory leak in WicketEndpoint Key: WICKET-6965 URL: https://issues.apache.org/jira/browse/WICKET-6965 Project: Wicket Issue Type: Bug Components: wicket-native-websocket Affects Versions: 9.7.0 Reporter: Thomas Heigl Assignee: Martin Tzvetanov Grigorov Fix For: 10.0.0, 8.14.0, 9.8.0 Attachments: image-2022-01-10-18-52-42-193.png, image-2022-03-21-16-27-37-798.png Our application OOMed yesterday after about 2-3 weeks of continuous uptime. We normally deploy every other day, so we never noticed this issue before. The heap dump identified the possible culprit as {{{}WicketEndpoint$ApplicationListener{}}}: !image-2022-01-10-18-52-42-193.png! Every new websocket connection registers a new instance of this application listener and after a while we ended up with millions of these listeners: {code:java} @Override public void onOpen(Session session, EndpointConfig endpointConfig) { String appName = getApplicationName(session); WebApplication app = (WebApplication) WebApplication.get(appName); app.getApplicationListeners().add(new ApplicationListener(applicationDestroyed)); try { ThreadContext.setApplication(app); javaxWebSocketProcessor = new JavaxWebSocketProcessor(session, app, endpointConfig); } finally { ThreadContext.detach(); } } {code} Instead of creating a new listener for every connection, the listener should be a singleton. -- This message was sent by Atlassian Jira (v8.20.1#820001)