You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2022/10/19 10:30:31 UTC
[myfaces] branch 2.3-next updated: MYFACES-4445: websockets refactoring - close sessionScope fix (#347)
This is an automated email from the ASF dual-hosted git repository.
tandraschko pushed a commit to branch 2.3-next
in repository https://gitbox.apache.org/repos/asf/myfaces.git
The following commit(s) were added to refs/heads/2.3-next by this push:
new cfe0454e9 MYFACES-4445: websockets refactoring - close sessionScope fix (#347)
cfe0454e9 is described below
commit cfe0454e9d4bcb95365d7ad553544c65e6c3d001
Author: Milan Siebenbürger <mi...@gmail.com>
AuthorDate: Wed Oct 19 12:30:27 2022 +0200
MYFACES-4445: websockets refactoring - close sessionScope fix (#347)
- only websockets created attached to session scope are removed (not application scope)
Co-authored-by: siebenburger <mi...@aura.cz>
---
.../java/org/apache/myfaces/push/cdi/WebsocketScopeManager.java | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketScopeManager.java b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketScopeManager.java
index 06cd6b41c..98d2fa7fe 100644
--- a/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketScopeManager.java
+++ b/impl/src/main/java/org/apache/myfaces/push/cdi/WebsocketScopeManager.java
@@ -103,10 +103,13 @@ public class WebsocketScopeManager
// When current session scope is about to be destroyed, deregister all session scope channels and
// explicitly close any open web sockets associated with it to avoid stale websockets.
// If any, also deregister session users.
- for (String token : tokens.keySet())
+ for (Map.Entry<String, WebsocketChannelMetadata> entry : tokens.entrySet())
{
- // remove channelToken
- sessionManager.removeChannelToken(token);
+ // remove channelToken - only if it is session scope
+ if (WebsocketScopeManager.SCOPE_SESSION.equals(entry.getValue().getScope()))
+ {
+ sessionManager.removeChannelToken(entry.getKey());
+ }
}
// we dont need to destroy child sockets ("view")