func maintainPresence(bbs Bbs.ExecutorBBS, ready chan<- bool) error { p, statusChannel, err := bbs.MaintainExecutorPresence(*heartbeatInterval, *executorID) if err != nil { ready <- false return err } tasks.Add(1) go func() { for { select { case locked, ok := <-statusChannel: if locked && ready != nil { ready <- true ready = nil } if !locked && ok { tasks.Done() logger.Fatal("maintain.presence.fatal", err) } if !ok { tasks.Done() return } case <-stop: p.Remove() tasks.Done() } } }() return nil }