Index: lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java =================================================================== diff -u -r563e90bc56ef37e24ad9cdc801e3fe6350e19932 -rc7b64c1297f46800d132a6db434955b3a75ff34b --- lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java (.../SessionManager.java) (revision 563e90bc56ef37e24ad9cdc801e3fe6350e19932) +++ lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java (.../SessionManager.java) (revision c7b64c1297f46800d132a6db434955b3a75ff34b) @@ -41,6 +41,7 @@ import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.DateUtil; import org.lamsfoundation.lams.web.util.AttributeNames; +import org.springframework.http.MediaType; public class SessionManager { private static Logger log = Logger.getLogger(SessionManager.class); @@ -90,6 +91,13 @@ HttpSession existingSession = loginMapping.get(login); // check if it's a different session and if so, which one is newer if (existingSession != null && !existingSession.getId().equals(sessionId)) { + String acceptHeader = request.getHeader("Accept"); + if (MediaType.TEXT_EVENT_STREAM_VALUE.equals(acceptHeader)) { + throw new IllegalArgumentException( + "When fetching Event Stream data error while trying to use session ID \"" + sessionId + + "\" when another one is in use \"" + existingSession.getId() + "\""); + } + try { // invalidate the other session existingSession.invalidate(); Index: lams_common/src/java/org/lamsfoundation/lams/web/session/SystemSessionFilter.java =================================================================== diff -u -r563e90bc56ef37e24ad9cdc801e3fe6350e19932 -rc7b64c1297f46800d132a6db434955b3a75ff34b --- lams_common/src/java/org/lamsfoundation/lams/web/session/SystemSessionFilter.java (.../SystemSessionFilter.java) (revision 563e90bc56ef37e24ad9cdc801e3fe6350e19932) +++ lams_common/src/java/org/lamsfoundation/lams/web/session/SystemSessionFilter.java (.../SystemSessionFilter.java) (revision c7b64c1297f46800d132a6db434955b3a75ff34b) @@ -69,13 +69,14 @@ chain.doFilter(request, response); return; } - - HttpSession session = SessionManager.startSession(httpRequest); - // do following part of chain + + HttpSession session = null; try { + session = SessionManager.startSession(httpRequest); + // do following part of chain chain.doFilter(request, response); } catch (NestedServletException e) { - if (e.getCause() instanceof IllegalStateException) { + if (e.getCause() instanceof IllegalStateException && session != null) { // There seems to be a problem with Infinispan session invalidation. // Until we upgrade WildFly we need to keep these safety measures. String sessionId = session.getId(); @@ -84,6 +85,8 @@ } else { throw e; } + } catch (IllegalArgumentException e) { + log.warn("Error while creating session: " + e.getMessage()); } finally { SessionManager.endSession(); }