Fixes Schedulers bugs
This commit is contained in:
parent
e8ed10a67b
commit
c8a8be8894
7 changed files with 65 additions and 43 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue