// clean up a task whose heartbeat has timed out func cleanUpTimedOutHeartbeat(task model.Task, project model.Project, host *host.Host) error { // mock up the failure details of the task detail := &apimodels.TaskEndDetail{ Description: model.AgentHeartbeat, TimedOut: true, } // try to reset the task if err := task.TryReset("", RunnerName, &project, detail); err != nil { return fmt.Errorf("error trying to reset task %v: %v", task.Id, err) } // clear out the host's running task if err := host.UpdateRunningTask(task.Id, "", time.Now()); err != nil { return fmt.Errorf("error clearing running task %v from host %v: %v", task.Id, host.Id, err) } // success return nil }