Changeset 6743 for branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.3/Manager/EventManager.cs
- Timestamp:
- 09/12/11 18:04:25 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.3/Manager/EventManager.cs
r6721 r6743 29 29 namespace HeuristicLab.Services.Hive { 30 30 /// <summary> 31 /// This class offers methods for cleaning up offline slaves and jobs31 /// This class offers methods for cleaning up offline slaves and task 32 32 /// </summary> 33 33 public class EventManager : IEventManager { … … 45 45 log.Log("EventManager.Cleanup()"); 46 46 SetTimeoutSlavesOffline(); 47 SetTimeout JobsWaiting();48 FinishParent Jobs();47 SetTimeoutTasksWaiting(); 48 FinishParentTasks(); 49 49 UpdateStatistics(); 50 50 } … … 72 72 73 73 /// <summary> 74 /// Searches for slaves which are timed out, puts them and their jobsoffline74 /// Searches for slaves which are timed out, puts them and their task offline 75 75 /// </summary> 76 76 private void SetTimeoutSlavesOffline() { … … 79 79 if (!slave.LastHeartbeat.HasValue || (DateTime.Now - slave.LastHeartbeat.Value) > HeuristicLab.Services.Hive.Properties.Settings.Default.SlaveHeartbeatTimeout) { 80 80 slave.SlaveState = DT.SlaveState.Offline; 81 Set JobsWaiting(slave.Id);81 SetTasksWaiting(slave.Id); 82 82 dao.UpdateSlave(slave); 83 83 } … … 86 86 87 87 /// <summary> 88 /// Looks for parent jobs which have FinishWhenChildJobsFinished and set their state to finished88 /// Looks for parent tasks which have FinishWhenChildJobsFinished and set their state to finished 89 89 /// </summary> 90 private void FinishParent Jobs() {91 var parent JobsToFinish = dao.GetParentJobs(dao.GetResources(x => true).Select(x => x.Id), 0, true);92 foreach (var job in parentJobsToFinish) {93 dao.Update JobState(job.Id, TaskState.Finished, null, null, string.Empty);90 private void FinishParentTasks() { 91 var parentTasksToFinish = dao.GetParentTasks(dao.GetResources(x => true).Select(x => x.Id), 0, true); 92 foreach (var task in parentTasksToFinish) { 93 dao.UpdateTaskState(task.Id, TaskState.Finished, null, null, string.Empty); 94 94 } 95 95 } 96 96 97 private void Set JobsWaiting(Guid slaveId) {98 var jobs = dao.GetJobs(x => x.State == TaskState.Calculating).Where(x => x.StateLog.Last().SlaveId == slaveId);99 foreach (var j in jobs) {100 DT.Task job = dao.UpdateJobState(j.Id, TaskState.Waiting, slaveId, null, "Slave timed out.");101 job.Command = null;102 dao.Update Job(job);97 private void SetTasksWaiting(Guid slaveId) { 98 var tasks = dao.GetTasks(x => x.State == TaskState.Calculating).Where(x => x.StateLog.Last().SlaveId == slaveId); 99 foreach (var j in tasks) { 100 DT.Task task = dao.UpdateTaskState(j.Id, TaskState.Waiting, slaveId, null, "Slave timed out."); 101 task.Command = null; 102 dao.UpdateTask(task); 103 103 } 104 104 } 105 105 106 106 /// <summary> 107 /// Looks for jobswhich have not sent heartbeats for some time and reschedules them for calculation107 /// Looks for task which have not sent heartbeats for some time and reschedules them for calculation 108 108 /// </summary> 109 private void SetTimeout JobsWaiting() {110 var jobs = dao.GetJobs(x => (x.State == TaskState.Calculating && (DateTime.Now - x.LastHeartbeat) > HeuristicLab.Services.Hive.Properties.Settings.Default.CalculatingJobHeartbeatTimeout)109 private void SetTimeoutTasksWaiting() { 110 var tasks = dao.GetTasks(x => (x.State == TaskState.Calculating && (DateTime.Now - x.LastHeartbeat) > HeuristicLab.Services.Hive.Properties.Settings.Default.CalculatingJobHeartbeatTimeout) 111 111 || (x.State == TaskState.Transferring && (DateTime.Now - x.LastHeartbeat) > HeuristicLab.Services.Hive.Properties.Settings.Default.TransferringJobHeartbeatTimeout)); 112 foreach (var j in jobs) {113 DT.Task job = dao.UpdateJobState(j.Id, TaskState.Waiting, null, null, "Slave timed out.");114 job.Command = null;115 dao.Update Job(job);112 foreach (var j in tasks) { 113 DT.Task task = dao.UpdateTaskState(j.Id, TaskState.Waiting, null, null, "Slave timed out."); 114 task.Command = null; 115 dao.UpdateTask(task); 116 116 } 117 117 }
Note: See TracChangeset
for help on using the changeset viewer.