Index: lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java,v diff -u -r1.4.2.6 -r1.4.2.7 --- lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java 15 Sep 2015 17:33:12 -0000 1.4.2.6 +++ lams_common/src/java/org/lamsfoundation/lams/gradebook/dao/hibernate/GradebookDAO.java 21 Nov 2015 00:22:59 -0000 1.4.2.7 @@ -600,7 +600,7 @@ .setLong("lessonId", lesson.getLessonId()).setParameterList("userIds", userIds).list(); return results; } - + @Override public List getGradebookUserLessons(List lessonIds) { final String GET_GRADEBOOK_LEARNER_LESSONS_BY_LESSON_LIST = "FROM GradebookUserLesson ul WHERE " Index: lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java =================================================================== RCS file: /usr/local/cvsroot/lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java,v diff -u -r1.36.2.8 -r1.36.2.9 --- lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 15 Sep 2015 17:36:02 -0000 1.36.2.8 +++ lams_gradebook/src/java/org/lamsfoundation/lams/gradebook/service/GradebookService.java 21 Nov 2015 00:23:02 -0000 1.36.2.9 @@ -458,8 +458,17 @@ gradebookUserLesson.setLesson(lesson); } - aggregateTotalMarkForLesson(gradebookUserLesson); + // In order to calculate lesson's mark correctly we need to flush the session beforehand. This is required + // as change to gradebookUserActivity isn't synchronized with the DB at this point due to the current transaction isn't + // committed yet + gradebookDAO.flush(); + // Calculates a lesson's total mark and saves it + Double totalMark = gradebookDAO.getGradebookUserActivityMarkSum(gradebookUserLesson.getLesson() + .getLessonId(), gradebookUserLesson.getLearner().getUserId()); + gradebookUserLesson.setMark(totalMark); + gradebookDAO.insertOrUpdate(gradebookUserLesson); + // audit log changed gradebook mark if (isAuditLogRequired) { UserDTO monitorUser = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); @@ -1225,18 +1234,6 @@ } /** - * Adds a mark to the aggregated total and saves it - * - * @param gradebookUserLesson - */ - private void aggregateTotalMarkForLesson(GradebookUserLesson gradebookUserLesson) { - Double totalMark = gradebookDAO.getGradebookUserActivityMarkSum(gradebookUserLesson.getLesson().getLessonId(), - gradebookUserLesson.getLearner().getUserId()); - gradebookUserLesson.setMark(totalMark); - gradebookDAO.insertOrUpdate(gradebookUserLesson); - } - - /** * Gets the GBActivityGridRowDTO fro a given activity and lesson * * @param activity