Index: lams_learning/src/java/org/lamsfoundation/lams/learning/presence/PresenceWebsocketServer.java =================================================================== diff -u -r46a6b303de1e91e5c85b68c538c42ba967205ecb -r8f7f72ca365234164199239c9432e22655bf0651 --- lams_learning/src/java/org/lamsfoundation/lams/learning/presence/PresenceWebsocketServer.java (.../PresenceWebsocketServer.java) (revision 46a6b303de1e91e5c85b68c538c42ba967205ecb) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/presence/PresenceWebsocketServer.java (.../PresenceWebsocketServer.java) (revision 8f7f72ca365234164199239c9432e22655bf0651) @@ -68,9 +68,9 @@ @Override public void run() { - // websocket communication bypasses standard HTTP filters, so Hibernate session needs to be initialised manually - HibernateSessionManager.openSession(); while (!stopFlag) { + // websocket communication bypasses standard HTTP filters, so Hibernate session needs to be initialised manually + HibernateSessionManager.openSession(); try { // synchronize websockets as a new Learner entering chat could modify this collection synchronized (PresenceWebsocketServer.websockets) { @@ -95,16 +95,19 @@ } } } - Thread.sleep(SendWorker.CHECK_INTERVAL); - } catch (InterruptedException e) { - PresenceWebsocketServer.log.warn("Stopping Presence Chat worker thread"); - stopFlag = true; } catch (Exception e) { // error caught, but carry on PresenceWebsocketServer.log.error("Error in Presence Chat worker thread", e); + } finally { + HibernateSessionManager.closeSession(); + try { + Thread.sleep(SendWorker.CHECK_INTERVAL); + } catch (InterruptedException e) { + log.warn("Stopping Presence Chat worker thread"); + stopFlag = true; + } } } - HibernateSessionManager.closeSession(); } /**