LDEV-4187: Delegate non-HTTP-request tasks to own threads. Open and close Hibernate session for each of such thread. Bind created session to context and thread. Close session at the end of thread execution.
LDEV-4187: Synchronise completeActivity() method again. Do not pull LearnerProgress from DB as the same object seems to be fetched fron cache anyway. Add extra logs for attempted->completed activity transition.
LDEV-3292: Get rid of learner progress object juggling when compling an activity. It looked like there were several objects but all changes were done on the same one. It could also lead to two objects referencing the same row in DB which resulted in an exception while saving.
LDEV-3971: Remove pointless synchronisation from Java methods. It would not work in multi-node environment anyway. Focus on DB transactions. General clean up and formatting.
LDEV-3765: Add command websockets in all tools. Run check less often (5s vs 2s) as the effect does not need to be immediate. Reorganise code. Add i18n support.