// Processes new tasks func (m *etcdMinion) processTask(t *task.Task) error { var buf bytes.Buffer // Update state of task to indicate that we are now processing it t.State = task.TaskStateProcessing m.SaveTaskResult(t) cmd := exec.Command(t.Command, t.Args...) cmd.Stdout = &buf cmd.Stderr = &buf log.Printf("Processing task %s\n", t.TaskID) cmdError := cmd.Run() t.TimeProcessed = time.Now().Unix() t.Result = buf.String() if cmdError != nil { log.Printf("Failed to process task %s\n", t.TaskID) t.Error = cmdError.Error() t.State = task.TaskStateFailed } else { log.Printf("Finished processing task %s\n", t.TaskID) t.State = task.TaskStateSuccess } m.SaveTaskResult(t) return cmdError }