Index: lams_learning/src/java/org/lamsfoundation/lams/learning/presence/PresenceWebsocketServer.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/presence/Attic/PresenceWebsocketServer.java,v diff -u -r1.1.2.7 -r1.1.2.8 --- lams_learning/src/java/org/lamsfoundation/lams/learning/presence/PresenceWebsocketServer.java 8 Jan 2017 16:42:59 -0000 1.1.2.7 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/presence/PresenceWebsocketServer.java 17 Jan 2017 13:19:37 -0000 1.1.2.8 @@ -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(); } /**