- Timestamp:
- 03/22/11 11:36:53 (13 years ago)
- Location:
- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/HeartbeatManager.cs
r5779 r5786 52 52 53 53 private void AssignJob(Slave slave, Job job) { 54 dao.UpdateJobState(job.Id, JobState.Transferring, slave.Id, null, null);54 job = dao.UpdateJobState(job.Id, JobState.Transferring, slave.Id, null, null); 55 55 dao.UpdateSlave(slave); 56 57 // from now on the job has some time to send the next heartbeat (ApplicationConstants.TransferringJobHeartbeatTimeout) 58 job.LastHeartbeat = DateTime.Now; 59 dao.UpdateJob(job); 56 60 } 57 61 -
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive/3.4/LifecycleManager.cs
r5779 r5786 25 25 log.Log("LifecycleManager.Cleanup()"); 26 26 SetTimeoutSlavesOffline(); 27 FinishParentJobs(); 27 SetTimeoutJobsWaiting(); 28 FinishParentJobs(); 28 29 } 29 30 … … 34 35 var slaves = dao.GetSlaves(x => x.SlaveState != SlaveState.Offline); 35 36 foreach (Slave slave in slaves) { 36 if (!slave.LastHeartbeat.HasValue || (DateTime.Now - slave.LastHeartbeat.Value) .TotalSeconds > ApplicationConstants.HeartbeatTimeout) {37 if (!slave.LastHeartbeat.HasValue || (DateTime.Now - slave.LastHeartbeat.Value) > ApplicationConstants.SlaveHeartbeatTimeout) { 37 38 slave.SlaveState = SlaveState.Offline; 38 39 SetJobsWaiting(slave.Id); … … 55 56 var jobs = dao.GetJobs(x => x.State == JobState.Calculating).Where(x => x.StateLog.Last().SlaveId == slaveId); 56 57 foreach (var j in jobs) { 57 Job job = dao.UpdateJobState(j.Id, JobState.Waiting, slaveId, null, "Slave timed out ");58 Job job = dao.UpdateJobState(j.Id, JobState.Waiting, slaveId, null, "Slave timed out."); 58 59 job.Command = null; 59 60 dao.UpdateJob(job); … … 61 62 } 62 63 64 /// <summary> 65 /// Looks for jobs which have not sent heartbeats for some time and reschedules them for calculation 66 /// </summary> 67 private void SetTimeoutJobsWaiting() { 68 var jobs = dao.GetJobs(x => (x.State == JobState.Calculating && (DateTime.Now - x.LastHeartbeat) > ApplicationConstants.CalculatingJobHeartbeatTimeout) 69 || (x.State == JobState.Transferring && (DateTime.Now - x.LastHeartbeat) > ApplicationConstants.TransferringJobHeartbeatTimeout)); 70 foreach (var j in jobs) { 71 Job job = dao.UpdateJobState(j.Id, JobState.Waiting, null, null, "Slave timed out."); 72 job.Command = null; 73 dao.UpdateJob(job); 74 } 75 } 63 76 } 64 77 }
Note: See TracChangeset
for help on using the changeset viewer.