Search in sources :

Example 1 with TaskAwareRunnable

use of org.olat.core.commons.services.taskexecutor.TaskAwareRunnable in project OpenOLAT by OpenOLAT.

the class PersistentTaskRunnable method run.

@Override
public void run() {
    PersistentTask task = null;
    PersistentTaskDAO taskDao = CoreSpringFactory.getImpl(PersistentTaskDAO.class);
    try {
        task = taskDao.pickTaskForRun(taskKey);
        if (task != null) {
            Runnable runnable = taskDao.deserializeTask(task);
            if (runnable instanceof TaskAwareRunnable) {
                ((TaskAwareRunnable) runnable).setTask(task);
            }
            runnable.run();
            taskDao.taskDone(task);
        }
        DBFactory.getInstance().commitAndCloseSession();
    } catch (Throwable e) {
        DBFactory.getInstance().rollbackAndCloseSession();
        markAsFailed(task);
        log.error("Error while running task in a separate thread: " + (task == null ? "NULL" : task.getKey()), e);
    }
}
Also used : PersistentTaskDAO(org.olat.core.commons.services.taskexecutor.manager.PersistentTaskDAO) TaskAwareRunnable(org.olat.core.commons.services.taskexecutor.TaskAwareRunnable) TaskAwareRunnable(org.olat.core.commons.services.taskexecutor.TaskAwareRunnable)

Example 2 with TaskAwareRunnable

use of org.olat.core.commons.services.taskexecutor.TaskAwareRunnable in project openolat by klemens.

the class PersistentTaskRunnable method run.

@Override
public void run() {
    PersistentTask task = null;
    PersistentTaskDAO taskDao = CoreSpringFactory.getImpl(PersistentTaskDAO.class);
    try {
        task = taskDao.pickTaskForRun(taskKey);
        if (task != null) {
            Runnable runnable = taskDao.deserializeTask(task);
            if (runnable instanceof TaskAwareRunnable) {
                ((TaskAwareRunnable) runnable).setTask(task);
            }
            runnable.run();
            taskDao.taskDone(task);
        }
        DBFactory.getInstance().commitAndCloseSession();
    } catch (Throwable e) {
        DBFactory.getInstance().rollbackAndCloseSession();
        markAsFailed(task);
        log.error("Error while running task in a separate thread: " + (task == null ? "NULL" : task.getKey()), e);
    }
}
Also used : PersistentTaskDAO(org.olat.core.commons.services.taskexecutor.manager.PersistentTaskDAO) TaskAwareRunnable(org.olat.core.commons.services.taskexecutor.TaskAwareRunnable) TaskAwareRunnable(org.olat.core.commons.services.taskexecutor.TaskAwareRunnable)

Aggregations

TaskAwareRunnable (org.olat.core.commons.services.taskexecutor.TaskAwareRunnable)2 PersistentTaskDAO (org.olat.core.commons.services.taskexecutor.manager.PersistentTaskDAO)2