Fixes Schedulers bugs

This commit is contained in:
vfedosevich 2013-05-29 15:52:13 +03:00
parent e8ed10a67b
commit c8a8be8894
7 changed files with 65 additions and 43 deletions

View file

@ -110,7 +110,7 @@ namespace WebsitePanel.EnterpriseServer
{
var taskThread = new Thread(() => RunBackgroundTask(task)) { Priority = ThreadPriority.Highest };
taskThread.Start();
TaskManager.AddTaskThread(task, taskThread);
TaskManager.AddTaskThread(task.Id, taskThread);
}
}
@ -132,6 +132,7 @@ namespace WebsitePanel.EnterpriseServer
var objTask = (SchedulerTask)Activator.CreateInstance(Type.GetType(schedule.Task.TaskType));
objTask.DoWork();
// Thread.Sleep(40000);
}
catch (Exception ex)
{

View file

@ -160,24 +160,39 @@ namespace WebsitePanel.EnterpriseServer
if (schedule == null)
return 0;
if (TaskController.GetScheduleTasks(scheduleId).Any(x => x.Status == BackgroundTaskStatus.Run
|| x.Status == BackgroundTaskStatus.Starting))
return 0;
var parameters = schedule.ScheduleInfo.Parameters.Select(
prm => new BackgroundTaskParameter(prm.ParameterId, prm.ParameterValue)).ToList();
var packageInfo = PackageController.GetPackage(schedule.ScheduleInfo.PackageId);
var backgroundTask = new BackgroundTask(
Guid.NewGuid(),
Guid.NewGuid().ToString("N"),
SecurityContext.User.UserId,
SecurityContext.User.IsPeer
? SecurityContext.User.OwnerId
: SecurityContext.User.UserId, "SCHEDULER", "RUN_SCHEDULE",
: packageInfo.UserId, "SCHEDULER", "RUN_SCHEDULE",
schedule.ScheduleInfo.ScheduleName,
schedule.ScheduleInfo.ScheduleId,
schedule.ScheduleInfo.ScheduleId,
schedule.ScheduleInfo.PackageId,
schedule.ScheduleInfo.MaxExecutionTime, parameters) { Status = BackgroundTaskStatus.Starting };
TaskController.AddTask(backgroundTask);
// update next run (if required)
CalculateNextStartTime(schedule.ScheduleInfo);
// disable run once task
if (schedule.ScheduleInfo.ScheduleType == ScheduleType.OneTime)
schedule.ScheduleInfo.Enabled = false;
schedule.ScheduleInfo.LastRun = DateTime.Now;
UpdateSchedule(schedule.ScheduleInfo);
return 0;
}

View file

@ -109,6 +109,7 @@ namespace WebsitePanel.EnterpriseServer
else
throw new Exception(String.Format("Could not create scheduled task of '{0}' type",
task.TaskType));
// Thread.Sleep(40000);
}
catch (Exception ex)
{