diff --git a/src/main/java/org/olat/repository/_spring/repositoryContext.xml b/src/main/java/org/olat/repository/_spring/repositoryContext.xml index 7c9c4d276aa4b7c3a0c194e0a35e21d570114b29..7a20d1e7770b2d940b00697103670849290e17a1 100644 --- a/src/main/java/org/olat/repository/_spring/repositoryContext.xml +++ b/src/main/java/org/olat/repository/_spring/repositoryContext.xml @@ -1,14 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans-3.0.xsd - http://www.springframework.org/schema/context - http://www.springframework.org/schema/context/spring-context-3.0.xsd"> - -<context:property-placeholder location="classpath:serviceconfig/olat.properties, classpath:olat.local.properties" /> + http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="repositoryModule" class="org.olat.repository.RepositoryModule" depends-on="userModule"> @@ -32,7 +27,7 @@ </bean> <!-- BackgroundTaskQueueManager for increment launch-,download-counter and set LastUsage in background thread --> -<bean id="org.olat.core.commons.persistence.async.BackgroundTaskQueueManager" class="org.olat.repository.async.BackgroundTaskQueueManager"> +<bean id="org.olat.core.commons.persistence.async.BackgroundTaskQueueManager" class="org.olat.repository.async.BackgroundTaskQueueManager" destroy-method="destroy"> <!-- Number of retries when a task failed e.g. incrementLaunchCounter try 20 times to increment when a exception occurs --> <property name="maxRetry" value="20"/> </bean> diff --git a/src/main/java/org/olat/repository/async/BackgroundTaskQueueManager.java b/src/main/java/org/olat/repository/async/BackgroundTaskQueueManager.java index 3a86f13c617a0420cb7b86f0f49a0f607ee025cd..a50c83e9cd5ec80cd44ab3313ebe3de733c7b685 100644 --- a/src/main/java/org/olat/repository/async/BackgroundTaskQueueManager.java +++ b/src/main/java/org/olat/repository/async/BackgroundTaskQueueManager.java @@ -57,6 +57,18 @@ public class BackgroundTaskQueueManager extends BasicManager { taskExecutor.start(); } + /** + * [used by spring] + */ + public void destroy() { + taskExecutor.stopExecutor(); + addTask(new BackgroundTask() { + @Override + public void execute() { /* */ } + @Override + public void setMaxRetry(int maxRetry) { /* */ } + }); + } public Queue<BackgroundTask> getQueue() { return backgroundTaskQueue; diff --git a/src/main/java/org/olat/repository/async/TaskExecutorThread.java b/src/main/java/org/olat/repository/async/TaskExecutorThread.java index 3c00ae96b18de04e4c0c11f192edd703de298b1c..ac052645138d6d87f69ce8bc576d088f5d9248b9 100644 --- a/src/main/java/org/olat/repository/async/TaskExecutorThread.java +++ b/src/main/java/org/olat/repository/async/TaskExecutorThread.java @@ -38,16 +38,20 @@ import org.olat.core.logging.Tracing; */ public class TaskExecutorThread extends Thread { private static OLog log = Tracing.createLoggerFor(TaskExecutorThread.class); - Queue<BackgroundTask> taskQueue; + private Queue<BackgroundTask> taskQueue; + private volatile boolean running = true; public TaskExecutorThread(Queue<BackgroundTask> taskQueue) { super("TaskExecutorThread"); this.taskQueue = taskQueue; } + public void stopExecutor() { + running = false; + } + public void run() { log.info("TaskExecutorThread started"); - boolean running = true; while(running) { synchronized(taskQueue) { if (taskQueue.size() == 0) {