fixed bugs Scheduler Service
This commit is contained in:
parent
d14b5fc01f
commit
20f4b371d1
30 changed files with 332 additions and 190 deletions
|
@ -115,22 +115,15 @@ namespace WebsitePanel.EnterpriseServer
|
|||
var tasks = TaskController.GetProcessTasks(BackgroundTaskStatus.Starting);
|
||||
foreach (var task in tasks)
|
||||
{
|
||||
StartManualTask(task);
|
||||
new Thread(() => RunBackgroundTask(task)) {Priority = ThreadPriority.Highest}.Start();
|
||||
}
|
||||
tasks = TaskController.GetProcessTasks(BackgroundTaskStatus.Stopping);
|
||||
foreach (var task in tasks)
|
||||
{
|
||||
TaskManager.StopTask(task.TaskId);
|
||||
TaskManager.StopTask(task);
|
||||
}
|
||||
}
|
||||
private static void StartManualTask(BackgroundTask backgroundTask)
|
||||
{
|
||||
new Thread(() => RunBackgroundTask(backgroundTask)) { Priority = ThreadPriority.Highest }.Start();
|
||||
|
||||
backgroundTask.Status = BackgroundTaskStatus.Run;
|
||||
|
||||
TaskController.UpdateTask(backgroundTask);
|
||||
}
|
||||
|
||||
private static void RunBackgroundTask(BackgroundTask backgroundTask)
|
||||
{
|
||||
UserInfo user = PackageController.GetPackageOwner(backgroundTask.PackageId);
|
||||
|
@ -138,13 +131,18 @@ namespace WebsitePanel.EnterpriseServer
|
|||
SecurityContext.SetThreadPrincipal(user.UserId);
|
||||
|
||||
var schedule = SchedulerController.GetScheduleComplete(backgroundTask.ScheduleId);
|
||||
|
||||
TaskManager.StartTask(backgroundTask.Source, backgroundTask.TaskName, backgroundTask.ItemName, backgroundTask.ItemId, backgroundTask.ScheduleId, backgroundTask.PackageId, backgroundTask.MaximumExecutionTime, backgroundTask.Params);
|
||||
|
||||
backgroundTask.Guid = TaskManager.Guid;
|
||||
backgroundTask.Status = BackgroundTaskStatus.Run;
|
||||
|
||||
TaskController.UpdateTask(backgroundTask);
|
||||
|
||||
try
|
||||
{
|
||||
var objTask = (SchedulerTask)Activator.CreateInstance(Type.GetType(schedule.Task.TaskType));
|
||||
|
||||
objTask.DoWork();
|
||||
|
||||
Thread.Sleep(100000);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
|
@ -55,12 +55,6 @@ namespace WebsitePanel.EnterpriseServer
|
|||
DataProvider.GetScheduleTask(SecurityContext.User.UserId, taskId));
|
||||
}
|
||||
|
||||
public static List<ScheduleInfo> GetRunningSchedules()
|
||||
{
|
||||
return ObjectUtils.CreateListFromDataReader<ScheduleInfo>(
|
||||
DataProvider.GetRunningSchedules(SecurityContext.User.UserId));
|
||||
}
|
||||
|
||||
public static DataSet GetSchedules(int packageId)
|
||||
{
|
||||
DataSet ds = DataProvider.GetSchedules(SecurityContext.User.UserId, packageId);
|
||||
|
@ -170,6 +164,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
prm => new BackgroundTaskParameter(prm.ParameterId, prm.ParameterValue)).ToList();
|
||||
|
||||
var backgroundTask = new BackgroundTask(
|
||||
Guid.NewGuid(),
|
||||
schedule.ScheduleInfo.TaskId,
|
||||
SecurityContext.User.UserId,
|
||||
SecurityContext.User.IsPeer
|
||||
|
@ -197,22 +192,12 @@ namespace WebsitePanel.EnterpriseServer
|
|||
if (schedule == null)
|
||||
return 0;
|
||||
|
||||
var parameters = schedule.ScheduleInfo.Parameters.Select(
|
||||
prm => new BackgroundTaskParameter(prm.ParameterId, prm.ParameterValue)).ToList();
|
||||
|
||||
var backgroundTask = new BackgroundTask(
|
||||
schedule.ScheduleInfo.TaskId,
|
||||
SecurityContext.User.UserId,
|
||||
SecurityContext.User.IsPeer
|
||||
? SecurityContext.User.OwnerId
|
||||
: SecurityContext.User.UserId, "SCHEDULER", "STOP_SCHEDULE",
|
||||
schedule.ScheduleInfo.ScheduleName,
|
||||
schedule.ScheduleInfo.ScheduleId,
|
||||
schedule.ScheduleInfo.ScheduleId,
|
||||
schedule.ScheduleInfo.PackageId,
|
||||
schedule.ScheduleInfo.MaxExecutionTime, parameters) { Status = BackgroundTaskStatus.Stopping };
|
||||
|
||||
TaskController.AddTask(backgroundTask);
|
||||
foreach (BackgroundTask task in TaskController.GetScheduleTasks(scheduleId))
|
||||
{
|
||||
task.Status = BackgroundTaskStatus.Stopping;
|
||||
|
||||
TaskController.UpdateTask(task);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -338,7 +323,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
DataProvider.UpdateSchedule(SecurityContext.User.UserId,
|
||||
schedule.ScheduleId, schedule.TaskId, schedule.ScheduleName, schedule.ScheduleTypeId,
|
||||
schedule.Interval, schedule.FromTime, schedule.ToTime, schedule.StartTime,
|
||||
schedule.LastRun, schedule.LastFinish, schedule.NextRun, schedule.Enabled, schedule.PriorityId,
|
||||
schedule.LastRun, schedule.NextRun, schedule.Enabled, schedule.PriorityId,
|
||||
schedule.HistoriesNumber, schedule.MaxExecutionTime, schedule.WeekMonthDay, xmlParameters);
|
||||
|
||||
// re-schedule tasks
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue