Index: lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java,v diff -u -r1.61 -r1.62 --- lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java 10 Aug 2015 14:07:17 -0000 1.61 +++ lams_tool_scratchie/src/java/org/lamsfoundation/lams/tool/scratchie/service/ScratchieServiceImpl.java 14 Aug 2015 08:26:31 -0000 1.62 @@ -182,11 +182,15 @@ @Override public void createUser(ScratchieUser scratchieUser) { - ScratchieUser existingUser = getUserByIDAndSession(scratchieUser.getUserId(), + ScratchieUser user = getUserByIDAndSession(scratchieUser.getUserId(), scratchieUser.getSession().getSessionId()); - if (existingUser == null) { - scratchieUserDao.saveObject(scratchieUser); + if (user == null) { + user = scratchieUser; } + // Save it no matter if the user already exists. + // At checkLeaderSelectToolForSessionLeader() the user is added to session. + // Sometimes session save is earlier that user save in another thread, leading to an exception. + scratchieUserDao.saveObject(user); } @Override