func (riakNode *RiakNode) runLoop(child *metamgr.ZkNode) { runStatus := &mesos.TaskStatus{ TaskId: riakNode.taskInfo.GetTaskId(), State: mesos.TaskState_TASK_RUNNING.Enum(), } _, err := riakNode.executor.Driver.SendStatusUpdate(runStatus) if err != nil { log.Panic("Got error", err) } waitChan := riakNode.pm.Listen() select { case <-waitChan: { log.Info("Riak Died, failing") // Just in case, cleanup // This means the node died :( runStatus = &mesos.TaskStatus{ TaskId: riakNode.taskInfo.GetTaskId(), State: mesos.TaskState_TASK_FAILED.Enum(), } _, err = riakNode.executor.Driver.SendStatusUpdate(runStatus) if err != nil { log.Panic("Got error", err) } } case <-riakNode.finishChan: { log.Info("Finish channel says to shut down Riak") riakNode.pm.TearDown() runStatus = &mesos.TaskStatus{ TaskId: riakNode.taskInfo.GetTaskId(), State: mesos.TaskState_TASK_FINISHED.Enum(), } _, err = riakNode.executor.Driver.SendStatusUpdate(runStatus) if err != nil { log.Panic("Got error", err) } } } child.Delete() time.Sleep(15 * time.Second) log.Info("Shutting down") riakNode.executor.Driver.Stop() }
func (riakNode *RiakNode) runLoop(child *metamgr.ZkNode) { var runStatus *mesos.TaskStatus var err error // runStatus := &mesos.TaskStatus{ // TaskId: riakNode.taskInfo.GetTaskId(), // State: mesos.TaskState_TASK_RUNNING.Enum(), // } // _, err := riakNode.executor.Driver.SendStatusUpdate(runStatus) // if err != nil { // log.Panic("Got error", err) // } waitChan := riakNode.pm.Listen() select { case <-waitChan: { log.Infof("Riak Died, finishing with status: %+v", riakNode.killStatus) _, err = riakNode.executor.Driver.SendStatusUpdate(riakNode.killStatus) if err != nil { log.Panic("Got error", err) } } case <-riakNode.finishChan: { log.Info("Finish channel says to shut down Riak") riakNode.pm.TearDown() runStatus = &mesos.TaskStatus{ TaskId: riakNode.taskInfo.GetTaskId(), State: mesos.TaskState_TASK_FINISHED.Enum(), } riakNode.killStatus = runStatus _, err = riakNode.executor.Driver.SendStatusUpdate(riakNode.killStatus) if err != nil { log.Panic("Got error", err) } } } child.Delete() time.Sleep(15 * time.Second) log.Info("Shutting down") riakNode.executor.Driver.Stop() }