From 8c6001e2049f71a233eec650f7a696e6e8d33d23 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Fri, 27 Sep 2019 15:17:09 +0200
Subject: [PATCH] no-jira: make sure most of jobs don't work in parallel with
 them self

---
 .../admin/registration/SystemRegistrationJob.java    |  2 ++
 .../org/olat/commons/calendar/ImportCalendarJob.java |  7 ++++++-
 .../commons/services/csp/manager/CSPLogCleanup.java  |  2 ++
 .../wopi/manager/WopiDeleteExpiredAccessJob.java     |  2 ++
 .../notifications/manager/EmailNotificationJob.java  |  2 ++
 .../core/commons/services/scheduler/DummyJob.java    |  9 ++++++---
 .../core/commons/services/scheduler/JobWithDB.java   |  3 ++-
 .../services/taskexecutor/manager/ExecutorJob.java   |  4 ++++
 .../mapper/manager/MapperZombieSlayerJob.java        |  2 ++
 .../manager/AssessmentModeNotificationJob.java       |  2 ++
 .../olat/course/statistic/UpdateStatisticsJob.java   | 12 +++++++-----
 .../java/org/olat/ldap/LDAPUserSynchronizerJob.java  | 10 +++++++---
 .../adobeconnect/manager/AdobeConnectCleanupJob.java |  2 ++
 .../modules/gotomeeting/manager/GoToRefreshJob.java  |  2 ++
 .../lecture/manager/AutoCloseLecturesJob.java        |  2 ++
 .../modules/lecture/manager/ReminderLecturesJob.java |  2 ++
 .../org/olat/modules/quality/manager/QualityJob.java |  2 ++
 .../olat/modules/reminder/manager/ReminderJob.java   |  2 ++
 .../modules/video/manager/VideoTranscodingJob.java   |  6 +++++-
 .../vitero/manager/ViteroZombieSlayerJob.java        |  2 ++
 .../org/olat/portfolio/manager/EPDeadlineJob.java    | 11 ++++++++---
 .../olat/portfolio/manager/InvitationCleanupJob.java | 10 +++++++---
 .../olat/registration/TemporaryKeysCleanUpJob.java   |  2 ++
 .../repository/manager/AutomaticLifecycleJob.java    |  2 ++
 .../accesscontrol/manager/ReservationsJob.java       |  2 ++
 .../java/org/olat/restapi/security/RestTokenJob.java |  9 ++++++---
 .../java/org/olat/restapi/system/ProcSamplerJob.java |  2 ++
 .../java/org/olat/restapi/system/SamplerJob.java     |  2 ++
 .../search/service/indexer/SearchIndexingJob.java    | 10 ++++++----
 .../olat/user/manager/UserDataExportCleanJob.java    |  2 ++
 30 files changed, 102 insertions(+), 27 deletions(-)

diff --git a/src/main/java/org/olat/admin/registration/SystemRegistrationJob.java b/src/main/java/org/olat/admin/registration/SystemRegistrationJob.java
index 3f412c2b285..95d4b08171c 100644
--- a/src/main/java/org/olat/admin/registration/SystemRegistrationJob.java
+++ b/src/main/java/org/olat/admin/registration/SystemRegistrationJob.java
@@ -26,6 +26,7 @@ package org.olat.admin.registration;
 
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -39,6 +40,7 @@ import org.quartz.JobExecutionException;
  * 
  * @author gnaegi
  */
+@DisallowConcurrentExecution
 public class SystemRegistrationJob extends JobWithDB {
 
 	/**
diff --git a/src/main/java/org/olat/commons/calendar/ImportCalendarJob.java b/src/main/java/org/olat/commons/calendar/ImportCalendarJob.java
index 8e6f2527213..4210b2b7e8a 100644
--- a/src/main/java/org/olat/commons/calendar/ImportCalendarJob.java
+++ b/src/main/java/org/olat/commons/calendar/ImportCalendarJob.java
@@ -27,9 +27,12 @@ package org.olat.commons.calendar;
 
 import java.util.Random;
 
+import org.apache.logging.log4j.Logger;
 import org.olat.commons.calendar.manager.ImportToCalendarManager;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.olat.core.logging.Tracing;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 
 /**
@@ -40,8 +43,10 @@ import org.quartz.JobExecutionContext;
  * Initial Date:  21 feb. 2011 <br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  */
+@DisallowConcurrentExecution
 public class ImportCalendarJob extends JobWithDB {
-	
+
+	private static final Logger log = Tracing.createLoggerFor(ImportCalendarJob.class);
 	private static final Random random = new Random();
 	
 	@Override
diff --git a/src/main/java/org/olat/core/commons/services/csp/manager/CSPLogCleanup.java b/src/main/java/org/olat/core/commons/services/csp/manager/CSPLogCleanup.java
index b25bf21f9e0..a4f35797e88 100644
--- a/src/main/java/org/olat/core/commons/services/csp/manager/CSPLogCleanup.java
+++ b/src/main/java/org/olat/core/commons/services/csp/manager/CSPLogCleanup.java
@@ -22,6 +22,7 @@ package org.olat.core.commons.services.csp.manager;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.csp.CSPManager;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -31,6 +32,7 @@ import org.quartz.JobExecutionException;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class CSPLogCleanup extends JobWithDB {
 
 	@Override
diff --git a/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiDeleteExpiredAccessJob.java b/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiDeleteExpiredAccessJob.java
index 3442efcab10..71b9a22a0d7 100644
--- a/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiDeleteExpiredAccessJob.java
+++ b/src/main/java/org/olat/core/commons/services/doceditor/wopi/manager/WopiDeleteExpiredAccessJob.java
@@ -23,6 +23,7 @@ import java.util.Date;
 
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -32,6 +33,7 @@ import org.quartz.JobExecutionException;
  * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class WopiDeleteExpiredAccessJob extends JobWithDB {
 
 	@Override
diff --git a/src/main/java/org/olat/core/commons/services/notifications/manager/EmailNotificationJob.java b/src/main/java/org/olat/core/commons/services/notifications/manager/EmailNotificationJob.java
index 0b6bf3904cd..f45971a9603 100644
--- a/src/main/java/org/olat/core/commons/services/notifications/manager/EmailNotificationJob.java
+++ b/src/main/java/org/olat/core/commons/services/notifications/manager/EmailNotificationJob.java
@@ -26,6 +26,7 @@ package org.olat.core.commons.services.notifications.manager;
 
 import org.olat.core.commons.services.notifications.NotificationsManager;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -37,6 +38,7 @@ import org.quartz.JobExecutionException;
  * Initial Date:  09.09.2008 <br>
  * @author guido
  */
+@DisallowConcurrentExecution
 public class EmailNotificationJob extends JobWithDB {
 
 	
diff --git a/src/main/java/org/olat/core/commons/services/scheduler/DummyJob.java b/src/main/java/org/olat/core/commons/services/scheduler/DummyJob.java
index 86f4df9edba..bb4fd926dcc 100644
--- a/src/main/java/org/olat/core/commons/services/scheduler/DummyJob.java
+++ b/src/main/java/org/olat/core/commons/services/scheduler/DummyJob.java
@@ -24,6 +24,9 @@
 */
 package org.olat.core.commons.services.scheduler;
 
+import org.apache.logging.log4j.Logger;
+import org.olat.core.logging.Tracing;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -36,11 +39,11 @@ import org.quartz.JobExecutionException;
  * Initial Date:  09.09.2008 <br>
  * @author guido
  */
+@DisallowConcurrentExecution
 public class DummyJob extends JobWithDB {
+	
+	private static final Logger log = Tracing.createLoggerFor(DummyJob.class);
 
-	/**
-	 * @see org.springframework.scheduling.quartz.QuartzJobBean#executeInternal(org.quartz.JobExecutionContext)
-	 */
 	@Override
 	public void executeWithDB(JobExecutionContext arg0)
 	throws JobExecutionException {
diff --git a/src/main/java/org/olat/core/commons/services/scheduler/JobWithDB.java b/src/main/java/org/olat/core/commons/services/scheduler/JobWithDB.java
index 2e1c4f8bdfa..7a8f6750a8c 100644
--- a/src/main/java/org/olat/core/commons/services/scheduler/JobWithDB.java
+++ b/src/main/java/org/olat/core/commons/services/scheduler/JobWithDB.java
@@ -46,7 +46,7 @@ import org.springframework.scheduling.quartz.QuartzJobBean;
  */
 public abstract class JobWithDB extends QuartzJobBean {
 	// A logger instantiated for the immplementing class of this abstract class
-	protected final Logger log = Tracing.createLoggerFor(this.getClass());
+	private static final Logger log = Tracing.createLoggerFor(JobWithDB.class);
 	
 	@Override
 	protected final void executeInternal(JobExecutionContext arg0)
@@ -61,6 +61,7 @@ public abstract class JobWithDB extends QuartzJobBean {
 			success = true;
 		} catch(JobExecutionException e) {
 			// for documentation purpose only
+			log.error("", e);
 			throw e;
 		} finally {
 			//clean up logging
diff --git a/src/main/java/org/olat/core/commons/services/taskexecutor/manager/ExecutorJob.java b/src/main/java/org/olat/core/commons/services/taskexecutor/manager/ExecutorJob.java
index 8c869c21f6a..e40dc4a191b 100644
--- a/src/main/java/org/olat/core/commons/services/taskexecutor/manager/ExecutorJob.java
+++ b/src/main/java/org/olat/core/commons/services/taskexecutor/manager/ExecutorJob.java
@@ -19,8 +19,10 @@
  */
 package org.olat.core.commons.services.taskexecutor.manager;
 
+import org.apache.logging.log4j.Logger;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.olat.core.logging.Tracing;
 import org.quartz.JobExecutionContext;
 
 /**
@@ -32,6 +34,8 @@ import org.quartz.JobExecutionContext;
  *
  */
 public class ExecutorJob extends JobWithDB {
+
+	private static final Logger log = Tracing.createLoggerFor(ExecutorJob.class);
 	
 	@Override
 	public void executeWithDB(JobExecutionContext context) {
diff --git a/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperZombieSlayerJob.java b/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperZombieSlayerJob.java
index cbb9b529ff0..4387d4174a0 100644
--- a/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperZombieSlayerJob.java
+++ b/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperZombieSlayerJob.java
@@ -22,6 +22,7 @@ package org.olat.core.dispatcher.mapper.manager;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.core.dispatcher.mapper.MapperService;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 
 /**
@@ -29,6 +30,7 @@ import org.quartz.JobExecutionContext;
  * 
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  */
+@DisallowConcurrentExecution
 public class MapperZombieSlayerJob extends JobWithDB  {
 
 	@Override
diff --git a/src/main/java/org/olat/course/assessment/manager/AssessmentModeNotificationJob.java b/src/main/java/org/olat/course/assessment/manager/AssessmentModeNotificationJob.java
index a7c68552292..bff1ff07ec5 100644
--- a/src/main/java/org/olat/course/assessment/manager/AssessmentModeNotificationJob.java
+++ b/src/main/java/org/olat/course/assessment/manager/AssessmentModeNotificationJob.java
@@ -23,6 +23,7 @@ import org.apache.logging.log4j.Logger;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.core.logging.Tracing;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -32,6 +33,7 @@ import org.quartz.JobExecutionException;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class AssessmentModeNotificationJob extends JobWithDB {
 	
 	private static final Logger logger = Tracing.createLoggerFor(AssessmentModeNotificationJob.class);
diff --git a/src/main/java/org/olat/course/statistic/UpdateStatisticsJob.java b/src/main/java/org/olat/course/statistic/UpdateStatisticsJob.java
index 259032d0e78..c13687b2f96 100644
--- a/src/main/java/org/olat/course/statistic/UpdateStatisticsJob.java
+++ b/src/main/java/org/olat/course/statistic/UpdateStatisticsJob.java
@@ -26,8 +26,11 @@ package org.olat.course.statistic;
 
 import java.util.Random;
 
+import org.apache.logging.log4j.Logger;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.olat.core.logging.Tracing;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -37,15 +40,14 @@ import org.quartz.JobExecutionException;
  * Initial Date:  12.02.2010 <br>
  * @author Stefan
  */
+@DisallowConcurrentExecution
 public class UpdateStatisticsJob extends JobWithDB {
+	
+	private static final Logger log = Tracing.createLoggerFor(UpdateStatisticsJob.class);
 
 	/** the logging object used in this class **/
 	private final Random random = new Random();
-	
-	/**
-	 * 
-	 * @see org.olat.core.commons.services.scheduler.JobWithDB#executeWithDB(org.quartz.JobExecutionContext)
-	 */
+
 	@Override
 	public void executeWithDB(JobExecutionContext arg0) throws JobExecutionException {
 		jitter();// wait 0 - 60 seconds
diff --git a/src/main/java/org/olat/ldap/LDAPUserSynchronizerJob.java b/src/main/java/org/olat/ldap/LDAPUserSynchronizerJob.java
index 978075c96b6..9b2204140e7 100644
--- a/src/main/java/org/olat/ldap/LDAPUserSynchronizerJob.java
+++ b/src/main/java/org/olat/ldap/LDAPUserSynchronizerJob.java
@@ -19,8 +19,11 @@
  */
 package org.olat.ldap;
 
+import org.apache.logging.log4j.Logger;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.olat.core.logging.Tracing;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -33,11 +36,12 @@ import org.quartz.JobExecutionException;
  * 
  * @author gnaegi
  */
+@DisallowConcurrentExecution
 public class LDAPUserSynchronizerJob extends JobWithDB {
 
-	/**
-	 * @see org.olat.core.commons.services.scheduler.JobWithDB#executeWithDB(org.quartz.JobExecutionContext)
-	 */
+	private static final Logger log = Tracing.createLoggerFor(LDAPUserSynchronizerJob.class);
+
+	@Override
 	public void executeWithDB(JobExecutionContext arg0)
 	throws JobExecutionException {
 		try {
diff --git a/src/main/java/org/olat/modules/adobeconnect/manager/AdobeConnectCleanupJob.java b/src/main/java/org/olat/modules/adobeconnect/manager/AdobeConnectCleanupJob.java
index f98bec75955..cd8995749d5 100644
--- a/src/main/java/org/olat/modules/adobeconnect/manager/AdobeConnectCleanupJob.java
+++ b/src/main/java/org/olat/modules/adobeconnect/manager/AdobeConnectCleanupJob.java
@@ -31,6 +31,7 @@ import org.olat.modules.adobeconnect.AdobeConnectManager;
 import org.olat.modules.adobeconnect.AdobeConnectMeeting;
 import org.olat.modules.adobeconnect.AdobeConnectModule;
 import org.olat.modules.adobeconnect.model.AdobeConnectErrors;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -40,6 +41,7 @@ import org.quartz.JobExecutionException;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class AdobeConnectCleanupJob extends JobWithDB {
 	
 	private static final Logger log = Tracing.createLoggerFor(AdobeConnectCleanupJob.class);
diff --git a/src/main/java/org/olat/modules/gotomeeting/manager/GoToRefreshJob.java b/src/main/java/org/olat/modules/gotomeeting/manager/GoToRefreshJob.java
index 43d7c2de47d..f4a52438543 100644
--- a/src/main/java/org/olat/modules/gotomeeting/manager/GoToRefreshJob.java
+++ b/src/main/java/org/olat/modules/gotomeeting/manager/GoToRefreshJob.java
@@ -29,6 +29,7 @@ import org.olat.core.util.StringHelper;
 import org.olat.modules.gotomeeting.GoToMeetingManager;
 import org.olat.modules.gotomeeting.GoToMeetingModule;
 import org.olat.modules.gotomeeting.GoToOrganizer;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -38,6 +39,7 @@ import org.quartz.JobExecutionException;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class GoToRefreshJob extends JobWithDB {
 
 	@Override
diff --git a/src/main/java/org/olat/modules/lecture/manager/AutoCloseLecturesJob.java b/src/main/java/org/olat/modules/lecture/manager/AutoCloseLecturesJob.java
index 47aaad5a9cb..e1038e3640d 100644
--- a/src/main/java/org/olat/modules/lecture/manager/AutoCloseLecturesJob.java
+++ b/src/main/java/org/olat/modules/lecture/manager/AutoCloseLecturesJob.java
@@ -23,6 +23,7 @@ import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.modules.lecture.LectureModule;
 import org.olat.modules.lecture.LectureService;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -32,6 +33,7 @@ import org.quartz.JobExecutionException;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class AutoCloseLecturesJob extends JobWithDB {
 
 	@Override
diff --git a/src/main/java/org/olat/modules/lecture/manager/ReminderLecturesJob.java b/src/main/java/org/olat/modules/lecture/manager/ReminderLecturesJob.java
index d5e323a1e02..0889118c186 100644
--- a/src/main/java/org/olat/modules/lecture/manager/ReminderLecturesJob.java
+++ b/src/main/java/org/olat/modules/lecture/manager/ReminderLecturesJob.java
@@ -22,6 +22,7 @@ package org.olat.modules.lecture.manager;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.modules.lecture.LectureService;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -32,6 +33,7 @@ import org.quartz.JobExecutionException;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class ReminderLecturesJob extends JobWithDB {
 
 	@Override
diff --git a/src/main/java/org/olat/modules/quality/manager/QualityJob.java b/src/main/java/org/olat/modules/quality/manager/QualityJob.java
index f258179eb3a..bb07d216c09 100644
--- a/src/main/java/org/olat/modules/quality/manager/QualityJob.java
+++ b/src/main/java/org/olat/modules/quality/manager/QualityJob.java
@@ -27,6 +27,7 @@ import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.modules.quality.QualityModule;
 import org.olat.modules.quality.QualityService;
 import org.olat.modules.quality.generator.QualityGeneratorService;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -36,6 +37,7 @@ import org.quartz.JobExecutionException;
  * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class QualityJob extends JobWithDB {
 
 	@Override
diff --git a/src/main/java/org/olat/modules/reminder/manager/ReminderJob.java b/src/main/java/org/olat/modules/reminder/manager/ReminderJob.java
index dd571cce684..77f5ea07987 100644
--- a/src/main/java/org/olat/modules/reminder/manager/ReminderJob.java
+++ b/src/main/java/org/olat/modules/reminder/manager/ReminderJob.java
@@ -23,6 +23,7 @@ import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.modules.reminder.ReminderModule;
 import org.olat.modules.reminder.ReminderService;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -32,6 +33,7 @@ import org.quartz.JobExecutionException;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class ReminderJob extends JobWithDB {
 
 	@Override
diff --git a/src/main/java/org/olat/modules/video/manager/VideoTranscodingJob.java b/src/main/java/org/olat/modules/video/manager/VideoTranscodingJob.java
index c7ec4395c07..0e7e18b7c95 100644
--- a/src/main/java/org/olat/modules/video/manager/VideoTranscodingJob.java
+++ b/src/main/java/org/olat/modules/video/manager/VideoTranscodingJob.java
@@ -28,12 +28,14 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.logging.log4j.Logger;
 import org.hibernate.ObjectDeletedException;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.persistence.DBFactory;
 import org.olat.core.commons.services.image.Size;
 import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.core.commons.services.video.MovieService;
+import org.olat.core.logging.Tracing;
 import org.olat.core.util.StringHelper;
 import org.olat.core.util.vfs.LocalFileImpl;
 import org.olat.core.util.vfs.LocalFolderImpl;
@@ -54,7 +56,9 @@ import org.quartz.JobExecutionException;
  */
 @DisallowConcurrentExecution
 public class VideoTranscodingJob extends JobWithDB {
-	private ArrayList<String> resolutionsWithProfile = new ArrayList<>(Arrays.asList("1080", "720", "480"));
+	
+	private static final Logger log = Tracing.createLoggerFor(VideoTranscodingJob.class);
+	private final List<String> resolutionsWithProfile = new ArrayList<>(Arrays.asList("1080", "720", "480"));
 
 	@Override
 	public void executeWithDB(JobExecutionContext context) throws JobExecutionException {
diff --git a/src/main/java/org/olat/modules/vitero/manager/ViteroZombieSlayerJob.java b/src/main/java/org/olat/modules/vitero/manager/ViteroZombieSlayerJob.java
index 76da7125b6a..9445b0dc4b6 100644
--- a/src/main/java/org/olat/modules/vitero/manager/ViteroZombieSlayerJob.java
+++ b/src/main/java/org/olat/modules/vitero/manager/ViteroZombieSlayerJob.java
@@ -22,6 +22,7 @@ package org.olat.modules.vitero.manager;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.modules.vitero.ViteroModule;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 
 /**
@@ -36,6 +37,7 @@ import org.quartz.JobExecutionContext;
  *
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  */
+@DisallowConcurrentExecution
 public class ViteroZombieSlayerJob extends JobWithDB  {
 
 	@Override
diff --git a/src/main/java/org/olat/portfolio/manager/EPDeadlineJob.java b/src/main/java/org/olat/portfolio/manager/EPDeadlineJob.java
index a58c8c50394..e291e8fea2b 100644
--- a/src/main/java/org/olat/portfolio/manager/EPDeadlineJob.java
+++ b/src/main/java/org/olat/portfolio/manager/EPDeadlineJob.java
@@ -20,8 +20,11 @@
 
 package org.olat.portfolio.manager;
 
+import org.apache.logging.log4j.Logger;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.olat.core.logging.Tracing;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 
 /**
@@ -33,10 +36,12 @@ import org.quartz.JobExecutionContext;
  * Initial Date:  12 nov. 2010 <br>
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  */
+@DisallowConcurrentExecution
 public class EPDeadlineJob  extends JobWithDB {
-	/**
-	 * @see org.olat.core.commons.services.scheduler.JobWithDB#executeWithDB(org.quartz.JobExecutionContext)
-	 */
+	
+	private static final Logger log = Tracing.createLoggerFor(EPDeadlineJob.class);
+	
+	@Override
 	public void executeWithDB(JobExecutionContext context) {
 		try {
 			log.info("Starting checking deadline of maps job");
diff --git a/src/main/java/org/olat/portfolio/manager/InvitationCleanupJob.java b/src/main/java/org/olat/portfolio/manager/InvitationCleanupJob.java
index bbcc1f0242e..411483cafd5 100644
--- a/src/main/java/org/olat/portfolio/manager/InvitationCleanupJob.java
+++ b/src/main/java/org/olat/portfolio/manager/InvitationCleanupJob.java
@@ -19,8 +19,11 @@
  */
 package org.olat.portfolio.manager;
 
+import org.apache.logging.log4j.Logger;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.olat.core.logging.Tracing;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 
 /**
@@ -31,11 +34,12 @@ import org.quartz.JobExecutionContext;
  * Initial Date:  11 nov. 2010 <br>
  * @author srosse
  */
+@DisallowConcurrentExecution
 public class InvitationCleanupJob extends JobWithDB {
 
-	/**
-	 * @see org.olat.core.commons.services.scheduler.JobWithDB#executeWithDB(org.quartz.JobExecutionContext)
-	 */
+	private static final Logger log = Tracing.createLoggerFor(InvitationCleanupJob.class);
+
+	@Override
 	public void executeWithDB(JobExecutionContext context) {
 		try {
 			log.info("Starting invitation clean up job");
diff --git a/src/main/java/org/olat/registration/TemporaryKeysCleanUpJob.java b/src/main/java/org/olat/registration/TemporaryKeysCleanUpJob.java
index f0a3a667280..b6576e2b84d 100644
--- a/src/main/java/org/olat/registration/TemporaryKeysCleanUpJob.java
+++ b/src/main/java/org/olat/registration/TemporaryKeysCleanUpJob.java
@@ -21,6 +21,7 @@ package org.olat.registration;
 
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -30,6 +31,7 @@ import org.quartz.JobExecutionException;
  * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class TemporaryKeysCleanUpJob extends JobWithDB {
 
 	@Override
diff --git a/src/main/java/org/olat/repository/manager/AutomaticLifecycleJob.java b/src/main/java/org/olat/repository/manager/AutomaticLifecycleJob.java
index 53170ecf688..4105f112c40 100644
--- a/src/main/java/org/olat/repository/manager/AutomaticLifecycleJob.java
+++ b/src/main/java/org/olat/repository/manager/AutomaticLifecycleJob.java
@@ -23,6 +23,7 @@ import org.apache.logging.log4j.Logger;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.core.logging.Tracing;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -32,6 +33,7 @@ import org.quartz.JobExecutionException;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class AutomaticLifecycleJob extends JobWithDB {
 	
 	private static final Logger logger = Tracing.createLoggerFor(AutomaticLifecycleJob.class);
diff --git a/src/main/java/org/olat/resource/accesscontrol/manager/ReservationsJob.java b/src/main/java/org/olat/resource/accesscontrol/manager/ReservationsJob.java
index dbf3eb7aa84..48e71b1840e 100644
--- a/src/main/java/org/olat/resource/accesscontrol/manager/ReservationsJob.java
+++ b/src/main/java/org/olat/resource/accesscontrol/manager/ReservationsJob.java
@@ -22,6 +22,7 @@ package org.olat.resource.accesscontrol.manager;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.resource.accesscontrol.ACService;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -29,6 +30,7 @@ import org.quartz.JobExecutionException;
  * 
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  */
+@DisallowConcurrentExecution
 public class ReservationsJob extends JobWithDB {
 
 	@Override
diff --git a/src/main/java/org/olat/restapi/security/RestTokenJob.java b/src/main/java/org/olat/restapi/security/RestTokenJob.java
index a45196ff77e..6ffda66d6bf 100644
--- a/src/main/java/org/olat/restapi/security/RestTokenJob.java
+++ b/src/main/java/org/olat/restapi/security/RestTokenJob.java
@@ -19,9 +19,11 @@
  */
 package org.olat.restapi.security;
 
+import org.apache.logging.log4j.Logger;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.core.logging.Tracing;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 
 /**
@@ -32,11 +34,12 @@ import org.quartz.JobExecutionContext;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class RestTokenJob extends JobWithDB {
+
+	private static final Logger log = Tracing.createLoggerFor(RestTokenJob.class);
 	
-	/**
-	 * @see org.olat.core.commons.services.scheduler.JobWithDB#executeWithDB(org.quartz.JobExecutionContext)
-	 */
+	@Override
 	public void executeWithDB(JobExecutionContext context) {
 		try {
 			log.info("Starting checking deadline of maps job");
diff --git a/src/main/java/org/olat/restapi/system/ProcSamplerJob.java b/src/main/java/org/olat/restapi/system/ProcSamplerJob.java
index 5f90ccfefe6..efdf2f1481e 100644
--- a/src/main/java/org/olat/restapi/system/ProcSamplerJob.java
+++ b/src/main/java/org/olat/restapi/system/ProcSamplerJob.java
@@ -43,6 +43,7 @@ import org.olat.restapi.system.MonitoringService.Statistics;
 import org.olat.restapi.system.vo.SessionsVO;
 import org.olat.search.SearchServiceStatus;
 import org.olat.search.service.SearchServiceFactory;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.springframework.scheduling.quartz.QuartzJobBean;
 import org.w3c.dom.Document;
@@ -58,6 +59,7 @@ import net.fortuna.ical4j.util.TimeZones;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class ProcSamplerJob extends QuartzJobBean {
 
 	private static final Logger log = Tracing.createLoggerFor(ProcSamplerJob.class);
diff --git a/src/main/java/org/olat/restapi/system/SamplerJob.java b/src/main/java/org/olat/restapi/system/SamplerJob.java
index 7657ec18675..ddde6b56c26 100644
--- a/src/main/java/org/olat/restapi/system/SamplerJob.java
+++ b/src/main/java/org/olat/restapi/system/SamplerJob.java
@@ -19,6 +19,7 @@
  */
 package org.olat.restapi.system;
 
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.springframework.scheduling.quartz.QuartzJobBean;
 
@@ -33,6 +34,7 @@ import org.springframework.scheduling.quartz.QuartzJobBean;
  * Initial Date:  21 feb. 2011 <br>
  * @author srosse, stephane.rosse@frentix.com, www.frentix.com
  */
+@DisallowConcurrentExecution
 public class SamplerJob extends QuartzJobBean {
 
 	@Override
diff --git a/src/main/java/org/olat/search/service/indexer/SearchIndexingJob.java b/src/main/java/org/olat/search/service/indexer/SearchIndexingJob.java
index bb5f85ce15a..cef5f14cc49 100644
--- a/src/main/java/org/olat/search/service/indexer/SearchIndexingJob.java
+++ b/src/main/java/org/olat/search/service/indexer/SearchIndexingJob.java
@@ -24,10 +24,13 @@
 */
 package org.olat.search.service.indexer;
 
+import org.apache.logging.log4j.Logger;
 import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.olat.core.logging.Tracing;
 import org.olat.search.SearchService;
 import org.olat.search.service.SearchServiceFactory;
 import org.olat.search.service.SearchServiceImpl;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.InterruptableJob;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
@@ -41,12 +44,11 @@ import org.quartz.UnableToInterruptJobException;
  * Initial Date:  09.09.2008 <br>
  * @author Christian Guretzki
  */
+@DisallowConcurrentExecution
 public class SearchIndexingJob extends JobWithDB implements InterruptableJob {
 
-	/**
-	 * 
-	 * @see org.olat.core.commons.services.scheduler.JobWithDB#executeWithDB(org.quartz.JobExecutionContext)
-	 */
+	private static final Logger log = Tracing.createLoggerFor(SearchIndexingJob.class);
+
 	@Override
 	public void executeWithDB(JobExecutionContext arg0) throws JobExecutionException {
 		log.info("Search indexer started via cronjob.");
diff --git a/src/main/java/org/olat/user/manager/UserDataExportCleanJob.java b/src/main/java/org/olat/user/manager/UserDataExportCleanJob.java
index 135cffe774a..78c3624c894 100644
--- a/src/main/java/org/olat/user/manager/UserDataExportCleanJob.java
+++ b/src/main/java/org/olat/user/manager/UserDataExportCleanJob.java
@@ -24,6 +24,7 @@ import java.util.Calendar;
 import org.olat.core.CoreSpringFactory;
 import org.olat.core.commons.services.scheduler.JobWithDB;
 import org.olat.user.UserDataExportService;
+import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -33,6 +34,7 @@ import org.quartz.JobExecutionException;
  * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
  *
  */
+@DisallowConcurrentExecution
 public class UserDataExportCleanJob extends JobWithDB {
 
 	@Override
-- 
GitLab