diff --git a/src/main/java/org/olat/core/commons/services/taskexecutor/_spring/taskExecutorCorecontext.xml b/src/main/java/org/olat/core/commons/services/taskexecutor/_spring/taskExecutorCorecontext.xml index 41bb7c78a64696b7a1e4026c501c5376b173a683..f9150b090e074dc7c11618cfc386c81c67f99249 100644 --- a/src/main/java/org/olat/core/commons/services/taskexecutor/_spring/taskExecutorCorecontext.xml +++ b/src/main/java/org/olat/core/commons/services/taskexecutor/_spring/taskExecutorCorecontext.xml @@ -5,7 +5,7 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> - <bean id="taskExecutorManager" class="org.olat.core.commons.services.taskexecutor.manager.TaskExecutorManagerImpl"> + <bean id="taskExecutorManager" class="org.olat.core.commons.services.taskexecutor.manager.TaskExecutorManagerImpl" destroy-method="shutdown"> <constructor-arg index="0" ref="mpTaskExecutorService" /> <constructor-arg index="1" ref="sequentialTaskExecutorService" /> <constructor-arg index="2" ref="lowPriorityTaskSpringExecutorService" /> diff --git a/src/main/java/org/olat/core/commons/services/taskexecutor/manager/TaskExecutorManagerImpl.java b/src/main/java/org/olat/core/commons/services/taskexecutor/manager/TaskExecutorManagerImpl.java index 03b4c3221b25b850a57d9d00f4a5485abdf66ab4..14213bc6b463a5e390598561a64b8f6f68443ab2 100644 --- a/src/main/java/org/olat/core/commons/services/taskexecutor/manager/TaskExecutorManagerImpl.java +++ b/src/main/java/org/olat/core/commons/services/taskexecutor/manager/TaskExecutorManagerImpl.java @@ -112,8 +112,9 @@ public class TaskExecutorManagerImpl implements TaskExecutorManager { } public void shutdown() { - taskExecutor.shutdown(); - sequentialTaskExecutor.shutdown(); + taskExecutor.shutdownNow(); + sequentialTaskExecutor.shutdownNow(); + lowPriorityTaskExecutor.shutdownNow(); } @Override diff --git a/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml b/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml index b864cac3ad13e1dcce943712d9a7bfa6a3c6c666..8d6f85d75699e48b75e857b5021dcf97c5dafef6 100644 --- a/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml +++ b/src/main/java/org/olat/core/util/mail/_spring/mailContext.xml @@ -13,11 +13,12 @@ <property name="className" value="org.olat.core.util.mail.ui.SendDocumentsByEMailController"/> </bean> - <bean id="mailAsyncExecutorService" class="org.springframework.core.task.support.ExecutorServiceAdapter"> + <bean id="mailAsyncExecutorService" class="org.springframework.core.task.support.ExecutorServiceAdapter"> <constructor-arg index="0" ref="mailAsyncExecutor" /> </bean> <bean id="mailAsyncExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> + <property name="waitForTasksToCompleteOnShutdown" value="true" /> <property name="corePoolSize" value="1" /> <property name="maxPoolSize" value="1" /> <property name="queueCapacity" value="2000" /> diff --git a/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamServiceImpl.java b/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamServiceImpl.java index 19bc4eaf66cff84dec993aba247130341cb1eae5..482eaf2cf22bc204aa4c3dc6e8a390cde77904f3 100644 --- a/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamServiceImpl.java +++ b/src/main/java/org/olat/course/nodes/livestream/manager/LiveStreamServiceImpl.java @@ -51,6 +51,7 @@ import org.olat.course.nodes.livestream.LiveStreamService; import org.olat.course.nodes.livestream.model.LiveStreamEventImpl; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryRef; +import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.concurrent.CustomizableThreadFactory; import org.springframework.stereotype.Service; @@ -62,7 +63,7 @@ import org.springframework.stereotype.Service; * */ @Service -public class LiveStreamServiceImpl implements LiveStreamService { +public class LiveStreamServiceImpl implements LiveStreamService, DisposableBean { private static final Logger log = Tracing.createLoggerFor(LiveStreamServiceImpl.class); @@ -84,6 +85,13 @@ public class LiveStreamServiceImpl implements LiveStreamService { return scheduler; } + @Override + public void destroy() throws Exception { + if(scheduler != null) { + scheduler.shutdownNow(); + } + } + @Override public List<? extends LiveStreamEvent> getRunningEvents(CourseCalendars calendars, int bufferBeforeMin, int bufferAfterMin) {